| 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 "content/renderer/cache_storage/cache_storage_dispatcher.h" | 5 #include "content/renderer/cache_storage/cache_storage_dispatcher.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <memory> |
| 10 #include <string> | 11 #include <string> |
| 11 #include <utility> | 12 #include <utility> |
| 12 | 13 |
| 13 #include "base/lazy_instance.h" | 14 #include "base/lazy_instance.h" |
| 14 #include "base/logging.h" | 15 #include "base/logging.h" |
| 15 #include "base/metrics/histogram_macros.h" | 16 #include "base/metrics/histogram_macros.h" |
| 16 #include "base/strings/utf_string_conversions.h" | 17 #include "base/strings/utf_string_conversions.h" |
| 17 #include "base/threading/thread_local.h" | 18 #include "base/threading/thread_local.h" |
| 18 #include "content/child/thread_safe_sender.h" | 19 #include "content/child/thread_safe_sender.h" |
| 19 #include "content/common/cache_storage/cache_storage_messages.h" | 20 #include "content/common/cache_storage/cache_storage_messages.h" |
| (...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 508 cache_batch_callbacks_.Lookup(request_id); | 509 cache_batch_callbacks_.Lookup(request_id); |
| 509 callbacks->onError(blink::WebServiceWorkerCacheError(reason)); | 510 callbacks->onError(blink::WebServiceWorkerCacheError(reason)); |
| 510 cache_batch_callbacks_.Remove(request_id); | 511 cache_batch_callbacks_.Remove(request_id); |
| 511 cache_batch_times_.erase(request_id); | 512 cache_batch_times_.erase(request_id); |
| 512 } | 513 } |
| 513 | 514 |
| 514 void CacheStorageDispatcher::dispatchHas( | 515 void CacheStorageDispatcher::dispatchHas( |
| 515 WebServiceWorkerCacheStorage::CacheStorageCallbacks* callbacks, | 516 WebServiceWorkerCacheStorage::CacheStorageCallbacks* callbacks, |
| 516 const url::Origin& origin, | 517 const url::Origin& origin, |
| 517 const blink::WebString& cacheName) { | 518 const blink::WebString& cacheName) { |
| 518 int request_id = has_callbacks_.Add(callbacks); | 519 int request_id = has_callbacks_.Add( |
| 520 std::unique_ptr<WebServiceWorkerCacheStorage::CacheStorageCallbacks>( |
| 521 callbacks)); |
| 519 has_times_[request_id] = base::TimeTicks::Now(); | 522 has_times_[request_id] = base::TimeTicks::Now(); |
| 520 Send(new CacheStorageHostMsg_CacheStorageHas(CurrentWorkerId(), request_id, | 523 Send(new CacheStorageHostMsg_CacheStorageHas(CurrentWorkerId(), request_id, |
| 521 origin, cacheName)); | 524 origin, cacheName)); |
| 522 } | 525 } |
| 523 | 526 |
| 524 void CacheStorageDispatcher::dispatchOpen( | 527 void CacheStorageDispatcher::dispatchOpen( |
| 525 WebServiceWorkerCacheStorage::CacheStorageWithCacheCallbacks* callbacks, | 528 WebServiceWorkerCacheStorage::CacheStorageWithCacheCallbacks* callbacks, |
| 526 const url::Origin& origin, | 529 const url::Origin& origin, |
| 527 const blink::WebString& cacheName) { | 530 const blink::WebString& cacheName) { |
| 528 int request_id = open_callbacks_.Add(callbacks); | 531 int request_id = open_callbacks_.Add( |
| 532 std::unique_ptr< |
| 533 WebServiceWorkerCacheStorage::CacheStorageWithCacheCallbacks>( |
| 534 callbacks)); |
| 529 open_times_[request_id] = base::TimeTicks::Now(); | 535 open_times_[request_id] = base::TimeTicks::Now(); |
| 530 Send(new CacheStorageHostMsg_CacheStorageOpen(CurrentWorkerId(), request_id, | 536 Send(new CacheStorageHostMsg_CacheStorageOpen(CurrentWorkerId(), request_id, |
| 531 origin, cacheName)); | 537 origin, cacheName)); |
| 532 } | 538 } |
| 533 | 539 |
| 534 void CacheStorageDispatcher::dispatchDelete( | 540 void CacheStorageDispatcher::dispatchDelete( |
| 535 WebServiceWorkerCacheStorage::CacheStorageCallbacks* callbacks, | 541 WebServiceWorkerCacheStorage::CacheStorageCallbacks* callbacks, |
| 536 const url::Origin& origin, | 542 const url::Origin& origin, |
| 537 const blink::WebString& cacheName) { | 543 const blink::WebString& cacheName) { |
| 538 int request_id = delete_callbacks_.Add(callbacks); | 544 int request_id = delete_callbacks_.Add( |
| 545 std::unique_ptr<WebServiceWorkerCacheStorage::CacheStorageCallbacks>( |
| 546 callbacks)); |
| 539 delete_times_[request_id] = base::TimeTicks::Now(); | 547 delete_times_[request_id] = base::TimeTicks::Now(); |
| 540 Send(new CacheStorageHostMsg_CacheStorageDelete(CurrentWorkerId(), request_id, | 548 Send(new CacheStorageHostMsg_CacheStorageDelete(CurrentWorkerId(), request_id, |
| 541 origin, cacheName)); | 549 origin, cacheName)); |
| 542 } | 550 } |
| 543 | 551 |
| 544 void CacheStorageDispatcher::dispatchKeys( | 552 void CacheStorageDispatcher::dispatchKeys( |
| 545 WebServiceWorkerCacheStorage::CacheStorageKeysCallbacks* callbacks, | 553 WebServiceWorkerCacheStorage::CacheStorageKeysCallbacks* callbacks, |
| 546 const url::Origin& origin) { | 554 const url::Origin& origin) { |
| 547 int request_id = keys_callbacks_.Add(callbacks); | 555 int request_id = keys_callbacks_.Add( |
| 556 std::unique_ptr<WebServiceWorkerCacheStorage::CacheStorageKeysCallbacks>( |
| 557 callbacks)); |
| 548 keys_times_[request_id] = base::TimeTicks::Now(); | 558 keys_times_[request_id] = base::TimeTicks::Now(); |
| 549 Send(new CacheStorageHostMsg_CacheStorageKeys(CurrentWorkerId(), request_id, | 559 Send(new CacheStorageHostMsg_CacheStorageKeys(CurrentWorkerId(), request_id, |
| 550 origin)); | 560 origin)); |
| 551 } | 561 } |
| 552 | 562 |
| 553 void CacheStorageDispatcher::dispatchMatch( | 563 void CacheStorageDispatcher::dispatchMatch( |
| 554 WebServiceWorkerCacheStorage::CacheStorageMatchCallbacks* callbacks, | 564 WebServiceWorkerCacheStorage::CacheStorageMatchCallbacks* callbacks, |
| 555 const url::Origin& origin, | 565 const url::Origin& origin, |
| 556 const blink::WebServiceWorkerRequest& request, | 566 const blink::WebServiceWorkerRequest& request, |
| 557 const blink::WebServiceWorkerCache::QueryParams& query_params) { | 567 const blink::WebServiceWorkerCache::QueryParams& query_params) { |
| 558 int request_id = match_callbacks_.Add(callbacks); | 568 int request_id = match_callbacks_.Add( |
| 569 std::unique_ptr<WebServiceWorkerCacheStorage::CacheStorageMatchCallbacks>( |
| 570 callbacks)); |
| 559 match_times_[request_id] = base::TimeTicks::Now(); | 571 match_times_[request_id] = base::TimeTicks::Now(); |
| 560 Send(new CacheStorageHostMsg_CacheStorageMatch( | 572 Send(new CacheStorageHostMsg_CacheStorageMatch( |
| 561 CurrentWorkerId(), request_id, origin, | 573 CurrentWorkerId(), request_id, origin, |
| 562 FetchRequestFromWebRequest(request), | 574 FetchRequestFromWebRequest(request), |
| 563 QueryParamsFromWebQueryParams(query_params))); | 575 QueryParamsFromWebQueryParams(query_params))); |
| 564 } | 576 } |
| 565 | 577 |
| 566 void CacheStorageDispatcher::dispatchMatchForCache( | 578 void CacheStorageDispatcher::dispatchMatchForCache( |
| 567 int cache_id, | 579 int cache_id, |
| 568 blink::WebServiceWorkerCache::CacheMatchCallbacks* callbacks, | 580 blink::WebServiceWorkerCache::CacheMatchCallbacks* callbacks, |
| 569 const blink::WebServiceWorkerRequest& request, | 581 const blink::WebServiceWorkerRequest& request, |
| 570 const blink::WebServiceWorkerCache::QueryParams& query_params) { | 582 const blink::WebServiceWorkerCache::QueryParams& query_params) { |
| 571 int request_id = cache_match_callbacks_.Add(callbacks); | 583 int request_id = cache_match_callbacks_.Add( |
| 584 std::unique_ptr<blink::WebServiceWorkerCache::CacheMatchCallbacks>( |
| 585 callbacks)); |
| 572 cache_match_times_[request_id] = base::TimeTicks::Now(); | 586 cache_match_times_[request_id] = base::TimeTicks::Now(); |
| 573 | 587 |
| 574 Send(new CacheStorageHostMsg_CacheMatch( | 588 Send(new CacheStorageHostMsg_CacheMatch( |
| 575 CurrentWorkerId(), request_id, cache_id, | 589 CurrentWorkerId(), request_id, cache_id, |
| 576 FetchRequestFromWebRequest(request), | 590 FetchRequestFromWebRequest(request), |
| 577 QueryParamsFromWebQueryParams(query_params))); | 591 QueryParamsFromWebQueryParams(query_params))); |
| 578 } | 592 } |
| 579 | 593 |
| 580 void CacheStorageDispatcher::dispatchMatchAllForCache( | 594 void CacheStorageDispatcher::dispatchMatchAllForCache( |
| 581 int cache_id, | 595 int cache_id, |
| 582 blink::WebServiceWorkerCache::CacheWithResponsesCallbacks* callbacks, | 596 blink::WebServiceWorkerCache::CacheWithResponsesCallbacks* callbacks, |
| 583 const blink::WebServiceWorkerRequest& request, | 597 const blink::WebServiceWorkerRequest& request, |
| 584 const blink::WebServiceWorkerCache::QueryParams& query_params) { | 598 const blink::WebServiceWorkerCache::QueryParams& query_params) { |
| 585 int request_id = cache_match_all_callbacks_.Add(callbacks); | 599 int request_id = cache_match_all_callbacks_.Add( |
| 600 std::unique_ptr< |
| 601 blink::WebServiceWorkerCache::CacheWithResponsesCallbacks>( |
| 602 callbacks)); |
| 586 cache_match_all_times_[request_id] = base::TimeTicks::Now(); | 603 cache_match_all_times_[request_id] = base::TimeTicks::Now(); |
| 587 | 604 |
| 588 Send(new CacheStorageHostMsg_CacheMatchAll( | 605 Send(new CacheStorageHostMsg_CacheMatchAll( |
| 589 CurrentWorkerId(), request_id, cache_id, | 606 CurrentWorkerId(), request_id, cache_id, |
| 590 FetchRequestFromWebRequest(request), | 607 FetchRequestFromWebRequest(request), |
| 591 QueryParamsFromWebQueryParams(query_params))); | 608 QueryParamsFromWebQueryParams(query_params))); |
| 592 } | 609 } |
| 593 | 610 |
| 594 void CacheStorageDispatcher::dispatchKeysForCache( | 611 void CacheStorageDispatcher::dispatchKeysForCache( |
| 595 int cache_id, | 612 int cache_id, |
| 596 blink::WebServiceWorkerCache::CacheWithRequestsCallbacks* callbacks, | 613 blink::WebServiceWorkerCache::CacheWithRequestsCallbacks* callbacks, |
| 597 const blink::WebServiceWorkerRequest& request, | 614 const blink::WebServiceWorkerRequest& request, |
| 598 const blink::WebServiceWorkerCache::QueryParams& query_params) { | 615 const blink::WebServiceWorkerCache::QueryParams& query_params) { |
| 599 int request_id = cache_keys_callbacks_.Add(callbacks); | 616 int request_id = cache_keys_callbacks_.Add( |
| 617 std::unique_ptr<blink::WebServiceWorkerCache::CacheWithRequestsCallbacks>( |
| 618 callbacks)); |
| 600 cache_keys_times_[request_id] = base::TimeTicks::Now(); | 619 cache_keys_times_[request_id] = base::TimeTicks::Now(); |
| 601 | 620 |
| 602 Send(new CacheStorageHostMsg_CacheKeys( | 621 Send(new CacheStorageHostMsg_CacheKeys( |
| 603 CurrentWorkerId(), request_id, cache_id, | 622 CurrentWorkerId(), request_id, cache_id, |
| 604 FetchRequestFromWebRequest(request), | 623 FetchRequestFromWebRequest(request), |
| 605 QueryParamsFromWebQueryParams(query_params))); | 624 QueryParamsFromWebQueryParams(query_params))); |
| 606 } | 625 } |
| 607 | 626 |
| 608 void CacheStorageDispatcher::dispatchBatchForCache( | 627 void CacheStorageDispatcher::dispatchBatchForCache( |
| 609 int cache_id, | 628 int cache_id, |
| 610 blink::WebServiceWorkerCache::CacheBatchCallbacks* callbacks, | 629 blink::WebServiceWorkerCache::CacheBatchCallbacks* callbacks, |
| 611 const blink::WebVector<blink::WebServiceWorkerCache::BatchOperation>& | 630 const blink::WebVector<blink::WebServiceWorkerCache::BatchOperation>& |
| 612 web_operations) { | 631 web_operations) { |
| 613 int request_id = cache_batch_callbacks_.Add(callbacks); | 632 int request_id = cache_batch_callbacks_.Add( |
| 633 std::unique_ptr<blink::WebServiceWorkerCache::CacheBatchCallbacks>( |
| 634 callbacks)); |
| 614 cache_batch_times_[request_id] = base::TimeTicks::Now(); | 635 cache_batch_times_[request_id] = base::TimeTicks::Now(); |
| 615 | 636 |
| 616 std::vector<CacheStorageBatchOperation> operations; | 637 std::vector<CacheStorageBatchOperation> operations; |
| 617 operations.reserve(web_operations.size()); | 638 operations.reserve(web_operations.size()); |
| 618 for (size_t i = 0; i < web_operations.size(); ++i) { | 639 for (size_t i = 0; i < web_operations.size(); ++i) { |
| 619 operations.push_back( | 640 operations.push_back( |
| 620 BatchOperationFromWebBatchOperation(web_operations[i])); | 641 BatchOperationFromWebBatchOperation(web_operations[i])); |
| 621 } | 642 } |
| 622 | 643 |
| 623 Send(new CacheStorageHostMsg_CacheBatch(CurrentWorkerId(), request_id, | 644 Send(new CacheStorageHostMsg_CacheBatch(CurrentWorkerId(), request_id, |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 666 CacheStorageDispatcher::WebResponsesFromResponses( | 687 CacheStorageDispatcher::WebResponsesFromResponses( |
| 667 const std::vector<ServiceWorkerResponse>& responses) { | 688 const std::vector<ServiceWorkerResponse>& responses) { |
| 668 blink::WebVector<blink::WebServiceWorkerResponse> web_responses( | 689 blink::WebVector<blink::WebServiceWorkerResponse> web_responses( |
| 669 responses.size()); | 690 responses.size()); |
| 670 for (size_t i = 0; i < responses.size(); ++i) | 691 for (size_t i = 0; i < responses.size(); ++i) |
| 671 PopulateWebResponseFromResponse(responses[i], &(web_responses[i])); | 692 PopulateWebResponseFromResponse(responses[i], &(web_responses[i])); |
| 672 return web_responses; | 693 return web_responses; |
| 673 } | 694 } |
| 674 | 695 |
| 675 } // namespace content | 696 } // namespace content |
| OLD | NEW |