Chromium Code Reviews| 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 <memory> |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 78 PopulateWebRequestFromFetchRequest(requests[i], &(web_requests[i])); | 78 PopulateWebRequestFromFetchRequest(requests[i], &(web_requests[i])); |
| 79 return web_requests; | 79 return web_requests; |
| 80 } | 80 } |
| 81 | 81 |
| 82 CacheStorageCacheQueryParams QueryParamsFromWebQueryParams( | 82 CacheStorageCacheQueryParams QueryParamsFromWebQueryParams( |
| 83 const blink::WebServiceWorkerCache::QueryParams& web_query_params) { | 83 const blink::WebServiceWorkerCache::QueryParams& web_query_params) { |
| 84 CacheStorageCacheQueryParams query_params; | 84 CacheStorageCacheQueryParams query_params; |
| 85 query_params.ignore_search = web_query_params.ignoreSearch; | 85 query_params.ignore_search = web_query_params.ignoreSearch; |
| 86 query_params.ignore_method = web_query_params.ignoreMethod; | 86 query_params.ignore_method = web_query_params.ignoreMethod; |
| 87 query_params.ignore_vary = web_query_params.ignoreVary; | 87 query_params.ignore_vary = web_query_params.ignoreVary; |
| 88 query_params.cache_name = web_query_params.cacheName; | 88 query_params.cache_name = |
| 89 blink::WebString::toNullableString16(web_query_params.cacheName); | |
| 89 return query_params; | 90 return query_params; |
| 90 } | 91 } |
| 91 | 92 |
| 92 CacheStorageCacheOperationType CacheOperationTypeFromWebCacheOperationType( | 93 CacheStorageCacheOperationType CacheOperationTypeFromWebCacheOperationType( |
| 93 blink::WebServiceWorkerCache::OperationType operation_type) { | 94 blink::WebServiceWorkerCache::OperationType operation_type) { |
| 94 switch (operation_type) { | 95 switch (operation_type) { |
| 95 case blink::WebServiceWorkerCache::OperationTypePut: | 96 case blink::WebServiceWorkerCache::OperationTypePut: |
| 96 return CACHE_STORAGE_CACHE_OPERATION_TYPE_PUT; | 97 return CACHE_STORAGE_CACHE_OPERATION_TYPE_PUT; |
| 97 case blink::WebServiceWorkerCache::OperationTypeDelete: | 98 case blink::WebServiceWorkerCache::OperationTypeDelete: |
| 98 return CACHE_STORAGE_CACHE_OPERATION_TYPE_DELETE; | 99 return CACHE_STORAGE_CACHE_OPERATION_TYPE_DELETE; |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 304 callbacks->onSuccess(); | 305 callbacks->onSuccess(); |
| 305 delete_callbacks_.Remove(request_id); | 306 delete_callbacks_.Remove(request_id); |
| 306 delete_times_.erase(request_id); | 307 delete_times_.erase(request_id); |
| 307 } | 308 } |
| 308 | 309 |
| 309 void CacheStorageDispatcher::OnCacheStorageKeysSuccess( | 310 void CacheStorageDispatcher::OnCacheStorageKeysSuccess( |
| 310 int thread_id, | 311 int thread_id, |
| 311 int request_id, | 312 int request_id, |
| 312 const std::vector<base::string16>& keys) { | 313 const std::vector<base::string16>& keys) { |
| 313 DCHECK_EQ(thread_id, CurrentWorkerId()); | 314 DCHECK_EQ(thread_id, CurrentWorkerId()); |
| 314 blink::WebVector<blink::WebString> webKeys(keys.size()); | 315 blink::WebVector<blink::WebString> web_keys(keys.size()); |
| 315 for (size_t i = 0; i < keys.size(); ++i) | 316 std::transform( |
| 316 webKeys[i] = keys[i]; | 317 keys.begin(), keys.end(), web_keys.begin(), |
| 317 | 318 [](const base::string16& s) { return WebString::fromUTF16(s); }); |
|
jsbell
2017/01/03 18:08:43
Does this need to be a lambda or can we just pass
| |
| 318 UMA_HISTOGRAM_TIMES("ServiceWorkerCache.CacheStorage.Keys", | 319 UMA_HISTOGRAM_TIMES("ServiceWorkerCache.CacheStorage.Keys", |
| 319 TimeTicks::Now() - keys_times_[request_id]); | 320 TimeTicks::Now() - keys_times_[request_id]); |
| 320 WebServiceWorkerCacheStorage::CacheStorageKeysCallbacks* callbacks = | 321 WebServiceWorkerCacheStorage::CacheStorageKeysCallbacks* callbacks = |
| 321 keys_callbacks_.Lookup(request_id); | 322 keys_callbacks_.Lookup(request_id); |
| 322 callbacks->onSuccess(webKeys); | 323 callbacks->onSuccess(web_keys); |
| 323 keys_callbacks_.Remove(request_id); | 324 keys_callbacks_.Remove(request_id); |
| 324 keys_times_.erase(request_id); | 325 keys_times_.erase(request_id); |
| 325 } | 326 } |
| 326 | 327 |
| 327 void CacheStorageDispatcher::OnCacheStorageMatchSuccess( | 328 void CacheStorageDispatcher::OnCacheStorageMatchSuccess( |
| 328 int thread_id, | 329 int thread_id, |
| 329 int request_id, | 330 int request_id, |
| 330 const ServiceWorkerResponse& response) { | 331 const ServiceWorkerResponse& response) { |
| 331 DCHECK_EQ(thread_id, CurrentWorkerId()); | 332 DCHECK_EQ(thread_id, CurrentWorkerId()); |
| 332 blink::WebServiceWorkerResponse web_response; | 333 blink::WebServiceWorkerResponse web_response; |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 499 } | 500 } |
| 500 | 501 |
| 501 void CacheStorageDispatcher::dispatchHas( | 502 void CacheStorageDispatcher::dispatchHas( |
| 502 std::unique_ptr<WebServiceWorkerCacheStorage::CacheStorageCallbacks> | 503 std::unique_ptr<WebServiceWorkerCacheStorage::CacheStorageCallbacks> |
| 503 callbacks, | 504 callbacks, |
| 504 const url::Origin& origin, | 505 const url::Origin& origin, |
| 505 const blink::WebString& cacheName) { | 506 const blink::WebString& cacheName) { |
| 506 int request_id = has_callbacks_.Add(std::move(callbacks)); | 507 int request_id = has_callbacks_.Add(std::move(callbacks)); |
| 507 has_times_[request_id] = base::TimeTicks::Now(); | 508 has_times_[request_id] = base::TimeTicks::Now(); |
| 508 Send(new CacheStorageHostMsg_CacheStorageHas(CurrentWorkerId(), request_id, | 509 Send(new CacheStorageHostMsg_CacheStorageHas(CurrentWorkerId(), request_id, |
| 509 origin, cacheName)); | 510 origin, cacheName.utf16())); |
| 510 } | 511 } |
| 511 | 512 |
| 512 void CacheStorageDispatcher::dispatchOpen( | 513 void CacheStorageDispatcher::dispatchOpen( |
| 513 std::unique_ptr< | 514 std::unique_ptr< |
| 514 WebServiceWorkerCacheStorage::CacheStorageWithCacheCallbacks> callbacks, | 515 WebServiceWorkerCacheStorage::CacheStorageWithCacheCallbacks> callbacks, |
| 515 const url::Origin& origin, | 516 const url::Origin& origin, |
| 516 const blink::WebString& cacheName) { | 517 const blink::WebString& cacheName) { |
| 517 int request_id = open_callbacks_.Add(std::move(callbacks)); | 518 int request_id = open_callbacks_.Add(std::move(callbacks)); |
| 518 open_times_[request_id] = base::TimeTicks::Now(); | 519 open_times_[request_id] = base::TimeTicks::Now(); |
| 519 Send(new CacheStorageHostMsg_CacheStorageOpen(CurrentWorkerId(), request_id, | 520 Send(new CacheStorageHostMsg_CacheStorageOpen(CurrentWorkerId(), request_id, |
| 520 origin, cacheName)); | 521 origin, cacheName.utf16())); |
| 521 } | 522 } |
| 522 | 523 |
| 523 void CacheStorageDispatcher::dispatchDelete( | 524 void CacheStorageDispatcher::dispatchDelete( |
| 524 std::unique_ptr<WebServiceWorkerCacheStorage::CacheStorageCallbacks> | 525 std::unique_ptr<WebServiceWorkerCacheStorage::CacheStorageCallbacks> |
| 525 callbacks, | 526 callbacks, |
| 526 const url::Origin& origin, | 527 const url::Origin& origin, |
| 527 const blink::WebString& cacheName) { | 528 const blink::WebString& cacheName) { |
| 528 int request_id = delete_callbacks_.Add(std::move(callbacks)); | 529 int request_id = delete_callbacks_.Add(std::move(callbacks)); |
| 529 delete_times_[request_id] = base::TimeTicks::Now(); | 530 delete_times_[request_id] = base::TimeTicks::Now(); |
| 530 Send(new CacheStorageHostMsg_CacheStorageDelete(CurrentWorkerId(), request_id, | 531 Send(new CacheStorageHostMsg_CacheStorageDelete(CurrentWorkerId(), request_id, |
| 531 origin, cacheName)); | 532 origin, cacheName.utf16())); |
| 532 } | 533 } |
| 533 | 534 |
| 534 void CacheStorageDispatcher::dispatchKeys( | 535 void CacheStorageDispatcher::dispatchKeys( |
| 535 std::unique_ptr<WebServiceWorkerCacheStorage::CacheStorageKeysCallbacks> | 536 std::unique_ptr<WebServiceWorkerCacheStorage::CacheStorageKeysCallbacks> |
| 536 callbacks, | 537 callbacks, |
| 537 const url::Origin& origin) { | 538 const url::Origin& origin) { |
| 538 int request_id = keys_callbacks_.Add(std::move(callbacks)); | 539 int request_id = keys_callbacks_.Add(std::move(callbacks)); |
| 539 keys_times_[request_id] = base::TimeTicks::Now(); | 540 keys_times_[request_id] = base::TimeTicks::Now(); |
| 540 Send(new CacheStorageHostMsg_CacheStorageKeys(CurrentWorkerId(), request_id, | 541 Send(new CacheStorageHostMsg_CacheStorageKeys(CurrentWorkerId(), request_id, |
| 541 origin)); | 542 origin)); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 632 web_response->setStatus(response.status_code); | 633 web_response->setStatus(response.status_code); |
| 633 web_response->setStatusText(WebString::fromASCII(response.status_text)); | 634 web_response->setStatusText(WebString::fromASCII(response.status_text)); |
| 634 web_response->setResponseType(response.response_type); | 635 web_response->setResponseType(response.response_type); |
| 635 web_response->setResponseTime(response.response_time.ToInternalValue()); | 636 web_response->setResponseTime(response.response_time.ToInternalValue()); |
| 636 web_response->setCacheStorageCacheName( | 637 web_response->setCacheStorageCacheName( |
| 637 response.is_in_cache_storage | 638 response.is_in_cache_storage |
| 638 ? blink::WebString::fromUTF8(response.cache_storage_cache_name) | 639 ? blink::WebString::fromUTF8(response.cache_storage_cache_name) |
| 639 : blink::WebString()); | 640 : blink::WebString()); |
| 640 blink::WebVector<blink::WebString> headers( | 641 blink::WebVector<blink::WebString> headers( |
| 641 response.cors_exposed_header_names.size()); | 642 response.cors_exposed_header_names.size()); |
| 642 std::transform( | 643 std::transform(response.cors_exposed_header_names.begin(), |
| 643 response.cors_exposed_header_names.begin(), | 644 response.cors_exposed_header_names.end(), headers.begin(), |
| 644 response.cors_exposed_header_names.end(), headers.begin(), | 645 [](const std::string& s) { return WebString::fromLatin1(s); }); |
|
jsbell
2017/01/03 18:08:43
just pass &WebString::fromLatin1 ?
| |
| 645 [](const std::string& h) { return blink::WebString::fromLatin1(h); }); | |
| 646 web_response->setCorsExposedHeaderNames(headers); | 646 web_response->setCorsExposedHeaderNames(headers); |
| 647 | 647 |
| 648 for (const auto& i : response.headers) { | 648 for (const auto& i : response.headers) { |
| 649 web_response->setHeader(WebString::fromASCII(i.first), | 649 web_response->setHeader(WebString::fromASCII(i.first), |
| 650 WebString::fromASCII(i.second)); | 650 WebString::fromASCII(i.second)); |
| 651 } | 651 } |
| 652 | 652 |
| 653 if (!response.blob_uuid.empty()) { | 653 if (!response.blob_uuid.empty()) { |
| 654 web_response->setBlob(blink::WebString::fromUTF8(response.blob_uuid), | 654 web_response->setBlob(blink::WebString::fromUTF8(response.blob_uuid), |
| 655 response.blob_size); | 655 response.blob_size); |
| 656 // Let the host know that it can release its reference to the blob. | 656 // Let the host know that it can release its reference to the blob. |
| 657 Send(new CacheStorageHostMsg_BlobDataHandled(response.blob_uuid)); | 657 Send(new CacheStorageHostMsg_BlobDataHandled(response.blob_uuid)); |
| 658 } | 658 } |
| 659 } | 659 } |
| 660 | 660 |
| 661 blink::WebVector<blink::WebServiceWorkerResponse> | 661 blink::WebVector<blink::WebServiceWorkerResponse> |
| 662 CacheStorageDispatcher::WebResponsesFromResponses( | 662 CacheStorageDispatcher::WebResponsesFromResponses( |
| 663 const std::vector<ServiceWorkerResponse>& responses) { | 663 const std::vector<ServiceWorkerResponse>& responses) { |
| 664 blink::WebVector<blink::WebServiceWorkerResponse> web_responses( | 664 blink::WebVector<blink::WebServiceWorkerResponse> web_responses( |
| 665 responses.size()); | 665 responses.size()); |
| 666 for (size_t i = 0; i < responses.size(); ++i) | 666 for (size_t i = 0; i < responses.size(); ++i) |
| 667 PopulateWebResponseFromResponse(responses[i], &(web_responses[i])); | 667 PopulateWebResponseFromResponse(responses[i], &(web_responses[i])); |
| 668 return web_responses; | 668 return web_responses; |
| 669 } | 669 } |
| 670 | 670 |
| 671 } // namespace content | 671 } // namespace content |
| OLD | NEW |