summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhirono@chromium.org <hirono@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-28 03:17:46 +0000
committerhirono@chromium.org <hirono@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-28 03:17:46 +0000
commit07c770d1a21bce5af5eb0d79d6c02337ddedfe10 (patch)
tree41d6ddbfe3408119e6443932b8e9b90677c06862
parentbed406a8d06a91bcc19924ba5b091f22175f098b (diff)
downloadchromium_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
-rw-r--r--ui/file_manager/file_manager/foreground/js/metadata/metadata_cache.js6
-rw-r--r--ui/file_manager/gallery/js/image_editor/image_encoder.js6
-rw-r--r--ui/file_manager/gallery/js/mosaic_mode.js6
-rw-r--r--ui/file_manager/gallery/js/slide_mode.js9
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