| 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 cda1f80dee9a73c887fa02946f864833390352b1..54c6ef1515e5b87b4a7ed340f5f84076dc17c1c4 100644
|
| --- a/ui/file_manager/gallery/js/gallery_item.js
|
| +++ b/ui/file_manager/gallery/js/gallery_item.js
|
| @@ -7,53 +7,33 @@
|
| *
|
| * @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 {!ThumbnailMetadataItem} thumbnailMetadataItem
|
| * @param {boolean} original Whether the entry is original or edited.
|
| * @constructor
|
| * @struct
|
| */
|
| Gallery.Item = function(
|
| - entry, locationInfo, metadata, metadataItem, metadataCache,
|
| - metadataModel, original) {
|
| + entry, locationInfo, metadataItem, thumbnailMetadataItem, original) {
|
| /**
|
| - * @type {!FileEntry}
|
| - * @private
|
| + * @private {!FileEntry}
|
| */
|
| this.entry_ = entry;
|
|
|
| /**
|
| - * @type {!EntryLocation}
|
| - * @private
|
| + * @private {!EntryLocation}
|
| */
|
| this.locationInfo_ = locationInfo;
|
|
|
| /**
|
| - * @type {!Object}
|
| - * @private
|
| - */
|
| - this.metadata_ = Object.preventExtensions(metadata);
|
| -
|
| - /**
|
| - * @type {!MetadataItem}
|
| + * @private {!MetadataItem}
|
| */
|
| this.metadataItem_ = metadataItem;
|
|
|
| /**
|
| - * @type {!MetadataCache}
|
| - * @private
|
| - * @const
|
| - */
|
| - this.metadataCache_ = metadataCache;
|
| -
|
| - /**
|
| - * @type {!MetadataModel}
|
| - * @private
|
| - * @const
|
| + * @private {!ThumbnailMetadataItem}
|
| */
|
| - this.metadataModel_ = metadataModel;
|
| + this.thumbnailMetadataItem_ = metadataItem;
|
|
|
| // TODO(yawano): Change this.contentImage and this.screenImage to private
|
| // fields and provide utility methods for them (e.g. revokeFullImageCache).
|
| @@ -101,9 +81,11 @@ Gallery.Item.prototype.getLocationInfo = function() {
|
| };
|
|
|
| /**
|
| - * @return {!Object} Metadata.
|
| + * @return {!MetadataItem} Metadata.
|
| */
|
| -Gallery.Item.prototype.getMetadata = function() { return this.metadata_; };
|
| +Gallery.Item.prototype.getMetadataItem = function() {
|
| + return this.metadataItem_;
|
| +};
|
|
|
| /**
|
| * @return {!MetadataItem} Metadata.
|
| @@ -113,6 +95,13 @@ Gallery.Item.prototype.getMetadataItem = function() {
|
| };
|
|
|
| /**
|
| + * @return {!ThumbnailMetadataItem} Thumbnail metadata item.
|
| + */
|
| +Gallery.Item.prototype.getThumbnailMetadataItem = function() {
|
| + return this.thumbnailMetadataItem_;
|
| +};
|
| +
|
| +/**
|
| * @return {string} File name.
|
| */
|
| Gallery.Item.prototype.getFileName = function() {
|
| @@ -224,6 +213,7 @@ Gallery.Item.prototype.createCopyName_ = function(dirEntry, callback) {
|
| * Writes the new item content to either the existing or a new file.
|
| *
|
| * @param {!VolumeManager} volumeManager Volume manager instance.
|
| + * @param {!MetadataModel} metadataModel
|
| * @param {DirectoryEntry} fallbackDir Fallback directory in case the current
|
| * directory is read only.
|
| * @param {boolean} overwrite Whether to overwrite the image to the item or not.
|
| @@ -231,7 +221,7 @@ Gallery.Item.prototype.createCopyName_ = function(dirEntry, callback) {
|
| * @param {function(boolean)} callback Callback accepting true for success.
|
| */
|
| Gallery.Item.prototype.saveToFile = function(
|
| - volumeManager, fallbackDir, overwrite, canvas, callback) {
|
| + volumeManager, metadataModel, fallbackDir, overwrite, canvas, callback) {
|
| ImageUtil.metrics.startInterval(ImageUtil.getMetricName('SaveTime'));
|
|
|
| var name = this.getFileName();
|
| @@ -249,31 +239,17 @@ Gallery.Item.prototype.saveToFile = function(
|
| this.locationInfo_ = locationInfo;
|
|
|
| // Updates the metadata.
|
| - this.metadataCache_.clear([this.entry_], '*');
|
| - 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) {
|
| - this.metadataItem_ = metadataItems[0];
|
| - }.bind(this));
|
| - if (callback) {
|
| - Promise.all([oldMetadataPromise, newMetadataPromise]).then(
|
| - callback.bind(null, true),
|
| - callback.bind(null, false));
|
| - }
|
| + metadataModel.notifyEntriesChanged([this.entry_]);
|
| + Promise.all([
|
| + metadataModel.get([entry], Gallery.PREFETCH_PROPERTY_NAMES),
|
| + new ThumbnailModel(metadataModel).get([entry])
|
| + ]).then(function(metadataLists) {
|
| + this.metadataItem_ = metadataLists[0][0];
|
| + this.thumbnailMetadataItem_ = metadataLists[1][0];
|
| + callback(true);
|
| + }.bind(this), function() {
|
| + callback(false);
|
| + });
|
| }.bind(this);
|
|
|
| var onError = function(error) {
|
| @@ -284,7 +260,7 @@ Gallery.Item.prototype.saveToFile = function(
|
| };
|
|
|
| var doSave = function(newFile, fileEntry) {
|
| - var metadataPromise = this.metadataModel_.get(
|
| + var metadataPromise = metadataModel.get(
|
| [fileEntry],
|
| ['mediaMimeType', 'contentMimeType', 'ifd', 'exifLittleEndian']);
|
| metadataPromise.then(function(metadataItems) {
|
|
|