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

Unified Diff: chrome/browser/resources/file_manager/foreground/js/metadata/metadata_cache.js

Issue 113293007: [Files.app] Change sort timing during metadata fetch (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years 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/foreground/js/metadata/metadata_cache.js
diff --git a/chrome/browser/resources/file_manager/foreground/js/metadata/metadata_cache.js b/chrome/browser/resources/file_manager/foreground/js/metadata/metadata_cache.js
index 75dabec132323901386012c85aa231ec7e35a55c..b164d91e5e8ac335898e12b30ca1706c559c7ab0 100644
--- a/chrome/browser/resources/file_manager/foreground/js/metadata/metadata_cache.js
+++ b/chrome/browser/resources/file_manager/foreground/js/metadata/metadata_cache.js
@@ -77,6 +77,8 @@ function MetadataCache() {
this.batchCount_ = 0;
this.totalCount_ = 0;
+ this.currentContentNumber_ = 0;
+
/**
* Time of first get query of the current batch. Items updated later than this
* will not be evicted.
@@ -159,6 +161,29 @@ MetadataCache.prototype.isInitialized = function() {
};
/**
+ * Sets the number of contents currently shown.
+ * @param {number} number The number of the contents currently shown.
+ **/
+MetadataCache.prototype.setCurrentContentNumber = function(number) {
+ this.currentContentNumber_ = number;
+
+ if (this.totalCount_ > this.currentEvictionNumber_())
+ this.evict_();
+};
+
+/**
+ * Returns the current threshold to evict caches. When the number of caches
+ * exceeds this, the cache should be evicted.
+ * @return {number} Threshold to evict caches.
+ * @private
+ */
+MetadataCache.prototype.currentEvictionThreshold_ = function() {
+ var desiredNumber =
+ this.currentContentNumber_ * 2 + MetadataCache.EVICTION_NUMBER / 2;
+ return desiredNumber;
hirono 2013/12/17 11:35:15 nit: How about just returning the expression.
yoshiki 2013/12/17 12:11:40 Done.
+};
+
+/**
* Fetches the metadata, puts it in the cache, and passes to callback.
* If required metadata is already in the cache, does not fetch it again.
* @param {string|Entry|Array.<string|Entry>} items The list of entries or
@@ -456,7 +481,7 @@ MetadataCache.prototype.startBatchUpdates = function() {
MetadataCache.prototype.endBatchUpdates = function() {
this.batchCount_--;
if (this.batchCount_ != 0) return;
- if (this.totalCount_ > MetadataCache.EVICTION_NUMBER)
+ if (this.totalCount_ > this.currentEvictionThreshold_())
this.evict_();
for (var index = 0; index < this.observers_.length; index++) {
var observer = this.observers_[index];
@@ -504,7 +529,7 @@ MetadataCache.prototype.evict_ = function() {
var toRemove = [];
// We leave only a half of items, so we will not call evict_ soon again.
- var desiredCount = Math.round(MetadataCache.EVICTION_NUMBER / 2);
+ var desiredCount = Math.round(this.currentEvictionThreshold_() / 2);
var removeCount = this.totalCount_ - desiredCount;
for (var url in this.cache_) {
if (this.cache_.hasOwnProperty(url) &&

Powered by Google App Engine
This is Rietveld 408576698