OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "modules/cachestorage/CacheStorage.h" | 5 #include "modules/cachestorage/CacheStorage.h" |
6 | 6 |
7 #include "bindings/core/v8/ScriptPromiseResolver.h" | 7 #include "bindings/core/v8/ScriptPromiseResolver.h" |
8 #include "bindings/core/v8/ScriptState.h" | 8 #include "bindings/core/v8/ScriptState.h" |
9 #include "core/dom/DOMException.h" | 9 #include "core/dom/DOMException.h" |
10 #include "core/dom/ExceptionCode.h" | 10 #include "core/dom/ExceptionCode.h" |
11 #include "core/inspector/ConsoleMessage.h" | 11 #include "core/inspector/ConsoleMessage.h" |
12 #include "modules/cachestorage/CacheStorageError.h" | 12 #include "modules/cachestorage/CacheStorageError.h" |
13 #include "modules/fetch/Request.h" | 13 #include "modules/fetch/Request.h" |
14 #include "modules/fetch/Response.h" | 14 #include "modules/fetch/Response.h" |
15 #include "public/platform/modules/serviceworker/WebServiceWorkerCacheError.h" | 15 #include "public/platform/modules/serviceworker/WebServiceWorkerCacheError.h" |
16 #include "public/platform/modules/serviceworker/WebServiceWorkerCacheStorage.h" | 16 #include "public/platform/modules/serviceworker/WebServiceWorkerCacheStorage.h" |
17 #include "wtf/PtrUtil.h" | 17 #include "wtf/PtrUtil.h" |
18 #include <memory> | 18 #include <memory> |
| 19 #include <utility> |
19 | 20 |
20 namespace blink { | 21 namespace blink { |
21 | 22 |
22 namespace { | 23 namespace { |
23 | 24 |
24 DOMException* createNoImplementationException() { | 25 DOMException* createNoImplementationException() { |
25 return DOMException::create(NotSupportedError, | 26 return DOMException::create(NotSupportedError, |
26 "No CacheStorage implementation provided."); | 27 "No CacheStorage implementation provided."); |
27 } | 28 } |
28 | 29 |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
230 | 231 |
231 ScriptPromise CacheStorage::open(ScriptState* scriptState, | 232 ScriptPromise CacheStorage::open(ScriptState* scriptState, |
232 const String& cacheName, | 233 const String& cacheName, |
233 ExceptionState& exceptionState) { | 234 ExceptionState& exceptionState) { |
234 if (!commonChecks(scriptState, exceptionState)) | 235 if (!commonChecks(scriptState, exceptionState)) |
235 return ScriptPromise(); | 236 return ScriptPromise(); |
236 | 237 |
237 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); | 238 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
238 const ScriptPromise promise = resolver->promise(); | 239 const ScriptPromise promise = resolver->promise(); |
239 | 240 |
240 if (m_webCacheStorage) | 241 if (m_webCacheStorage) { |
241 m_webCacheStorage->dispatchOpen( | 242 m_webCacheStorage->dispatchOpen( |
242 new WithCacheCallbacks(cacheName, this, resolver), cacheName); | 243 WTF::makeUnique<WithCacheCallbacks>(cacheName, this, resolver), |
243 else | 244 cacheName); |
| 245 } else { |
244 resolver->reject(createNoImplementationException()); | 246 resolver->reject(createNoImplementationException()); |
| 247 } |
245 | 248 |
246 return promise; | 249 return promise; |
247 } | 250 } |
248 | 251 |
249 ScriptPromise CacheStorage::has(ScriptState* scriptState, | 252 ScriptPromise CacheStorage::has(ScriptState* scriptState, |
250 const String& cacheName, | 253 const String& cacheName, |
251 ExceptionState& exceptionState) { | 254 ExceptionState& exceptionState) { |
252 if (!commonChecks(scriptState, exceptionState)) | 255 if (!commonChecks(scriptState, exceptionState)) |
253 return ScriptPromise(); | 256 return ScriptPromise(); |
254 | 257 |
255 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); | 258 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
256 const ScriptPromise promise = resolver->promise(); | 259 const ScriptPromise promise = resolver->promise(); |
257 | 260 |
258 if (m_webCacheStorage) | 261 if (m_webCacheStorage) { |
259 m_webCacheStorage->dispatchHas(new Callbacks(resolver), cacheName); | 262 m_webCacheStorage->dispatchHas(WTF::makeUnique<Callbacks>(resolver), |
260 else | 263 cacheName); |
| 264 } else { |
261 resolver->reject(createNoImplementationException()); | 265 resolver->reject(createNoImplementationException()); |
| 266 } |
262 | 267 |
263 return promise; | 268 return promise; |
264 } | 269 } |
265 | 270 |
266 ScriptPromise CacheStorage::deleteFunction(ScriptState* scriptState, | 271 ScriptPromise CacheStorage::deleteFunction(ScriptState* scriptState, |
267 const String& cacheName, | 272 const String& cacheName, |
268 ExceptionState& exceptionState) { | 273 ExceptionState& exceptionState) { |
269 if (!commonChecks(scriptState, exceptionState)) | 274 if (!commonChecks(scriptState, exceptionState)) |
270 return ScriptPromise(); | 275 return ScriptPromise(); |
271 | 276 |
272 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); | 277 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
273 const ScriptPromise promise = resolver->promise(); | 278 const ScriptPromise promise = resolver->promise(); |
274 | 279 |
275 if (m_webCacheStorage) | 280 if (m_webCacheStorage) { |
276 m_webCacheStorage->dispatchDelete( | 281 m_webCacheStorage->dispatchDelete( |
277 new DeleteCallbacks(cacheName, this, resolver), cacheName); | 282 WTF::makeUnique<DeleteCallbacks>(cacheName, this, resolver), cacheName); |
278 else | 283 } else { |
279 resolver->reject(createNoImplementationException()); | 284 resolver->reject(createNoImplementationException()); |
| 285 } |
280 | 286 |
281 return promise; | 287 return promise; |
282 } | 288 } |
283 | 289 |
284 ScriptPromise CacheStorage::keys(ScriptState* scriptState, | 290 ScriptPromise CacheStorage::keys(ScriptState* scriptState, |
285 ExceptionState& exceptionState) { | 291 ExceptionState& exceptionState) { |
286 if (!commonChecks(scriptState, exceptionState)) | 292 if (!commonChecks(scriptState, exceptionState)) |
287 return ScriptPromise(); | 293 return ScriptPromise(); |
288 | 294 |
289 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); | 295 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
290 const ScriptPromise promise = resolver->promise(); | 296 const ScriptPromise promise = resolver->promise(); |
291 | 297 |
292 if (m_webCacheStorage) | 298 if (m_webCacheStorage) |
293 m_webCacheStorage->dispatchKeys(new KeysCallbacks(resolver)); | 299 m_webCacheStorage->dispatchKeys(WTF::makeUnique<KeysCallbacks>(resolver)); |
294 else | 300 else |
295 resolver->reject(createNoImplementationException()); | 301 resolver->reject(createNoImplementationException()); |
296 | 302 |
297 return promise; | 303 return promise; |
298 } | 304 } |
299 | 305 |
300 ScriptPromise CacheStorage::match(ScriptState* scriptState, | 306 ScriptPromise CacheStorage::match(ScriptState* scriptState, |
301 const RequestInfo& request, | 307 const RequestInfo& request, |
302 const CacheQueryOptions& options, | 308 const CacheQueryOptions& options, |
303 ExceptionState& exceptionState) { | 309 ExceptionState& exceptionState) { |
(...skipping 18 matching lines...) Expand all Loading... |
322 | 328 |
323 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); | 329 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
324 const ScriptPromise promise = resolver->promise(); | 330 const ScriptPromise promise = resolver->promise(); |
325 | 331 |
326 if (request->method() != HTTPNames::GET && !options.ignoreMethod()) { | 332 if (request->method() != HTTPNames::GET && !options.ignoreMethod()) { |
327 resolver->resolve(); | 333 resolver->resolve(); |
328 return promise; | 334 return promise; |
329 } | 335 } |
330 | 336 |
331 if (m_webCacheStorage) | 337 if (m_webCacheStorage) |
332 m_webCacheStorage->dispatchMatch(new MatchCallbacks(resolver), webRequest, | 338 m_webCacheStorage->dispatchMatch(WTF::makeUnique<MatchCallbacks>(resolver), |
| 339 webRequest, |
333 Cache::toWebQueryParams(options)); | 340 Cache::toWebQueryParams(options)); |
334 else | 341 else |
335 resolver->reject(createNoImplementationException()); | 342 resolver->reject(createNoImplementationException()); |
336 | 343 |
337 return promise; | 344 return promise; |
338 } | 345 } |
339 | 346 |
340 CacheStorage::CacheStorage( | 347 CacheStorage::CacheStorage( |
341 GlobalFetch::ScopedFetcher* fetcher, | 348 GlobalFetch::ScopedFetcher* fetcher, |
342 std::unique_ptr<WebServiceWorkerCacheStorage> webCacheStorage) | 349 std::unique_ptr<WebServiceWorkerCacheStorage> webCacheStorage) |
343 : m_scopedFetcher(fetcher), m_webCacheStorage(std::move(webCacheStorage)) {} | 350 : m_scopedFetcher(fetcher), m_webCacheStorage(std::move(webCacheStorage)) {} |
344 | 351 |
345 CacheStorage::~CacheStorage() {} | 352 CacheStorage::~CacheStorage() {} |
346 | 353 |
347 void CacheStorage::dispose() { | 354 void CacheStorage::dispose() { |
348 m_webCacheStorage.reset(); | 355 m_webCacheStorage.reset(); |
349 } | 356 } |
350 | 357 |
351 DEFINE_TRACE(CacheStorage) { | 358 DEFINE_TRACE(CacheStorage) { |
352 visitor->trace(m_scopedFetcher); | 359 visitor->trace(m_scopedFetcher); |
353 } | 360 } |
354 | 361 |
355 } // namespace blink | 362 } // namespace blink |
OLD | NEW |