| 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 995a7d85255a4611b73592034d568de056644871..e6114653d6870db297ef753150a3b6298b8c82d6 100644
|
| --- a/ui/file_manager/gallery/js/gallery_item.js
|
| +++ b/ui/file_manager/gallery/js/gallery_item.js
|
| @@ -10,9 +10,12 @@
|
| * @param {FileEntry} entry Image entry.
|
| * @param {function():Promise} fethcedMediaProvider Function to provide the
|
| * fetchedMedia metadata.
|
| + * @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) {
|
| +Gallery.Item = function(entry, metadata, metadataCache, original, readonly) {
|
| /**
|
| * @type {FileEntry}
|
| * @private
|
| @@ -58,6 +61,12 @@ Gallery.Item = function(entry, metadata, metadataCache, original) {
|
| * @type {boolean}
|
| * @private
|
| */
|
| + this.isReadOnly_ = readonly;
|
| +
|
| + /**
|
| + * @type {boolean}
|
| + * @private
|
| + */
|
| this.original_ = original;
|
|
|
| Object.seal(this);
|
| @@ -115,6 +124,13 @@ 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.
|
| */
|
| @@ -219,15 +235,15 @@ Gallery.Item.prototype.createCopyName_ = function(dirEntry, callback) {
|
| /**
|
| * Writes the new item content to the file.
|
| *
|
| - * @param {Entry} overrideDir Directory to save to. If null, save to the same
|
| - * directory as the original.
|
| + * @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 {HTMLCanvasElement} canvas Source canvas.
|
| * @param {ImageEncoder.MetadataEncoder} metadataEncoder MetadataEncoder.
|
| * @param {function(boolean)=} opt_callback Callback accepting true for success.
|
| */
|
| Gallery.Item.prototype.saveToFile = function(
|
| - overrideDir, overwrite, canvas, metadataEncoder, opt_callback) {
|
| + fallbackDir, overwrite, canvas, metadataEncoder, opt_callback) {
|
| ImageUtil.metrics.startInterval(ImageUtil.getMetricName('SaveTime'));
|
|
|
| var name = this.getFileName();
|
| @@ -236,6 +252,7 @@ Gallery.Item.prototype.saveToFile = function(
|
| ImageUtil.metrics.recordEnum(ImageUtil.getMetricName('SaveResult'), 1, 2);
|
| ImageUtil.metrics.recordInterval(ImageUtil.getMetricName('SaveTime'));
|
| this.entry_ = entry;
|
| + this.isReadOnly_ = false;
|
| this.metadataCache_.clear([this.entry_], 'fetchedMedia');
|
| if (opt_callback)
|
| opt_callback(true);
|
| @@ -281,7 +298,7 @@ Gallery.Item.prototype.saveToFile = function(
|
| }
|
|
|
| var saveToDir = function(dir) {
|
| - if (overwrite) {
|
| + if (overwrite && !this.isReadOnly_) {
|
| checkExistence(dir);
|
| } else {
|
| this.createCopyName_(dir, function(copyName) {
|
| @@ -292,8 +309,8 @@ Gallery.Item.prototype.saveToFile = function(
|
| }
|
| }.bind(this);
|
|
|
| - if (overrideDir) {
|
| - saveToDir(overrideDir);
|
| + if (this.isReadOnly_) {
|
| + saveToDir(fallbackDir);
|
| } else {
|
| this.entry_.getParent(saveToDir, onError);
|
| }
|
|
|