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

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

Issue 2839863002: Add Team Drive subtree to the directory list view. (Closed)
Patch Set: Fix FileManagerJsTest.{NavigationListModelTest,ProvidersModel}. Created 3 years, 8 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_info_impl.js
diff --git a/ui/file_manager/file_manager/background/js/volume_info_impl.js b/ui/file_manager/file_manager/background/js/volume_info_impl.js
index c2904b73c5d8df5fb3d78a5d0f895c860661ea11..615468e1f05d24ff858c6e0d25714c126572cdb7 100644
--- a/ui/file_manager/file_manager/background/js/volume_info_impl.js
+++ b/ui/file_manager/file_manager/background/js/volume_info_impl.js
@@ -53,6 +53,14 @@ function VolumeInfoImpl(
this.fileSystem_ = fileSystem;
this.label_ = label;
this.displayRoot_ = null;
+ this.teamDriveDisplayRoot_ = null;
+
+ /** @type {boolean}} */
fukino 2017/04/27 10:44:57 Remove the extra '}'. (I was surprised this passes
yamaguchi 2017/04/28 11:12:15 Done.
+ this.isTeamDrivesEnabled_ = false;
+
+ chrome.commandLinePrivate.hasSwitch('team-drives', function(enabled) {
+ this.isTeamDrivesEnabled_ = enabled;
+ }.bind(this));
/** @type {Object<!FakeEntry>} */
this.fakeEntries_ = {};
@@ -60,6 +68,9 @@ function VolumeInfoImpl(
/** @type {Promise.<!DirectoryEntry>} */
this.displayRootPromise_ = null;
+ /** @type {Promise.<!Array<!DirectoryEntry>>} */
+ this.driveDisplayRootPromises_ = null;
+
if (volumeType === VolumeManagerCommon.VolumeType.DRIVE) {
// TODO(mtomasz): Convert fake entries to DirectoryProvider.
this.fakeEntries_[VolumeManagerCommon.RootType.DRIVE_OFFLINE] = {
@@ -122,6 +133,14 @@ VolumeInfoImpl.prototype = /** @struct */ {
return this.displayRoot_;
},
/**
+ * @return {DirectoryEntry} The display root path of Team Drives directory.
+ * It is null before finishing to resolve the entry. Valid only for Drive
+ * volume.
+ */
+ get teamDriveDisplayRoot() {
+ return this.teamDriveDisplayRoot_;
+ },
+ /**
* @return {Object<!FakeEntry>} Fake entries.
*/
get fakeEntries() {
@@ -216,17 +235,36 @@ VolumeInfoImpl.prototype.resolveDisplayRoot = function(opt_onSuccess,
else
this.displayRootPromise_ = /** @type {Promise.<!DirectoryEntry>} */ (
Promise.reject(this.error));
+ this.displayRootPromise_.then(function(displayRoot) {
+ this.displayRoot_ = displayRoot;
+ }.bind(this));
} else {
// For Drive, we need to resolve.
var displayRootURL = this.fileSystem_.root.toURL() + '/root';
- this.displayRootPromise_ = new Promise(
- window.webkitResolveLocalFileSystemURL.bind(null, displayRootURL));
+ var displayRootPromise =
+ new Promise(
+ window.webkitResolveLocalFileSystemURL.bind(null, displayRootURL))
+ .then(function(result) {
+ this.displayRoot_ = result;
+ return this.displayRoot_;
+ }.bind(this), null);
+ if (!this.isTeamDrivesEnabled_) {
+ this.displayRootPromise_ = displayRootPromise;
+ } else {
+ var teamDrivesDisplayRootURL = this.fileSystem_.root.toURL() +
+ VolumeManagerCommon.TEAM_DRIVES_DIRECTORY_PATH;
+ this.driveDisplayRootPromises_ = Promise.all([
+ displayRootPromise,
+ new Promise(window.webkitResolveLocalFileSystemURL.bind(
+ null, teamDrivesDisplayRootURL))
+ ]);
+ this.displayRootPromise_ =
+ this.driveDisplayRootPromises_.then(function(result) {
+ this.teamDriveDisplayRoot_ = result[1];
+ return this.displayRoot_;
+ }.bind(this), opt_onFailure);
+ }
}
-
- // Store the obtained displayRoot.
- this.displayRootPromise_.then(function(displayRoot) {
- this.displayRoot_ = displayRoot;
- }.bind(this));
}
if (opt_onSuccess)
this.displayRootPromise_.then(opt_onSuccess, opt_onFailure);

Powered by Google App Engine
This is Rietveld 408576698