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

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

Issue 1137383002: Show the eject button only for removabled and file handlers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed tests. 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 ac7a45053a3dcb359cdf1c1363230ad0690ac9d8..8faa2387f632f9cce3540836d8979796c4ac58cd 100644
--- a/ui/file_manager/file_manager/background/js/volume_manager.js
+++ b/ui/file_manager/file_manager/background/js/volume_manager.js
@@ -27,6 +27,7 @@
* @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.
+ * @param {VolumeManagerCommon.Source} source Source of the volume's data.
*/
function VolumeInfo(
volumeType,
@@ -40,7 +41,8 @@ function VolumeInfo(
label,
extensionId,
hasMedia,
- configurable) {
+ configurable,
+ source) {
this.volumeType_ = volumeType;
this.volumeId_ = volumeId;
this.fileSystem_ = fileSystem;
@@ -83,6 +85,7 @@ function VolumeInfo(
this.extensionId_ = extensionId;
this.hasMedia_ = hasMedia;
this.configurable_ = configurable;
+ this.source_ = source;
}
VolumeInfo.prototype = /** @struct */ {
@@ -170,6 +173,12 @@ VolumeInfo.prototype = /** @struct */ {
*/
get configurable() {
return this.configurable_;
+ },
+ /**
+ * @return {VolumeManagerCommon.Source} Source of the volume's data.
+ */
+ get source() {
+ return this.source_;
}
};
@@ -254,124 +263,104 @@ volumeManagerUtil.createVolumeInfo = function(volumeMetadata) {
}
console.debug('Requesting file system.');
- var configurable = false;
-
return new Promise(
function(resolve, reject) {
- if (volumeMetadata.volumeType !==
- VolumeManagerCommon.VolumeType.PROVIDED) {
- resolve();
- }
-
- chrome.fileManagerPrivate.getProvidingExtensions(
- function(extensions) {
- if (chrome.runtime.lastError) {
+ chrome.fileSystem.requestFileSystem(
+ {
+ volumeId: volumeMetadata.volumeId,
+ writable: !volumeMetadata.isReadOnly
+ },
+ function(isolatedFileSystem) {
+ if (chrome.runtime.lastError)
reject(chrome.runtime.lastError.message);
- return;
- }
- configurable = extensions.some(function(extension) {
- return extension.extensionId === volumeMetadata.extensionId &&
- extension.configurable;
- });
- resolve();
+ else
+ resolve(isolatedFileSystem);
});
})
- .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
- */
- function(isolatedFileSystem) {
- // Since File System API works on isolated entries only, we need to
- // convert it back to external one.
- // TODO(mtomasz): Make Files app work on isolated entries.
- return new Promise(function(resolve, reject) {
- chrome.fileManagerPrivate.resolveIsolatedEntries(
- [isolatedFileSystem.root],
- function(entries) {
- if (chrome.runtime.lastError)
- reject(chrome.runtime.lastError.message);
- else if (!entries[0])
- reject('Resolving for external context failed.');
- else
- resolve(entries[0].filesystem);
- });
+ .then(
+ /**
+ * @param {!FileSystem} isolatedFileSystem
+ */
+ function(isolatedFileSystem) {
+ // Since File System API works on isolated entries only, we need to
+ // convert it back to external one.
+ // TODO(mtomasz): Make Files app work on isolated entries.
+ return new Promise(function(resolve, reject) {
+ chrome.fileManagerPrivate.resolveIsolatedEntries(
+ [isolatedFileSystem.root],
+ function(entries) {
+ if (chrome.runtime.lastError)
+ reject(chrome.runtime.lastError.message);
+ else if (!entries[0])
+ reject('Resolving for external context failed.');
+ else
+ resolve(entries[0].filesystem);
});
- })
- .then(
- /**
- * @param {!FileSystem} fileSystem
- */
- function(fileSystem) {
- console.debug('File system obtained: ' + volumeMetadata.volumeId);
- if (volumeMetadata.volumeType ===
- VolumeManagerCommon.VolumeType.DRIVE) {
- // After file system is mounted, we "read" drive grand root
- // entry at first. This triggers full feed fetch on background.
- // Note: we don't need to handle errors here, because even if
- // it fails, accessing to some path later will just become
- // a fast-fetch and it re-triggers full-feed fetch.
- fileSystem.root.createReader().readEntries(
- function() { /* do nothing */ },
- function(error) {
- console.error(
- 'Triggering full feed fetch is failed: ' +
- error.name);
- });
- }
- return new VolumeInfo(
- /** @type {VolumeManagerCommon.VolumeType} */
- (volumeMetadata.volumeType),
- volumeMetadata.volumeId,
- fileSystem,
- volumeMetadata.mountCondition,
- volumeMetadata.deviceType,
- volumeMetadata.devicePath,
- volumeMetadata.isReadOnly,
- volumeMetadata.profile,
- localizedLabel,
- volumeMetadata.extensionId,
- volumeMetadata.hasMedia,
- configurable);
- })
- .catch(
- /**
- * @param {*} error
- */
- function(error) {
- console.error('Failed to mount a file system: ' +
- volumeMetadata.volumeId + ' because of: ' +
- (error.stack || error));
- return new VolumeInfo(
- /** @type {VolumeManagerCommon.VolumeType} */
- (volumeMetadata.volumeType),
- volumeMetadata.volumeId,
- null, // File system is not found.
- volumeMetadata.mountCondition,
- volumeMetadata.deviceType,
- volumeMetadata.devicePath,
- volumeMetadata.isReadOnly,
- volumeMetadata.profile,
- localizedLabel,
- volumeMetadata.extensionId,
- volumeMetadata.hasMedia,
- configurable);
});
+ })
+ .then(
+ /**
+ * @param {!FileSystem} fileSystem
+ */
+ function(fileSystem) {
+ console.debug('File system obtained: ' + volumeMetadata.volumeId);
+ if (volumeMetadata.volumeType ===
+ VolumeManagerCommon.VolumeType.DRIVE) {
+ // After file system is mounted, we "read" drive grand root
+ // entry at first. This triggers full feed fetch on background.
+ // Note: we don't need to handle errors here, because even if
+ // it fails, accessing to some path later will just become
+ // a fast-fetch and it re-triggers full-feed fetch.
+ fileSystem.root.createReader().readEntries(
+ function() { /* do nothing */ },
+ function(error) {
+ console.error(
+ 'Triggering full feed fetch is failed: ' +
+ error.name);
+ });
+ }
+ return new VolumeInfo(
+ /** @type {VolumeManagerCommon.VolumeType} */
+ (volumeMetadata.volumeType),
+ volumeMetadata.volumeId,
+ fileSystem,
+ volumeMetadata.mountCondition,
+ volumeMetadata.deviceType,
+ volumeMetadata.devicePath,
+ volumeMetadata.isReadOnly,
+ volumeMetadata.profile,
+ localizedLabel,
+ volumeMetadata.extensionId,
+ volumeMetadata.hasMedia,
+ volumeMetadata.configurable,
+ /** @type {VolumeManagerCommon.Source} */
+ (volumeMetadata.source));
+ })
+ .catch(
+ /**
+ * @param {*} error
+ */
+ function(error) {
+ console.error('Failed to mount a file system: ' +
+ volumeMetadata.volumeId + ' because of: ' +
+ (error.stack || error));
+ return new VolumeInfo(
+ /** @type {VolumeManagerCommon.VolumeType} */
+ (volumeMetadata.volumeType),
+ volumeMetadata.volumeId,
+ null, // File system is not found.
+ volumeMetadata.mountCondition,
+ volumeMetadata.deviceType,
+ volumeMetadata.devicePath,
+ volumeMetadata.isReadOnly,
+ volumeMetadata.profile,
+ localizedLabel,
+ volumeMetadata.extensionId,
+ volumeMetadata.hasMedia,
+ volumeMetadata.configurable,
+ /** @type {VolumeManagerCommon.Source} */
+ (volumeMetadata.source));
+ });
};
/**

Powered by Google App Engine
This is Rietveld 408576698