Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(754)

Unified Diff: ui/file_manager/gallery/js/gallery_item.js

Issue 971173002: Gallery: Start to use new metadata model in Gallery. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test. Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..cda1f80dee9a73c887fa02946f864833390352b1 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,37 @@ 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) {
+ this.metadataItem_ = metadataItems[0];
+ }.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) {
« no previous file with comments | « ui/file_manager/gallery/js/gallery_data_model.js ('k') | ui/file_manager/gallery/js/gallery_item_unittest.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698