Chromium Code Reviews| Index: ui/file_manager/gallery/js/gallery_item.js |
| diff --git a/ui/file_manager/gallery/js/gallery_item.js b/ui/file_manager/gallery/js/gallery_item.js |
| index 6d87f3ea692973a0fe5d86e704513e2a04707b0c..00ea10639d05d8cec3c05dced7e29e1ff8e89ee7 100644 |
| --- a/ui/file_manager/gallery/js/gallery_item.js |
| +++ b/ui/file_manager/gallery/js/gallery_item.js |
| @@ -8,6 +8,7 @@ |
| * @param {!FileEntry} entry Image entry. |
| * @param {!EntryLocation} locationInfo Entry location information. |
| * @param {!Object} metadata Metadata for the entry. |
| + * @param {!MetadataItem} metadataItem |
| * @param {!MetadataCache} metadataCache Metadata cache instance. |
| * @param {!MetadataModel} metadataModel File system metadata. |
| * @param {boolean} original Whether the entry is original or edited. |
| @@ -15,8 +16,8 @@ |
| * @struct |
| */ |
| Gallery.Item = function( |
| - entry, locationInfo, metadata, metadataCache, metadataModel, |
| - original) { |
| + entry, locationInfo, metadata, metadataItem, metadataCache, |
| + metadataModel, original) { |
| /** |
| * @type {!FileEntry} |
| * @private |
| @@ -36,6 +37,11 @@ Gallery.Item = function( |
| this.metadata_ = Object.preventExtensions(metadata); |
| /** |
| + * @type {!MetadataItem} |
| + */ |
| + this.metadataItem_ = metadataItem; |
| + |
| + /** |
| * @type {!MetadataCache} |
| * @private |
| * @const |
| @@ -100,24 +106,10 @@ Gallery.Item.prototype.getLocationInfo = function() { |
| Gallery.Item.prototype.getMetadata = function() { return this.metadata_; }; |
| /** |
| - * Obtains the latest media metadata. |
| - * |
| - * This is a heavy operation since it forces to load the image data to obtain |
| - * the metadata. |
| - * @return {!Promise} Promise to be fulfilled with fetched metadata. |
| + * @return {!MetadataItem} Metadata. |
| */ |
| -Gallery.Item.prototype.getFetchedMedia = function() { |
| - return new Promise(function(fulfill, reject) { |
| - this.metadataCache_.getLatest( |
| - [this.entry_], |
| - 'fetchedMedia', |
| - function(metadata) { |
| - if (metadata[0]) |
| - fulfill(metadata[0]); |
| - else |
| - reject('Failed to load metadata.'); |
| - }); |
| - }.bind(this)); |
| +Gallery.Item.prototype.getMetadataItem = function() { |
| + return this.metadataItem_; |
| }; |
| /** |
| @@ -236,10 +228,10 @@ Gallery.Item.prototype.createCopyName_ = function(dirEntry, callback) { |
| * directory is read only. |
| * @param {boolean} overwrite Whether to overwrite the image to the item or not. |
| * @param {!HTMLCanvasElement} canvas Source canvas. |
| - * @param {function(boolean)=} opt_callback Callback accepting true for success. |
| + * @param {function(boolean)} callback Callback accepting true for success. |
| */ |
| Gallery.Item.prototype.saveToFile = function( |
| - volumeManager, fallbackDir, overwrite, canvas, opt_callback) { |
| + volumeManager, fallbackDir, overwrite, canvas, callback) { |
| ImageUtil.metrics.startInterval(ImageUtil.getMetricName('SaveTime')); |
| var name = this.getFileName(); |
| @@ -258,27 +250,38 @@ Gallery.Item.prototype.saveToFile = function( |
| // Updates the metadata. |
| this.metadataCache_.clear([this.entry_], '*'); |
| - this.metadataCache_.getLatest( |
| - [this.entry_], |
| - Gallery.METADATA_TYPE, |
| - function(metadataList) { |
| - if (metadataList.length === 1) { |
| - this.metadata_ = metadataList[0]; |
| - if (opt_callback) |
| - opt_callback(true); |
| - } else { |
| - if (opt_callback) |
| - opt_callback(false); |
| - } |
| - }.bind(this)); |
| + var oldMetadataPromise = new Promise(function(fulfill, reject) { |
| + this.metadataCache_.getLatest( |
| + [this.entry_], |
| + Gallery.METADATA_TYPE, |
| + function(metadataList) { |
| + if (metadataList.length === 1) { |
| + this.metadata_ = metadataList[0]; |
| + fulfill(); |
| + } else { |
| + reject(); |
| + } |
| + }.bind(this)); |
| + }.bind(this)); |
| this.metadataModel_.notifyEntriesChanged([this.entry_]); |
| + var newMetadataPromise = this.metadataModel_.get( |
| + [entry], Gallery.PREFETCH_PROPERTY_NAMES).then( |
| + function(metadataItems) { |
| + console.log(metadataItems); |
|
yawano
2015/03/04 05:20:45
Is this console output intentionally included in t
hirono
2015/03/04 05:32:45
Done.
|
| + this.metadataItem = metadataItems[0]; |
|
yawano
2015/03/04 05:20:45
this.metadataItem_?
hirono
2015/03/04 05:32:45
Done.
|
| + }.bind(this)); |
| + if (callback) { |
| + Promise.all([oldMetadataPromise, newMetadataPromise]).then( |
| + callback.bind(null, true), |
| + callback.bind(null, false)); |
| + } |
| }.bind(this); |
| var onError = function(error) { |
| console.error('Error saving from gallery', name, error); |
| ImageUtil.metrics.recordEnum(ImageUtil.getMetricName('SaveResult'), 0, 2); |
| - if (opt_callback) |
| - opt_callback(false); |
| + if (callback) |
| + callback(false); |
| }; |
| var doSave = function(newFile, fileEntry) { |