Chromium Code Reviews| 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 f9aaffd3bbe18c44db3e4a5d30cccd5e259fe5fc..8139b9c510f4ae4dc17f0650ff6753e90d68c5f5 100644 |
| --- a/chrome/browser/resources/file_manager/js/file_manager.js |
| +++ b/chrome/browser/resources/file_manager/js/file_manager.js |
| @@ -1484,6 +1484,11 @@ FileManager.prototype = { |
| * go fetch data for the sort field that we may not have yet. |
| */ |
| FileManager.prototype.prepareSort_ = function(field, callback) { |
| + this.prepareSortEntries_(this.dataModel_.slice(), field, callback); |
| + }; |
| + |
| + FileManager.prototype.prepareSortEntries_ = function(entries, field, |
| + callback) { |
| var cacheFunction; |
| if (field == 'name' || field == 'cachedMtime_') { |
|
dgozman
2011/12/02 09:33:41
We do not have two files with the same name. Let's
SeRya
2011/12/02 12:32:22
I'm not sure it need to be fixed. At least not in
|
| @@ -1509,11 +1514,10 @@ FileManager.prototype = { |
| } |
| } |
| - var dataModel = this.dataModel_; |
| - var uncachedCount = dataModel.length; |
| + var uncachedCount = entries.length; |
| for (var i = uncachedCount - 1; i >= 0 ; i--) { |
| - var entry = dataModel.item(i); |
| + var entry = entries[i]; |
| if (field in entry) { |
| uncachedCount--; |
| } else { |
| @@ -3216,11 +3220,13 @@ FileManager.prototype = { |
| }); |
| } |
| - spliceArgs.unshift(0, 0); // index, deleteCount |
| - self.dataModel_.splice.apply(self.dataModel_, spliceArgs); |
| + self.prefetchCacheForSorting_(entries, function() { |
|
dgozman
2011/12/02 09:33:41
entries -> spliceArgs
SeRya
2011/12/02 12:32:22
Done.
|
| + spliceArgs.unshift(0, 0); // index, deleteCount |
| + self.dataModel_.splice.apply(self.dataModel_, spliceArgs); |
| - // Keep reading until entries.length is 0. |
| - reader.readEntries(onReadSome, onError); |
| + // Keep reading until entries.length is 0. |
| + reader.readEntries(onReadSome, onError); |
| + }); |
| }; |
| metrics.startInterval('DirectoryScan'); |
| @@ -3242,6 +3248,16 @@ FileManager.prototype = { |
| opt_callback(); |
| }; |
| + FileManager.prototype.prefetchCacheForSorting_ = function(entries, callback) { |
| + var field = this.dataModel_.sortStatus.field; |
| + if (field) { |
| + this.prepareSortEntries_(entries, field, callback); |
| + } else { |
| + callback(); |
| + return; |
| + } |
| + }; |
| + |
| FileManager.prototype.findListItem_ = function(event) { |
| var node = event.srcElement; |
| while (node) { |