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

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

Issue 529413002: Rename DriveProvider to ExternalProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed. Created 6 years, 3 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
« no previous file with comments | « ui/file_manager/gallery/js/gallery.js ('k') | ui/file_manager/gallery/js/image_editor/image_view.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 e6114653d6870db297ef753150a3b6298b8c82d6..2c6855ab029d6ad325cbb6410f509f4b298acc19 100644
--- a/ui/file_manager/gallery/js/gallery_item.js
+++ b/ui/file_manager/gallery/js/gallery_item.js
@@ -8,14 +8,14 @@
* Object representing an image item (a photo).
*
* @param {FileEntry} entry Image entry.
- * @param {function():Promise} fethcedMediaProvider Function to provide the
- * fetchedMedia metadata.
+ * @param {EntryLocation} locationInfo Entry location information.
+ * @param {Object} metadata Metadata for the entry.
+ * @param {MetadataCache} metadataCache Metadata cache instance.
* @param {boolean} original Whether the entry is original or edited.
- * @param {boolean} readonly Whether the entry is located at readonly directory
- * or not.
* @constructor
*/
-Gallery.Item = function(entry, metadata, metadataCache, original, readonly) {
+Gallery.Item = function(
+ entry, locationInfo, metadata, metadataCache, original) {
/**
* @type {FileEntry}
* @private
@@ -23,6 +23,12 @@ Gallery.Item = function(entry, metadata, metadataCache, original, readonly) {
this.entry_ = entry;
/**
+ * @type {EntryLocation}
+ * @private
+ */
+ this.locationInfo_ = locationInfo;
+
+ /**
* @type {Object}
* @private
*/
@@ -61,12 +67,6 @@ Gallery.Item = function(entry, metadata, metadataCache, original, readonly) {
* @type {boolean}
* @private
*/
- this.isReadOnly_ = readonly;
-
- /**
- * @type {boolean}
- * @private
- */
this.original_ = original;
Object.seal(this);
@@ -78,6 +78,13 @@ Gallery.Item = function(entry, metadata, metadataCache, original, readonly) {
Gallery.Item.prototype.getEntry = function() { return this.entry_; };
/**
+ * @return {EntryLocation} Entry location information.
+ */
+Gallery.Item.prototype.getLocationInfo = function() {
+ return this.locationInfo_;
+};
+
+/**
* @return {Object} Metadata.
*/
Gallery.Item.prototype.getMetadata = function() { return this.metadata_; };
@@ -124,21 +131,6 @@ Gallery.Item.prototype.getFileName = function() {
Gallery.Item.prototype.isOriginal = function() { return this.original_; };
/**
- * @return {boolean} Whther the item is located at a readonly directory.
- */
-Gallery.Item.prototype.isReadOnly = function() {
- return this.isReadOnly_;
-};
-
-/**
- * Obtains the item is on the drive volume or not.
- * @return {boolean} True if the item is on the drive volume.
- */
-Gallery.Item.prototype.isOnDrive = function() {
- return !!this.metadata_.drive;
-};
-
-/**
* Obtains the last accessed date.
* @return {number} Last accessed date.
*/
@@ -153,7 +145,6 @@ Gallery.Item.prototype.touch = function() {
this.lastAccessed_ = Date.now();
};
-
// TODO: Localize?
/**
* @type {string} Suffix for a edited copy file name.
@@ -233,39 +224,42 @@ Gallery.Item.prototype.createCopyName_ = function(dirEntry, callback) {
};
/**
- * Writes the new item content to the file.
+ * Writes the new item content to either the existing or a new file.
*
- * @param {DirectoryEntry} fallbackDir If the entry is readonly, the edited
- * image is saved to the directory.
- * @param {boolean} overwrite True if overwrite, false if copy.
+ * @param {VolumeManager} volumeManager Volume manager instance.
+ * @param {string} fallbackDir Fallback directory in case the current directory
+ * is read only.
* @param {HTMLCanvasElement} canvas Source canvas.
* @param {ImageEncoder.MetadataEncoder} metadataEncoder MetadataEncoder.
* @param {function(boolean)=} opt_callback Callback accepting true for success.
*/
Gallery.Item.prototype.saveToFile = function(
- fallbackDir, overwrite, canvas, metadataEncoder, opt_callback) {
+ volumeManager, fallbackDir, overwrite, canvas, metadataEncoder,
+ opt_callback) {
ImageUtil.metrics.startInterval(ImageUtil.getMetricName('SaveTime'));
var name = this.getFileName();
- var onSuccess = function(entry) {
+ var onSuccess = function(entry, locationInfo) {
ImageUtil.metrics.recordEnum(ImageUtil.getMetricName('SaveResult'), 1, 2);
ImageUtil.metrics.recordInterval(ImageUtil.getMetricName('SaveTime'));
+
this.entry_ = entry;
- this.isReadOnly_ = false;
+ this.locationInfo_ = locationInfo;
+
this.metadataCache_.clear([this.entry_], 'fetchedMedia');
if (opt_callback)
opt_callback(true);
}.bind(this);
- function onError(error) {
+ 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);
}
- function doSave(newFile, fileEntry) {
+ var doSave = function(newFile, fileEntry) {
fileEntry.createWriter(function(fileWriter) {
function writeContent() {
fileWriter.onwriteend = onSuccess.bind(null, fileEntry);
@@ -286,19 +280,27 @@ Gallery.Item.prototype.saveToFile = function(
}, onError);
}
- function getFile(dir, newFile) {
+ var getFile = function(dir, newFile) {
dir.getFile(name, {create: newFile, exclusive: newFile},
- doSave.bind(null, newFile), onError);
- }
+ function(fileEntry) {
+ var locationInfo = volumeManager.getLocationInfo(fileEntry);
+ // If the volume is gone, then abort the saving operation.
+ if (!locationInfo) {
+ onError('NotFound');
+ return;
+ }
+ doSave(newFile, fileEntry, locationInfo);
+ }.bind(this), onError);
+ }.bind(this);
- function checkExistence(dir) {
+ var checkExistence = function(dir) {
dir.getFile(name, {create: false, exclusive: false},
getFile.bind(null, dir, false /* existing file */),
getFile.bind(null, dir, true /* create new file */));
}
var saveToDir = function(dir) {
- if (overwrite && !this.isReadOnly_) {
+ if (overwrite && !this.locationInfo_.isReadOnly) {
checkExistence(dir);
} else {
this.createCopyName_(dir, function(copyName) {
@@ -309,7 +311,7 @@ Gallery.Item.prototype.saveToFile = function(
}
}.bind(this);
- if (this.isReadOnly_) {
+ if (this.locationInfo_.isReadOnly) {
saveToDir(fallbackDir);
} else {
this.entry_.getParent(saveToDir, onError);
« no previous file with comments | « ui/file_manager/gallery/js/gallery.js ('k') | ui/file_manager/gallery/js/image_editor/image_view.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698