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

Side by Side Diff: ui/file_manager/file_manager/foreground/js/metadata/metadata_cache_set.js

Issue 971163002: Files.app: Let MetadataCacheModel use cached URLs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add comment. Created 5 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * Set of MetadataCacheItem. 6 * Set of MetadataCacheItem.
7 * @param {!MetadataCacheSetStorage} items Storage object containing 7 * @param {!MetadataCacheSetStorage} items Storage object containing
8 * MetadataCacheItem. 8 * MetadataCacheItem.
9 * @extends {cr.EventTarget} 9 * @extends {cr.EventTarget}
10 * @constructor 10 * @constructor
(...skipping 12 matching lines...) Expand all
23 23
24 MetadataCacheSet.prototype.__proto__ = cr.EventTarget.prototype; 24 MetadataCacheSet.prototype.__proto__ = cr.EventTarget.prototype;
25 25
26 /** 26 /**
27 * Creates list of MetadataRequest based on the cache state. 27 * Creates list of MetadataRequest based on the cache state.
28 * @param {!Array<!Entry>} entries 28 * @param {!Array<!Entry>} entries
29 * @param {!Array<string>} names 29 * @param {!Array<string>} names
30 * @return {!Array<!MetadataRequest>} 30 * @return {!Array<!MetadataRequest>}
31 */ 31 */
32 MetadataCacheSet.prototype.createRequests = function(entries, names) { 32 MetadataCacheSet.prototype.createRequests = function(entries, names) {
33 var urls = util.entriesToURLs(entries);
33 var requests = []; 34 var requests = [];
34 for (var i = 0; i < entries.length; i++) { 35 for (var i = 0; i < entries.length; i++) {
35 var item = this.items_.peek(entries[i].toURL()); 36 var item = this.items_.peek(urls[i]);
36 var requestedNames = item ? item.createRequests(names) : names; 37 var requestedNames = item ? item.createRequests(names) : names;
37 if (requestedNames.length) 38 if (requestedNames.length)
38 requests.push(new MetadataRequest(entries[i], requestedNames)); 39 requests.push(new MetadataRequest(entries[i], requestedNames));
39 } 40 }
40 return requests; 41 return requests;
41 }; 42 };
42 43
43 /** 44 /**
44 * Updates cache states to start the given requests. 45 * Updates cache states to start the given requests.
45 * @param {number} requestId 46 * @param {number} requestId
46 * @param {!Array<!MetadataRequest>} requests 47 * @param {!Array<!MetadataRequest>} requests
47 */ 48 */
48 MetadataCacheSet.prototype.startRequests = function(requestId, requests) { 49 MetadataCacheSet.prototype.startRequests = function(requestId, requests) {
49 for (var i = 0; i < requests.length; i++) { 50 for (var i = 0; i < requests.length; i++) {
50 var request = requests[i]; 51 var request = requests[i];
51 var url = request.entry.toURL(); 52 var url = requests[i].entry.cachedUrl || requests[i].entry.toURL();
52 var item = this.items_.peek(url); 53 var item = this.items_.peek(url);
53 if (!item) { 54 if (!item) {
54 item = new MetadataCacheItem(); 55 item = new MetadataCacheItem();
55 this.items_.put(url, item); 56 this.items_.put(url, item);
56 } 57 }
57 item.startRequests(requestId, request.names); 58 item.startRequests(requestId, request.names);
58 } 59 }
59 }; 60 };
60 61
61 /** 62 /**
62 * Stores results from NewMetadataProvider with the request Id. 63 * Stores results from NewMetadataProvider with the request Id.
63 * @param {number} requestId Request ID. If a newer operation has already been 64 * @param {number} requestId Request ID. If a newer operation has already been
64 * done, the results must be ingored. 65 * done, the results must be ingored.
65 * @param {!Array<!Entry>} entries 66 * @param {!Array<!Entry>} entries
66 * @param {!Array<!MetadataItem>} results 67 * @param {!Array<!MetadataItem>} results
67 * @return {boolean} Whether at least one result is stored or not. 68 * @return {boolean} Whether at least one result is stored or not.
68 */ 69 */
69 MetadataCacheSet.prototype.storeProperties = function( 70 MetadataCacheSet.prototype.storeProperties = function(
70 requestId, entries, results) { 71 requestId, entries, results) {
71 var changedEntries = []; 72 var changedEntries = [];
73 var urls = util.entriesToURLs(entries);
72 for (var i = 0; i < entries.length; i++) { 74 for (var i = 0; i < entries.length; i++) {
73 var url = entries[i].toURL(); 75 var url = urls[i];
74 var item = this.items_.peek(url); 76 var item = this.items_.peek(url);
75 if (item && item.storeProperties(requestId, results[i])) 77 if (item && item.storeProperties(requestId, results[i]))
76 changedEntries.push(entries[i]); 78 changedEntries.push(entries[i]);
77 } 79 }
78 if (changedEntries.length) { 80 if (changedEntries.length) {
79 var event = new Event('update'); 81 var event = new Event('update');
80 event.entries = changedEntries; 82 event.entries = changedEntries;
81 this.dispatchEvent(event); 83 this.dispatchEvent(event);
82 return true; 84 return true;
83 } else { 85 } else {
84 return false; 86 return false;
85 } 87 }
86 }; 88 };
87 89
88 /** 90 /**
89 * Obtains cached properties for entries and names. 91 * Obtains cached properties for entries and names.
90 * Note that it returns invalidated properties also. 92 * Note that it returns invalidated properties also.
91 * @param {!Array<!Entry>} entries Entries. 93 * @param {!Array<!Entry>} entries Entries.
92 * @param {!Array<string>} names Property names. 94 * @param {!Array<string>} names Property names.
93 */ 95 */
94 MetadataCacheSet.prototype.get = function(entries, names) { 96 MetadataCacheSet.prototype.get = function(entries, names) {
95 var results = []; 97 var results = [];
98 var urls = util.entriesToURLs(entries);
96 for (var i = 0; i < entries.length; i++) { 99 for (var i = 0; i < entries.length; i++) {
97 var item = this.items_.get(entries[i].toURL()); 100 var item = this.items_.get(urls[i]);
98 results.push(item ? item.get(names) : {}); 101 results.push(item ? item.get(names) : {});
99 } 102 }
100 return results; 103 return results;
101 }; 104 };
102 105
103 /** 106 /**
104 * Marks the caches of entries as invalidates and forces to reload at the next 107 * Marks the caches of entries as invalidates and forces to reload at the next
105 * time of startRequests. 108 * time of startRequests.
106 * @param {number} requestId Request ID of the invalidation request. This must 109 * @param {number} requestId Request ID of the invalidation request. This must
107 * be larger than other requets ID passed to the set before. 110 * be larger than other requets ID passed to the set before.
108 * @param {!Array<!Entry>} entries 111 * @param {!Array<!Entry>} entries
109 */ 112 */
110 MetadataCacheSet.prototype.invalidate = function(requestId, entries) { 113 MetadataCacheSet.prototype.invalidate = function(requestId, entries) {
114 var urls = util.entriesToURLs(entries);
111 for (var i = 0; i < entries.length; i++) { 115 for (var i = 0; i < entries.length; i++) {
112 var item = this.items_.peek(entries[i].toURL()); 116 var item = this.items_.peek(urls[i]);
113 if (item) 117 if (item)
114 item.invalidate(requestId); 118 item.invalidate(requestId);
115 } 119 }
116 }; 120 };
117 121
118 /** 122 /**
119 * Clears the caches of entries. 123 * Clears the caches of entries.
120 * @param {!Array<string>} urls 124 * @param {!Array<string>} urls
121 */ 125 */
122 MetadataCacheSet.prototype.clear = function(urls) { 126 MetadataCacheSet.prototype.clear = function(urls) {
123 for (var i = 0; i < urls.length; i++) { 127 for (var i = 0; i < urls.length; i++) {
124 this.items_.remove(urls[i]); 128 this.items_.remove(urls[i]);
125 } 129 }
126 }; 130 };
127 131
128 /** 132 /**
129 * Clears all cache. 133 * Clears all cache.
130 */ 134 */
131 MetadataCacheSet.prototype.clearAll = function() { 135 MetadataCacheSet.prototype.clearAll = function() {
132 this.items_.removeAll(); 136 this.items_.removeAll();
133 }; 137 };
134 138
135 /** 139 /**
136 * Creates snapshot of the cache for entries. 140 * Creates snapshot of the cache for entries.
137 * @param {!Array<!Entry>} entries 141 * @param {!Array<!Entry>} entries
138 */ 142 */
139 MetadataCacheSet.prototype.createSnapshot = function(entries) { 143 MetadataCacheSet.prototype.createSnapshot = function(entries) {
140 var items = {}; 144 var items = {};
145 var urls = util.entriesToURLs(entries);
141 for (var i = 0; i < entries.length; i++) { 146 for (var i = 0; i < entries.length; i++) {
142 var url = entries[i].toURL(); 147 var url = urls[i];
143 var item = this.items_.peek(url); 148 var item = this.items_.peek(url);
144 if (item) 149 if (item)
145 items[url] = item.clone(); 150 items[url] = item.clone();
146 } 151 }
147 return new MetadataCacheSet(new MetadataCacheSetStorageForObject(items)); 152 return new MetadataCacheSet(new MetadataCacheSetStorageForObject(items));
148 }; 153 };
149 154
150 /** 155 /**
151 * Returns whether all the given properties are fulfilled. 156 * Returns whether all the given properties are fulfilled.
152 * @param {!Array<!Entry>} entries Entries. 157 * @param {!Array<!Entry>} entries Entries.
153 * @param {!Array<string>} names Property names. 158 * @param {!Array<string>} names Property names.
154 * @return {boolean} 159 * @return {boolean}
155 */ 160 */
156 MetadataCacheSet.prototype.hasFreshCache = function(entries, names) { 161 MetadataCacheSet.prototype.hasFreshCache = function(entries, names) {
157 if (!names.length) 162 if (!names.length)
158 return true; 163 return true;
164 var urls = util.entriesToURLs(entries);
159 for (var i = 0; i < entries.length; i++) { 165 for (var i = 0; i < entries.length; i++) {
160 var item = this.items_.peek(entries[i].toURL()); 166 var item = this.items_.peek(urls[i]);
161 if (!(item && item.hasFreshCache(names))) 167 if (!(item && item.hasFreshCache(names)))
162 return false; 168 return false;
163 } 169 }
164 return true; 170 return true;
165 }; 171 };
166 172
167 /** 173 /**
168 * Interface of raw strage for MetadataCacheItem. 174 * Interface of raw strage for MetadataCacheItem.
169 * @interface 175 * @interface
170 */ 176 */
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 * @const 321 * @const
316 */ 322 */
317 this.entry = entry; 323 this.entry = entry;
318 324
319 /** 325 /**
320 * @public {!Array<string>} 326 * @public {!Array<string>}
321 * @const 327 * @const
322 */ 328 */
323 this.names = names; 329 this.names = names;
324 } 330 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698