Chromium Code Reviews| 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) && |