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

Unified Diff: ui/file_manager/file_manager/foreground/js/metadata/new_metadata_provider.js

Issue 971653003: Files.app: Extract cache part from NewMetadataProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix audio player. Created 5 years, 10 months 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: ui/file_manager/file_manager/foreground/js/metadata/new_metadata_provider.js
diff --git a/ui/file_manager/file_manager/foreground/js/metadata/new_metadata_provider.js b/ui/file_manager/file_manager/foreground/js/metadata/new_metadata_provider.js
index fc088271f96b6d65b8d3d6a4e423ee8efb029116..6f63f02622e3fcc6df4b0f36ffbadfb32b17fbe1 100644
--- a/ui/file_manager/file_manager/foreground/js/metadata/new_metadata_provider.js
+++ b/ui/file_manager/file_manager/foreground/js/metadata/new_metadata_provider.js
@@ -4,18 +4,11 @@
/**
* TODO(hirono): Remove 'New' from the name after removing old MetadataProvider.
- * @param {!MetadataProviderCache} cache
* @param {!Array<string>} validPropertyNames
* @constructor
* @struct
*/
-function NewMetadataProvider(cache, validPropertyNames) {
- /**
- * @private {!MetadataProviderCache}
- * @const
- */
- this.cache_ = cache;
-
+function NewMetadataProvider(validPropertyNames) {
/**
* Set of valid property names. Key is the name of property and value is
* always true.
@@ -26,14 +19,15 @@ function NewMetadataProvider(cache, validPropertyNames) {
for (var i = 0; i < validPropertyNames.length; i++) {
this.validPropertyNames_[validPropertyNames[i]] = true;
}
-
- /**
- * @private {!Array<!MetadataProviderCallbackRequest<T>>}
- * @const
- */
- this.callbackRequests_ = [];
}
+NewMetadataProvider.prototype.checkPropertyNames = function(names) {
+ // Check if the property name is correct or not.
+ for (var i = 0; i < names.length; i++) {
+ assert(this.validPropertyNames_[names[i]]);
+ }
+};
+
/**
* Obtains the metadata for the request.
* @param {!Array<!MetadataRequest>} requests
@@ -41,9 +35,40 @@ function NewMetadataProvider(cache, validPropertyNames) {
* should not return rejected promise. Instead it should return undefined
* property for property error, and should return empty MetadataItem for
* entry error.
- * @protected
*/
-NewMetadataProvider.prototype.getImpl;
+NewMetadataProvider.prototype.get;
+
+/**
+ * @param {!NewMetadataProvider} rawProvider
+ * @constructor
+ * @struct
+ */
+function CachedMetadataProvider(rawProvider) {
+ /**
+ * @private {!NewMetadataProvider}
+ * @const
+ */
+ this.rawProvider_ = rawProvider;
+
+ /**
+ * @private {!MetadataProviderCache}
+ * @const
+ */
+ this.cache_ = new MetadataProviderCache();
+
+ /**
+ * @private {!Array<!MetadataProviderCallbackRequest<T>>}
+ * @const
+ */
+ this.callbackRequests_ = [];
+}
+
+/**
+ * @return {!NewMetadataProvider}
+ */
+CachedMetadataProvider.prototype.getRawProvider = function() {
+ return this.rawProvider_;
+};
/**
* Obtains metadata for entries.
@@ -51,11 +76,8 @@ NewMetadataProvider.prototype.getImpl;
* @param {!Array<string>} names Metadata property names to be obtained.
* @return {!Promise<!Array<!MetadataItem>>}
*/
-NewMetadataProvider.prototype.get = function(entries, names) {
- // Check if the property name is correct or not.
- for (var i = 0; i < names.length; i++) {
- assert(this.validPropertyNames_[names[i]]);
- }
+CachedMetadataProvider.prototype.get = function(entries, names) {
+ this.rawProvider_.checkPropertyNames(names);
// Check if the results are cached or not.
if (this.cache_.hasFreshCache(entries, names))
@@ -77,7 +99,7 @@ NewMetadataProvider.prototype.get = function(entries, names) {
// If the requests are not empty, call the requests.
if (requests.length) {
- this.getImpl(requests).then(function(list) {
+ this.rawProvider_.get(requests).then(function(list) {
// Obtain requested entries and ensure all the requested properties are
// contained in the result.
var requestedEntries = [];
@@ -116,15 +138,54 @@ NewMetadataProvider.prototype.get = function(entries, names) {
* @param {!Array<string>} names Metadata property names to be obtained.
* @return {!Array<!MetadataItem>}
*/
-NewMetadataProvider.prototype.getCache = function(entries, names) {
+CachedMetadataProvider.prototype.getCache = function(entries, names) {
// Check if the property name is correct or not.
- for (var i = 0; i < names.length; i++) {
- assert(this.validPropertyNames_[names[i]]);
- }
+ this.rawProvider_.checkPropertyNames(names);
return this.cache_.get(entries, names);
};
/**
+ * Clears old metadata for newly created entries.
+ * @param {!Array<!Entry>} entries
+ */
+CachedMetadataProvider.prototype.notifyEntriesCreated = function(entries) {
+ this.cache_.clear(util.entriesToURLs(entries));
+};
+
+/**
+ * Clears metadata for deleted entries.
+ * @param {!Array<string>} urls Note it is not an entry list because we cannot
+ * obtain entries after removing them from the file system.
+ */
+CachedMetadataProvider.prototype.notifyEntriesRemoved = function(urls) {
+ this.cache_.clear(urls);
+};
+
+/**
+ * Invalidates metadata for updated entries.
+ * @param {!Array<!Entry>} entries
+ */
+CachedMetadataProvider.prototype.notifyEntriesChanged = function(entries) {
+ this.cache_.invalidate(this.cache_.generateRequestId(), entries);
+};
+
+/**
+ * Clears all cache.
+ */
+CachedMetadataProvider.prototype.clearAllCache = function() {
+ this.cache_.clearAll();
+};
+
+/**
+ * Adds event listener to internal cache object.
+ * @param {string} type
+ * @param {function(Event):undefined} callback
+ */
+CachedMetadataProvider.prototype.addEventListener = function(type, callback) {
+ this.cache_.addEventListener(type, callback);
+};
+
+/**
* @param {!Array<!Entry>} entries
* @param {!Array<string>} names
* @param {!MetadataCacheSet} cache

Powered by Google App Engine
This is Rietveld 408576698