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

Unified Diff: chrome/browser/resources/file_manager/js/directory_model.js

Issue 10391103: [File Manager] Add/remove Google Drive folder in the open File Manager when Drive enabled/disabled … (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 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: chrome/browser/resources/file_manager/js/directory_model.js
diff --git a/chrome/browser/resources/file_manager/js/directory_model.js b/chrome/browser/resources/file_manager/js/directory_model.js
index 89747a4c7b3822cf40c6b3c83dc1c1cb2342bc9f..f4e3c2618358cfd5a911d509a3fbcff19e8f7818 100644
--- a/chrome/browser/resources/file_manager/js/directory_model.js
+++ b/chrome/browser/resources/file_manager/js/directory_model.js
@@ -15,19 +15,15 @@ var SHORT_RESCAN_INTERVAL = 100;
* @param {DirectoryEntry} root File system root.
* @param {boolean} singleSelection True if only one file could be selected
* at the time.
- * @param {boolean} showGData Defines whether GData root should be should
- * (regardless of its mounts status).
* @param {MetadataCache} metadataCache The metadata cache service.
*/
-function DirectoryModel(root, singleSelection, showGData, metadataCache) {
+function DirectoryModel(root, singleSelection, metadataCache) {
this.root_ = root;
this.metadataCache_ = metadataCache;
this.fileList_ = new cr.ui.ArrayDataModel([]);
this.fileListSelection_ = singleSelection ?
new cr.ui.ListSingleSelectionModel() : new cr.ui.ListSelectionModel();
- this.showGData_ = showGData;
-
this.runningScan_ = null;
this.pendingScan_ = null;
this.rescanTimeout_ = undefined;
@@ -95,6 +91,21 @@ DirectoryModel.DOWNLOADS_DIRECTORY = 'Downloads';
DirectoryModel.GDATA_DIRECTORY = 'drive';
/**
+ * GData access mode: disabled (no GData root displayed in the list).
+ */
+DirectoryModel.GDATA_ACCESS_DISABLED = 0;
+
+/**
+ * GData access mode: lazy (GData root displayed, no content is fetched yet).
+ */
+DirectoryModel.GDATA_ACCESS_LAZY = 1;
+
+/**
+ * GData access mode: full (GData root displayed, content is available).
+ */
+DirectoryModel.GDATA_ACCESS_FULL = 2;
+
+/**
* DirectoryModel extends cr.EventTarget.
*/
DirectoryModel.prototype.__proto__ = cr.EventTarget.prototype;
@@ -958,9 +969,9 @@ DirectoryModel.prototype.prepareSortEntries_ = function(entries, field,
* Get root entries asynchronously.
* @private
* @param {function(Array.<Entry>)} callback Called when roots are resolved.
- * @param {boolean} resolveGData See comment for updateRoots.
+ * @param {number} gdataAccess One of GDATA_ACCESS_* constants.
*/
-DirectoryModel.prototype.resolveRoots_ = function(callback, resolveGData) {
+DirectoryModel.prototype.resolveRoots_ = function(callback, gdataAccess) {
var groups = {
downloads: null,
archives: null,
@@ -998,17 +1009,18 @@ DirectoryModel.prototype.resolveRoots_ = function(callback, resolveGData) {
done();
}
- function onGData(entry) {
- console.log('GData found:', entry);
+ function onGDataMounted(entry) {
+ console.log('GData mounted:', entry);
self.unmountedGDataEntry_ = null;
groups.gdata = [entry];
done();
}
- function onGDataError(error) {
- console.log('GData error: ' + error);
+ function onGDataNotMounted(error) {
+ console.log('GData not mounted: ' + (error || 'lazy'));
self.unmountedGDataEntry_ = {
unmounted: true, // Clients use this field to distinguish a fake root.
+ error: error,
toURL: function() { return '' },
fullPath: '/' + DirectoryModel.GDATA_DIRECTORY
};
@@ -1023,25 +1035,22 @@ DirectoryModel.prototype.resolveRoots_ = function(callback, resolveGData) {
append.bind(this, 'archives'));
util.readDirectory(root, DirectoryModel.REMOVABLE_DIRECTORY,
append.bind(this, 'removables'));
- if (this.showGData_) {
- if (resolveGData) {
- root.getDirectory(DirectoryModel.GDATA_DIRECTORY, { create: false },
- onGData, onGDataError);
- } else {
- onGDataError('lazy mount');
- }
+
+ if (gdataAccess == DirectoryModel.GDATA_ACCESS_FULL) {
+ root.getDirectory(DirectoryModel.GDATA_DIRECTORY, { create: false },
+ onGDataMounted, onGDataNotMounted);
+ } else if (gdataAccess == DirectoryModel.GDATA_ACCESS_LAZY) {
+ onGDataNotMounted();
} else {
groups.gdata = [];
}
};
/**
-* @param {function} opt_callback Called when all roots are resolved.
-* @param {boolean} opt_resolveGData If true GData should be resolved for real,
-* If false a stub entry should be created.
-*/
-DirectoryModel.prototype.updateRoots = function(opt_callback,
- opt_resolveGData) {
+ * @param {function} callback Called when all roots are resolved.
+ * @param {number} gdataAccess One of GDATA_ACCESS_* constants.
+ */
+DirectoryModel.prototype.updateRoots = function(callback, gdataAccess) {
var self = this;
this.resolveRoots_(function(rootEntries) {
var dm = self.rootsList_;
@@ -1050,9 +1059,8 @@ DirectoryModel.prototype.updateRoots = function(opt_callback,
self.updateRootsListSelection_();
- if (opt_callback)
- opt_callback();
- }, opt_resolveGData);
+ callback();
+ }, gdataAccess);
};
/**

Powered by Google App Engine
This is Rietveld 408576698