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

Side by Side Diff: Source/modules/cachestorage/Cache.cpp

Issue 1320823003: CacheStorage: Show a warning message when unsupported CacheQueryOptions are specified (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: swap arguments Created 5 years, 3 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 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 "config.h" 5 #include "config.h"
6 #include "modules/cachestorage/Cache.h" 6 #include "modules/cachestorage/Cache.h"
7 7
8 #include "bindings/core/v8/CallbackPromiseAdapter.h" 8 #include "bindings/core/v8/CallbackPromiseAdapter.h"
9 #include "bindings/core/v8/ExceptionState.h" 9 #include "bindings/core/v8/ExceptionState.h"
10 #include "bindings/core/v8/ScriptPromiseResolver.h" 10 #include "bindings/core/v8/ScriptPromiseResolver.h"
11 #include "bindings/core/v8/ScriptState.h" 11 #include "bindings/core/v8/ScriptState.h"
12 #include "bindings/core/v8/V8Binding.h" 12 #include "bindings/core/v8/V8Binding.h"
13 #include "bindings/core/v8/V8ThrowException.h" 13 #include "bindings/core/v8/V8ThrowException.h"
14 #include "bindings/modules/v8/V8Response.h" 14 #include "bindings/modules/v8/V8Response.h"
15 #include "core/dom/DOMException.h" 15 #include "core/dom/DOMException.h"
16 #include "core/dom/ExceptionCode.h" 16 #include "core/dom/ExceptionCode.h"
17 #include "core/inspector/ConsoleMessage.h"
17 #include "modules/cachestorage/CacheStorageError.h" 18 #include "modules/cachestorage/CacheStorageError.h"
18 #include "modules/fetch/BodyStreamBuffer.h" 19 #include "modules/fetch/BodyStreamBuffer.h"
19 #include "modules/fetch/FetchDataLoader.h" 20 #include "modules/fetch/FetchDataLoader.h"
20 #include "modules/fetch/GlobalFetch.h" 21 #include "modules/fetch/GlobalFetch.h"
21 #include "modules/fetch/Request.h" 22 #include "modules/fetch/Request.h"
22 #include "modules/fetch/Response.h" 23 #include "modules/fetch/Response.h"
23 #include "public/platform/WebPassOwnPtr.h" 24 #include "public/platform/WebPassOwnPtr.h"
24 #include "public/platform/WebServiceWorkerCache.h" 25 #include "public/platform/WebServiceWorkerCache.h"
25 26
26 namespace blink { 27 namespace blink {
27 28
28 namespace { 29 namespace {
29 30
31 void checkCacheQueryOptions(const CacheQueryOptions& options, ExecutionContext* context)
32 {
33 if (options.ignoreSearch())
34 context->addConsoleMessage(ConsoleMessage::create(JSMessageSource, Warni ngMessageLevel, "Cache.match() does not support 'ignoreSearch' option yet. See h ttp://crbug.com/520784"));
35 if (options.ignoreMethod())
36 context->addConsoleMessage(ConsoleMessage::create(JSMessageSource, Warni ngMessageLevel, "Cache.match() does not support 'ignoreMethod' option yet. See h ttp://crbug.com/482256"));
37 if (options.ignoreVary())
38 context->addConsoleMessage(ConsoleMessage::create(JSMessageSource, Warni ngMessageLevel, "Cache.match() does not support 'ignoreVary' option yet. See htt p://crbug.com/499216"));
39 }
40
30 // FIXME: Consider using CallbackPromiseAdapter. 41 // FIXME: Consider using CallbackPromiseAdapter.
31 class CacheMatchCallbacks : public WebServiceWorkerCache::CacheMatchCallbacks { 42 class CacheMatchCallbacks : public WebServiceWorkerCache::CacheMatchCallbacks {
32 WTF_MAKE_NONCOPYABLE(CacheMatchCallbacks); 43 WTF_MAKE_NONCOPYABLE(CacheMatchCallbacks);
33 public: 44 public:
34 explicit CacheMatchCallbacks(ScriptPromiseResolver* resolver) 45 explicit CacheMatchCallbacks(ScriptPromiseResolver* resolver)
35 : m_resolver(resolver) { } 46 : m_resolver(resolver) { }
36 47
37 void onSuccess(const WebServiceWorkerResponse& webResponse) override 48 void onSuccess(const WebServiceWorkerResponse& webResponse) override
38 { 49 {
39 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped()) 50 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped())
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 } 401 }
391 402
392 Cache::Cache(WeakPtr<GlobalFetch::ScopedFetcher> fetcher, PassOwnPtr<WebServiceW orkerCache> webCache) 403 Cache::Cache(WeakPtr<GlobalFetch::ScopedFetcher> fetcher, PassOwnPtr<WebServiceW orkerCache> webCache)
393 : m_scopedFetcher(fetcher) 404 : m_scopedFetcher(fetcher)
394 , m_webCache(webCache) { } 405 , m_webCache(webCache) { }
395 406
396 ScriptPromise Cache::matchImpl(ScriptState* scriptState, const Request* request, const CacheQueryOptions& options) 407 ScriptPromise Cache::matchImpl(ScriptState* scriptState, const Request* request, const CacheQueryOptions& options)
397 { 408 {
398 WebServiceWorkerRequest webRequest; 409 WebServiceWorkerRequest webRequest;
399 request->populateWebServiceWorkerRequest(webRequest); 410 request->populateWebServiceWorkerRequest(webRequest);
411 checkCacheQueryOptions(options, scriptState->executionContext());
400 412
401 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 413 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
402 const ScriptPromise promise = resolver->promise(); 414 const ScriptPromise promise = resolver->promise();
403 m_webCache->dispatchMatch(new CacheMatchCallbacks(resolver), webRequest, toW ebQueryParams(options)); 415 m_webCache->dispatchMatch(new CacheMatchCallbacks(resolver), webRequest, toW ebQueryParams(options));
404 return promise; 416 return promise;
405 } 417 }
406 418
407 ScriptPromise Cache::matchAllImpl(ScriptState* scriptState) 419 ScriptPromise Cache::matchAllImpl(ScriptState* scriptState)
408 { 420 {
409 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 421 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
410 const ScriptPromise promise = resolver->promise(); 422 const ScriptPromise promise = resolver->promise();
411 m_webCache->dispatchMatchAll(new CacheWithResponsesCallbacks(resolver), WebS erviceWorkerRequest(), WebServiceWorkerCache::QueryParams()); 423 m_webCache->dispatchMatchAll(new CacheWithResponsesCallbacks(resolver), WebS erviceWorkerRequest(), WebServiceWorkerCache::QueryParams());
412 return promise; 424 return promise;
413 } 425 }
414 426
415 ScriptPromise Cache::matchAllImpl(ScriptState* scriptState, const Request* reque st, const CacheQueryOptions& options) 427 ScriptPromise Cache::matchAllImpl(ScriptState* scriptState, const Request* reque st, const CacheQueryOptions& options)
416 { 428 {
417 WebServiceWorkerRequest webRequest; 429 WebServiceWorkerRequest webRequest;
418 request->populateWebServiceWorkerRequest(webRequest); 430 request->populateWebServiceWorkerRequest(webRequest);
431 checkCacheQueryOptions(options, scriptState->executionContext());
419 432
420 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 433 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
421 const ScriptPromise promise = resolver->promise(); 434 const ScriptPromise promise = resolver->promise();
422 m_webCache->dispatchMatchAll(new CacheWithResponsesCallbacks(resolver), webR equest, toWebQueryParams(options)); 435 m_webCache->dispatchMatchAll(new CacheWithResponsesCallbacks(resolver), webR equest, toWebQueryParams(options));
423 return promise; 436 return promise;
424 } 437 }
425 438
426 ScriptPromise Cache::addAllImpl(ScriptState* scriptState, const HeapVector<Membe r<Request>>& requests, ExceptionState& exceptionState) 439 ScriptPromise Cache::addAllImpl(ScriptState* scriptState, const HeapVector<Membe r<Request>>& requests, ExceptionState& exceptionState)
427 { 440 {
428 if (requests.isEmpty()) 441 if (requests.isEmpty())
(...skipping 14 matching lines...) Expand all
443 } 456 }
444 457
445 return ScriptPromise::all(scriptState, promises).then(FetchResolvedForAdd::c reate(scriptState, this, requests)); 458 return ScriptPromise::all(scriptState, promises).then(FetchResolvedForAdd::c reate(scriptState, this, requests));
446 } 459 }
447 460
448 ScriptPromise Cache::deleteImpl(ScriptState* scriptState, const Request* request , const CacheQueryOptions& options) 461 ScriptPromise Cache::deleteImpl(ScriptState* scriptState, const Request* request , const CacheQueryOptions& options)
449 { 462 {
450 WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t(1)); 463 WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t(1));
451 batchOperations[0].operationType = WebServiceWorkerCache::OperationTypeDelet e; 464 batchOperations[0].operationType = WebServiceWorkerCache::OperationTypeDelet e;
452 request->populateWebServiceWorkerRequest(batchOperations[0].request); 465 request->populateWebServiceWorkerRequest(batchOperations[0].request);
466 checkCacheQueryOptions(options, scriptState->executionContext());
453 batchOperations[0].matchParams = toWebQueryParams(options); 467 batchOperations[0].matchParams = toWebQueryParams(options);
454 468
455 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 469 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
456 const ScriptPromise promise = resolver->promise(); 470 const ScriptPromise promise = resolver->promise();
457 m_webCache->dispatchBatch(new CacheDeleteCallback(resolver), batchOperations ); 471 m_webCache->dispatchBatch(new CacheDeleteCallback(resolver), batchOperations );
458 return promise; 472 return promise;
459 } 473 }
460 474
461 ScriptPromise Cache::putImpl(ScriptState* scriptState, const HeapVector<Member<R equest>>& requests, const HeapVector<Member<Response>>& responses) 475 ScriptPromise Cache::putImpl(ScriptState* scriptState, const HeapVector<Member<R equest>>& requests, const HeapVector<Member<Response>>& responses)
462 { 476 {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 526 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
513 const ScriptPromise promise = resolver->promise(); 527 const ScriptPromise promise = resolver->promise();
514 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, WebSer viceWorkerCache::QueryParams()); 528 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, WebSer viceWorkerCache::QueryParams());
515 return promise; 529 return promise;
516 } 530 }
517 531
518 ScriptPromise Cache::keysImpl(ScriptState* scriptState, const Request* request, const CacheQueryOptions& options) 532 ScriptPromise Cache::keysImpl(ScriptState* scriptState, const Request* request, const CacheQueryOptions& options)
519 { 533 {
520 WebServiceWorkerRequest webRequest; 534 WebServiceWorkerRequest webRequest;
521 request->populateWebServiceWorkerRequest(webRequest); 535 request->populateWebServiceWorkerRequest(webRequest);
536 checkCacheQueryOptions(options, scriptState->executionContext());
522 537
523 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 538 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
524 const ScriptPromise promise = resolver->promise(); 539 const ScriptPromise promise = resolver->promise();
525 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, toWebQ ueryParams(options)); 540 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, toWebQ ueryParams(options));
526 return promise; 541 return promise;
527 } 542 }
528 543
529 WebServiceWorkerCache* Cache::webCache() const 544 WebServiceWorkerCache* Cache::webCache() const
530 { 545 {
531 return m_webCache.get(); 546 return m_webCache.get();
532 } 547 }
533 548
534 } // namespace blink 549 } // namespace blink
OLDNEW
« no previous file with comments | « LayoutTests/http/tests/cachestorage/worker/cache-matchAll-expected.txt ('k') | Source/modules/cachestorage/CacheStorage.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698