OLD | NEW |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |