| 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 50692bee27dfb05150a3f1504d53aa751c66c576..bd5e5c03a9d89a004718514363bbff4928c52c5c 100644
|
| --- a/chrome/browser/resources/file_manager/js/file_manager.js
|
| +++ b/chrome/browser/resources/file_manager/js/file_manager.js
|
| @@ -1482,6 +1482,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_') {
|
| @@ -1507,11 +1512,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 {
|
| @@ -3212,11 +3216,13 @@ FileManager.prototype = {
|
| });
|
| }
|
|
|
| - spliceArgs.unshift(0, 0); // index, deleteCount
|
| - self.dataModel_.splice.apply(self.dataModel_, spliceArgs);
|
| + self.prefetchCacheForSorting_(spliceArgs, function() {
|
| + 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');
|
| @@ -3238,6 +3244,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) {
|
|
|