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

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

Issue 9379023: Tweaks for improving file manager performance (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Non-trivial merge with trunk Created 8 years, 10 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/file_manager.js
diff --git a/chrome/browser/resources/file_manager/js/file_manager.js b/chrome/browser/resources/file_manager/js/file_manager.js
index eb1f9b7c4224e52dd0dae6f41ebf573689308d1f..2bbd14db34c4020a73743a7eb45d452b8b9f3bf2 100644
--- a/chrome/browser/resources/file_manager/js/file_manager.js
+++ b/chrome/browser/resources/file_manager/js/file_manager.js
@@ -482,7 +482,7 @@ FileManager.prototype = {
(this.dialogType_ == FileManager.DialogType.FULL_PAGE ||
this.dialogType_ == FileManager.DialogType.SELECT_OPEN_MULTI_FILE);
- this.table_.list.startBatchUpdates();
+ this.table_.startBatchUpdates();
this.grid_.startBatchUpdates();
this.initFileList_();
@@ -550,7 +550,7 @@ FileManager.prototype = {
this.createMetadataProvider_();
- this.table_.list.endBatchUpdates();
+ this.table_.endBatchUpdates();
this.grid_.endBatchUpdates();
metrics.recordInterval('Load.DOM');
@@ -761,7 +761,9 @@ FileManager.prototype = {
// TODO(dgozman): add "Add a drive" item.
this.rootsList_.dataModel = this.directoryModel_.rootsList;
- this.directoryModel_.updateRoots();
+ this.directoryModel_.updateRoots(function() {
+ self.rootsList_.endBatchUpdates();
+ });
};
FileManager.prototype.initGData_ = function() {
@@ -1397,6 +1399,11 @@ FileManager.prototype = {
* window has neither.
*/
FileManager.prototype.setupCurrentDirectory_ = function() {
+ // Avoid a bunch of intermediate list redraws while the data model is
+ // cleared and updated.
+ this.table_.startBatchUpdates();
+ var onLoaded = this.table_.endBatchUpdates.bind(this.table_);
+
if (location.hash) {
// Location hash has the highest priority.
var path = decodeURI(location.hash.substr(1));
@@ -1424,32 +1431,34 @@ FileManager.prototype = {
// until the selection is done.
var self = this;
function onFileSelected() {
+ onLoaded();
self.dispatchDefaultTask_();
setTimeout(removeShade, 1000);
}
- this.directoryModel_.setupPath(path, onResolve, onFileSelected);
+ this.directoryModel_.setupPath(path, onFileSelected, onResolve);
return;
}
- this.directoryModel_.setupPath(path);
+ this.directoryModel_.setupPath(path, onLoaded);
return;
}
if (this.params_.defaultPath) {
var path = this.params_.defaultPath;
if (this.dialogType_ == FileManager.DialogType.SELECT_SAVEAS_FILE) {
- this.directoryModel_.setupPath(path, function(basePath, leafName) {
- this.filenameInput_.value = leafName;
- this.selectDefaultPathInFilenameInput_();
- }.bind(this));
+ this.directoryModel_.setupPath(path, onLoaded,
+ function(basePath, leafName) {
+ this.filenameInput_.value = leafName;
+ this.selectDefaultPathInFilenameInput_();
+ }.bind(this));
return;
}
- this.directoryModel_.setupPath(path);
+ this.directoryModel_.setupPath(path, onLoaded);
return;
}
- this.directoryModel_.setupDefaultPath();
+ this.directoryModel_.setupDefaultPath(onLoaded);
};
/**
@@ -2348,7 +2357,7 @@ FileManager.prototype = {
chrome.fileBrowserPrivate.getMountPoints(function(mountPoints) {
self.setMountPoints_(mountPoints);
- var changeDirectoryTo = null;
+ var changeDirectoryCallback = null;
if (event.eventType == 'mount') {
// Mount request finished - remove it.
@@ -2392,13 +2401,16 @@ FileManager.prototype = {
return;
}
// Current durectory just unmounted. Move to the 'Downloads'.
- changeDirectoryTo = '/' + DirectoryModel.DOWNLOADS_DIRECTORY;
+ changeDirectoryCallback = function() {
+ self.directoryModel_.changeDirectory(
+ '/' + DirectoryModel.DOWNLOADS_DIRECTORY);
+ };
}
// Even if something failed root list should be rescanned.
// Failed mounts can "give" us new devices which might be formatted,
// so we have to refresh root list then.
- self.directoryModel_.updateRoots(changeDirectoryTo);
+ self.directoryModel_.updateRoots(changeDirectoryCallback);
});
};

Powered by Google App Engine
This is Rietveld 408576698