| 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/browser/cache_storage/cache_storage_cache.h" | 5 #include "content/browser/cache_storage/cache_storage_cache.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 766 DCHECK(operation.response.stream_url.is_empty()); | 766 DCHECK(operation.response.stream_url.is_empty()); |
| 767 // We don't support the body of redirect response. | 767 // We don't support the body of redirect response. |
| 768 DCHECK(!(operation.response.response_type == | 768 DCHECK(!(operation.response.response_type == |
| 769 blink::WebServiceWorkerResponseTypeOpaqueRedirect && | 769 blink::WebServiceWorkerResponseTypeOpaqueRedirect && |
| 770 operation.response.blob_size)); | 770 operation.response.blob_size)); |
| 771 scoped_ptr<ServiceWorkerResponse> response(new ServiceWorkerResponse( | 771 scoped_ptr<ServiceWorkerResponse> response(new ServiceWorkerResponse( |
| 772 operation.response.url, operation.response.status_code, | 772 operation.response.url, operation.response.status_code, |
| 773 operation.response.status_text, operation.response.response_type, | 773 operation.response.status_text, operation.response.response_type, |
| 774 operation.response.headers, operation.response.blob_uuid, | 774 operation.response.headers, operation.response.blob_uuid, |
| 775 operation.response.blob_size, operation.response.stream_url, | 775 operation.response.blob_size, operation.response.stream_url, |
| 776 operation.response.error)); | 776 operation.response.error, operation.response.response_time)); |
| 777 | 777 |
| 778 scoped_ptr<storage::BlobDataHandle> blob_data_handle; | 778 scoped_ptr<storage::BlobDataHandle> blob_data_handle; |
| 779 | 779 |
| 780 if (!response->blob_uuid.empty()) { | 780 if (!response->blob_uuid.empty()) { |
| 781 if (!blob_storage_context_) { | 781 if (!blob_storage_context_) { |
| 782 callback.Run(CACHE_STORAGE_ERROR_STORAGE); | 782 callback.Run(CACHE_STORAGE_ERROR_STORAGE); |
| 783 return; | 783 return; |
| 784 } | 784 } |
| 785 blob_data_handle = | 785 blob_data_handle = |
| 786 blob_storage_context_->GetBlobDataFromUUID(response->blob_uuid); | 786 blob_storage_context_->GetBlobDataFromUUID(response->blob_uuid); |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 891 header_map->set_name(it->first); | 891 header_map->set_name(it->first); |
| 892 header_map->set_value(it->second); | 892 header_map->set_value(it->second); |
| 893 } | 893 } |
| 894 | 894 |
| 895 CacheResponse* response_metadata = metadata.mutable_response(); | 895 CacheResponse* response_metadata = metadata.mutable_response(); |
| 896 response_metadata->set_status_code(put_context->response->status_code); | 896 response_metadata->set_status_code(put_context->response->status_code); |
| 897 response_metadata->set_status_text(put_context->response->status_text); | 897 response_metadata->set_status_text(put_context->response->status_text); |
| 898 response_metadata->set_response_type( | 898 response_metadata->set_response_type( |
| 899 WebResponseTypeToProtoResponseType(put_context->response->response_type)); | 899 WebResponseTypeToProtoResponseType(put_context->response->response_type)); |
| 900 response_metadata->set_url(put_context->response->url.spec()); | 900 response_metadata->set_url(put_context->response->url.spec()); |
| 901 response_metadata->set_response_time( |
| 902 put_context->response->response_time.ToInternalValue()); |
| 901 for (ServiceWorkerHeaderMap::const_iterator it = | 903 for (ServiceWorkerHeaderMap::const_iterator it = |
| 902 put_context->response->headers.begin(); | 904 put_context->response->headers.begin(); |
| 903 it != put_context->response->headers.end(); ++it) { | 905 it != put_context->response->headers.end(); ++it) { |
| 904 DCHECK_EQ(std::string::npos, it->first.find('\0')); | 906 DCHECK_EQ(std::string::npos, it->first.find('\0')); |
| 905 DCHECK_EQ(std::string::npos, it->second.find('\0')); | 907 DCHECK_EQ(std::string::npos, it->second.find('\0')); |
| 906 CacheHeaderMap* header_map = response_metadata->add_headers(); | 908 CacheHeaderMap* header_map = response_metadata->add_headers(); |
| 907 header_map->set_name(it->first); | 909 header_map->set_name(it->first); |
| 908 header_map->set_value(it->second); | 910 header_map->set_value(it->second); |
| 909 } | 911 } |
| 910 | 912 |
| (...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1364 } | 1366 } |
| 1365 | 1367 |
| 1366 void CacheStorageCache::PopulateResponseMetadata( | 1368 void CacheStorageCache::PopulateResponseMetadata( |
| 1367 const CacheMetadata& metadata, | 1369 const CacheMetadata& metadata, |
| 1368 ServiceWorkerResponse* response) { | 1370 ServiceWorkerResponse* response) { |
| 1369 *response = ServiceWorkerResponse( | 1371 *response = ServiceWorkerResponse( |
| 1370 GURL(metadata.response().url()), metadata.response().status_code(), | 1372 GURL(metadata.response().url()), metadata.response().status_code(), |
| 1371 metadata.response().status_text(), | 1373 metadata.response().status_text(), |
| 1372 ProtoResponseTypeToWebResponseType(metadata.response().response_type()), | 1374 ProtoResponseTypeToWebResponseType(metadata.response().response_type()), |
| 1373 ServiceWorkerHeaderMap(), "", 0, GURL(), | 1375 ServiceWorkerHeaderMap(), "", 0, GURL(), |
| 1374 blink::WebServiceWorkerResponseErrorUnknown); | 1376 blink::WebServiceWorkerResponseErrorUnknown, |
| 1377 base::Time::FromInternalValue(metadata.response().response_time())); |
| 1375 | 1378 |
| 1376 for (int i = 0; i < metadata.response().headers_size(); ++i) { | 1379 for (int i = 0; i < metadata.response().headers_size(); ++i) { |
| 1377 const CacheHeaderMap header = metadata.response().headers(i); | 1380 const CacheHeaderMap header = metadata.response().headers(i); |
| 1378 DCHECK_EQ(std::string::npos, header.name().find('\0')); | 1381 DCHECK_EQ(std::string::npos, header.name().find('\0')); |
| 1379 DCHECK_EQ(std::string::npos, header.value().find('\0')); | 1382 DCHECK_EQ(std::string::npos, header.value().find('\0')); |
| 1380 response->headers.insert(std::make_pair(header.name(), header.value())); | 1383 response->headers.insert(std::make_pair(header.name(), header.value())); |
| 1381 } | 1384 } |
| 1382 } | 1385 } |
| 1383 | 1386 |
| 1384 scoped_ptr<storage::BlobDataHandle> CacheStorageCache::PopulateResponseBody( | 1387 scoped_ptr<storage::BlobDataHandle> CacheStorageCache::PopulateResponseBody( |
| 1385 disk_cache::ScopedEntryPtr entry, | 1388 disk_cache::ScopedEntryPtr entry, |
| 1386 ServiceWorkerResponse* response) { | 1389 ServiceWorkerResponse* response) { |
| 1387 DCHECK(blob_storage_context_); | 1390 DCHECK(blob_storage_context_); |
| 1388 | 1391 |
| 1389 // Create a blob with the response body data. | 1392 // Create a blob with the response body data. |
| 1390 response->blob_size = entry->GetDataSize(INDEX_RESPONSE_BODY); | 1393 response->blob_size = entry->GetDataSize(INDEX_RESPONSE_BODY); |
| 1391 response->blob_uuid = base::GenerateGUID(); | 1394 response->blob_uuid = base::GenerateGUID(); |
| 1392 storage::BlobDataBuilder blob_data(response->blob_uuid); | 1395 storage::BlobDataBuilder blob_data(response->blob_uuid); |
| 1393 | 1396 |
| 1394 disk_cache::Entry* temp_entry = entry.get(); | 1397 disk_cache::Entry* temp_entry = entry.get(); |
| 1395 blob_data.AppendDiskCacheEntry( | 1398 blob_data.AppendDiskCacheEntry( |
| 1396 new CacheStorageCacheDataHandle(this, std::move(entry)), temp_entry, | 1399 new CacheStorageCacheDataHandle(this, std::move(entry)), temp_entry, |
| 1397 INDEX_RESPONSE_BODY); | 1400 INDEX_RESPONSE_BODY); |
| 1398 return blob_storage_context_->AddFinishedBlob(&blob_data); | 1401 return blob_storage_context_->AddFinishedBlob(&blob_data); |
| 1399 } | 1402 } |
| 1400 | 1403 |
| 1401 } // namespace content | 1404 } // namespace content |
| OLD | NEW |