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 17b99392f888811f1fbb696dea462d4f7aae68d7..90cc03365f8f7edb72719a9c1963799410da1c2c 100644 |
--- a/chrome/browser/resources/file_manager/js/file_manager.js |
+++ b/chrome/browser/resources/file_manager/js/file_manager.js |
@@ -640,7 +640,11 @@ FileManager.prototype = { |
this.dataModel_.setCompareFunction('name', function(a, b) { |
return collator.compare(a.name, b.name); |
}); |
- this.dataModel_.sort('name'); |
+ this.dataModel_.setCompareFunction('cachedMtime_', |
+ this.compareMtime_.bind(this)); |
+ this.dataModel_.setCompareFunction('cachedSize_', |
+ this.compareSize_.bind(this)); |
+ this.dataModel_.sort('cachedMtime_'); |
this.dataModel_.prepareSort = this.prepareSort_.bind(this); |
if (this.dialogType_ == FileManager.DialogType.SELECT_OPEN_FILE || |
@@ -662,6 +666,32 @@ FileManager.prototype = { |
this.textSearchState_ = {text: '', date: new Date()}; |
}; |
+ /** |
+ * Compare by mtime first, then by name. |
+ */ |
+ FileManager.prototype.compareMtime_ = function(a, b) { |
+ if (a.cachedMtime_ > b.cachedMtime) |
+ return 1; |
+ |
+ if (a.cachedMtime_ < b.cachedMtime) |
+ return -1; |
+ |
+ return this.collator_.compare(a.name, b.name); |
+ }; |
+ |
+ /** |
+ * Compare by size first, then by name. |
+ */ |
+ FileManager.prototype.compareSize_ = function(a, b) { |
+ if (a.cachedSize_ > b.cachedSize) |
+ return 1; |
+ |
+ if (a.cachedSize_ < b.cachedSize) |
+ return -1; |
+ |
+ return this.collator_.compare(a.name, b.name); |
+ }; |
+ |
FileManager.prototype.refocus = function() { |
this.document_.querySelector('[tabindex="0"]').focus(); |
}; |
@@ -1215,7 +1245,9 @@ FileManager.prototype = { |
FileManager.prototype.prepareSort_ = function(field, callback) { |
var cacheFunction; |
- if (field == 'cachedMtime_') { |
+ if (field == 'name' || field == 'cachedMtime_') { |
+ // Mtime is the tie-breaker for a name sort, so we need to resolve |
+ // it for both mtime and name sorts. |
cacheFunction = cacheEntryDate; |
} else if (field == 'cachedSize_') { |
cacheFunction = cacheEntrySize; |