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

Unified Diff: ui/file_manager/file_manager/background/js/volume_manager.js

Issue 1136193002: Add a menu item for configuring configurable providers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed. Created 5 years, 7 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/file_manager/background/js/volume_manager.js
diff --git a/ui/file_manager/file_manager/background/js/volume_manager.js b/ui/file_manager/file_manager/background/js/volume_manager.js
index c824154895d882e48196ddc2036a07d9d780fe4a..ac7a45053a3dcb359cdf1c1363230ad0690ac9d8 100644
--- a/ui/file_manager/file_manager/background/js/volume_manager.js
+++ b/ui/file_manager/file_manager/background/js/volume_manager.js
@@ -26,6 +26,7 @@
* volume. Empty for native volumes.
* @param {boolean} hasMedia When true the volume has been identified
* as containing media such as photos or videos.
+ * @param {boolean} configurable When true, then the volume can be configured.
*/
function VolumeInfo(
volumeType,
@@ -38,7 +39,8 @@ function VolumeInfo(
profile,
label,
extensionId,
- hasMedia) {
+ hasMedia,
+ configurable) {
this.volumeType_ = volumeType;
this.volumeId_ = volumeId;
this.fileSystem_ = fileSystem;
@@ -80,6 +82,7 @@ function VolumeInfo(
this.profile_ = Object.freeze(profile);
this.extensionId_ = extensionId;
this.hasMedia_ = hasMedia;
+ this.configurable_ = configurable;
}
VolumeInfo.prototype = /** @struct */ {
@@ -161,6 +164,12 @@ VolumeInfo.prototype = /** @struct */ {
*/
get hasMedia() {
return this.hasMedia_;
+ },
+ /**
+ * @return {boolean} True if the volume is configurable.
+ */
+ get configurable() {
+ return this.configurable_;
}
};
@@ -245,21 +254,45 @@ volumeManagerUtil.createVolumeInfo = function(volumeMetadata) {
}
console.debug('Requesting file system.');
+ var configurable = false;
+
return new Promise(
function(resolve, reject) {
- chrome.fileSystem.requestFileSystem(
- {
- volumeId: volumeMetadata.volumeId,
- writable: !volumeMetadata.isReadOnly
- },
- function(isolatedFileSystem) {
- if (chrome.runtime.lastError)
+ if (volumeMetadata.volumeType !==
+ VolumeManagerCommon.VolumeType.PROVIDED) {
+ resolve();
+ }
+
+ chrome.fileManagerPrivate.getProvidingExtensions(
+ function(extensions) {
+ if (chrome.runtime.lastError) {
reject(chrome.runtime.lastError.message);
- else
- resolve(isolatedFileSystem);
+ return;
+ }
+ configurable = extensions.some(function(extension) {
+ return extension.extensionId === volumeMetadata.extensionId &&
+ extension.configurable;
+ });
+ resolve();
});
})
.then(
+ function() {
+ return new Promise(function(resolve, reject) {
+ chrome.fileSystem.requestFileSystem(
+ {
+ volumeId: volumeMetadata.volumeId,
+ writable: !volumeMetadata.isReadOnly
+ },
+ function(isolatedFileSystem) {
+ if (chrome.runtime.lastError)
+ reject(chrome.runtime.lastError.message);
+ else
+ resolve(isolatedFileSystem);
+ });
+ });
+ })
+ .then(
/**
* @param {!FileSystem} isolatedFileSystem
*/
@@ -313,7 +346,8 @@ volumeManagerUtil.createVolumeInfo = function(volumeMetadata) {
volumeMetadata.profile,
localizedLabel,
volumeMetadata.extensionId,
- volumeMetadata.hasMedia);
+ volumeMetadata.hasMedia,
+ configurable);
})
.catch(
/**
@@ -335,7 +369,8 @@ volumeManagerUtil.createVolumeInfo = function(volumeMetadata) {
volumeMetadata.profile,
localizedLabel,
volumeMetadata.extensionId,
- volumeMetadata.hasMedia);
+ volumeMetadata.hasMedia,
+ configurable);
});
};

Powered by Google App Engine
This is Rietveld 408576698