diff options
author | hirono@chromium.org <hirono@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-28 03:17:46 +0000 |
---|---|---|
committer | hirono@chromium.org <hirono@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-28 03:17:46 +0000 |
commit | 07c770d1a21bce5af5eb0d79d6c02337ddedfe10 (patch) | |
tree | 41d6ddbfe3408119e6443932b8e9b90677c06862 | |
parent | bed406a8d06a91bcc19924ba5b091f22175f098b (diff) | |
download | chromium_src-07c770d1a21bce5af5eb0d79d6c02337ddedfe10.zip chromium_src-07c770d1a21bce5af5eb0d79d6c02337ddedfe10.tar.gz chromium_src-07c770d1a21bce5af5eb0d79d6c02337ddedfe10.tar.bz2 |
Gallery.app: Fix image rotation in the image editor.
There patch fixes the following two bugs.
1. The main cause: we assign null to metadata if we failed to fetch the data.
But old code check the existance of data by using the 'in' operator and null
value passes the check unexpectedlly.
2. Specifying OVER_FILL instead of FILL for an image in a tile of the mosaic
view in case that the thumbnail image is samller than the tile.
BUG=375676
TEST=manually
Review URL: https://codereview.chromium.org/297323003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@273139 0039d316-1c4b-4281-b951-d872f2087c98
4 files changed, 16 insertions, 11 deletions
diff --git a/ui/file_manager/file_manager/foreground/js/metadata/metadata_cache.js b/ui/file_manager/file_manager/foreground/js/metadata/metadata_cache.js index 33082e8..119f864 100644 --- a/ui/file_manager/file_manager/foreground/js/metadata/metadata_cache.js +++ b/ui/file_manager/file_manager/foreground/js/metadata/metadata_cache.js @@ -1000,14 +1000,14 @@ ContentProvider.ConvertContentMetadata = function(metadata, opt_result) { for (var key in metadata) { if (metadata.hasOwnProperty(key)) { - if (!('media' in result)) result.media = {}; + if (!result.media) + result.media = {}; result.media[key] = metadata[key]; } } - if ('media' in result) { + if (result.media) result.fetchedMedia = result.media; - } return result; }; diff --git a/ui/file_manager/gallery/js/image_editor/image_encoder.js b/ui/file_manager/gallery/js/image_editor/image_encoder.js index fb8442c..f1817b9 100644 --- a/ui/file_manager/gallery/js/image_editor/image_encoder.js +++ b/ui/file_manager/gallery/js/image_editor/image_encoder.js @@ -32,7 +32,8 @@ ImageEncoder.registerMetadataEncoder = function(constructor, mimeType) { * @return {ImageEncoder.MetadataEncoder} Created metadata encoder. */ ImageEncoder.createMetadataEncoder = function(metadata) { - var constructor = ImageEncoder.metadataEncoders[metadata.mimeType] || + var constructor = + (metadata && ImageEncoder.metadataEncoders[metadata.mimeType]) || ImageEncoder.MetadataEncoder; return new constructor(metadata); }; @@ -208,6 +209,7 @@ ImageEncoder.MetadataEncoder.prototype.setThumbnailData = function(canvas, quality) { this.metadata_.thumbnailURL = canvas.toDataURL(this.metadata_.mimeType, quality); + delete this.metadata_.thumbnailTransform; }; /** @@ -216,7 +218,7 @@ ImageEncoder.MetadataEncoder.prototype.setThumbnailData = * @return {Object} An object with from and to properties. */ ImageEncoder.MetadataEncoder.prototype. - findInsertionRange = function(encodedImage) { return {from: 0, to: 0} }; + findInsertionRange = function(encodedImage) { return {from: 0, to: 0}; }; /** * Return serialized metadata ready to write to an image file. diff --git a/ui/file_manager/gallery/js/mosaic_mode.js b/ui/file_manager/gallery/js/mosaic_mode.js index 6c8dfe9..f27803b 100644 --- a/ui/file_manager/gallery/js/mosaic_mode.js +++ b/ui/file_manager/gallery/js/mosaic_mode.js @@ -1707,7 +1707,7 @@ Mosaic.Tile.SMALL_IMAGE_SIZE = 160; /** * @return {Gallery.Item} The Gallery item. */ -Mosaic.Tile.prototype.getItem = function() { return this.item_ }; +Mosaic.Tile.prototype.getItem = function() { return this.item_; }; /** * @return {number} Maximum content height that this tile can have. @@ -1719,7 +1719,7 @@ Mosaic.Tile.prototype.getMaxContentHeight = function() { /** * @return {number} The aspect ratio of the tile image. */ -Mosaic.Tile.prototype.getAspectRatio = function() { return this.aspectRatio_ }; +Mosaic.Tile.prototype.getAspectRatio = function() { return this.aspectRatio_; }; /** * @return {boolean} True if the tile is initialized. @@ -1982,7 +1982,7 @@ Mosaic.Tile.prototype.layout = function(left, top, width, height) { if (this.imageLoaded_) { this.thumbnailLoader_.attachImage(this.wrapper_, - ThumbnailLoader.FillMode.FILL); + ThumbnailLoader.FillMode.OVER_FILL); } }; diff --git a/ui/file_manager/gallery/js/slide_mode.js b/ui/file_manager/gallery/js/slide_mode.js index e7df508..af9cb5a 100644 --- a/ui/file_manager/gallery/js/slide_mode.js +++ b/ui/file_manager/gallery/js/slide_mode.js @@ -938,9 +938,12 @@ SlideMode.prototype.saveCurrentImage_ = function(callback) { this.showSpinner_(true); var metadataEncoder = ImageEncoder.encodeMetadata( this.selectedImageMetadata_.media, canvas, 1 /* quality */); - - this.selectedImageMetadata_ = ContentProvider.ConvertContentMetadata( + var selectedImageMetadata = ContentProvider.ConvertContentMetadata( metadataEncoder.getMetadata(), this.selectedImageMetadata_); + this.selectedImageMetadata_ = selectedImageMetadata; + this.metadataCache_.set(oldEntry, + Gallery.METADATA_TYPE, + selectedImageMetadata); item.saveToFile( this.context_.saveDirEntry, @@ -956,7 +959,7 @@ SlideMode.prototype.saveCurrentImage_ = function(callback) { var event = new Event('content'); event.item = item; event.oldEntry = oldEntry; - event.metadata = this.selectedImageMetadata_; + event.metadata = selectedImageMetadata; this.dataModel_.dispatchEvent(event); // Allow changing the 'Overwrite original' setting only if the user |