| 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 795 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 806 void CacheStorageCache::PutImpl(scoped_ptr<PutContext> put_context) { | 806 void CacheStorageCache::PutImpl(scoped_ptr<PutContext> put_context) { |
| 807 DCHECK_NE(BACKEND_UNINITIALIZED, backend_state_); | 807 DCHECK_NE(BACKEND_UNINITIALIZED, backend_state_); |
| 808 if (backend_state_ != BACKEND_OPEN) { | 808 if (backend_state_ != BACKEND_OPEN) { |
| 809 put_context->callback.Run(CACHE_STORAGE_ERROR_STORAGE); | 809 put_context->callback.Run(CACHE_STORAGE_ERROR_STORAGE); |
| 810 return; | 810 return; |
| 811 } | 811 } |
| 812 | 812 |
| 813 scoped_ptr<ServiceWorkerFetchRequest> request_copy( | 813 scoped_ptr<ServiceWorkerFetchRequest> request_copy( |
| 814 new ServiceWorkerFetchRequest(*put_context->request)); | 814 new ServiceWorkerFetchRequest(*put_context->request)); |
| 815 | 815 |
| 816 DeleteImpl(std::move(request_copy), | 816 DeleteImpl(std::move(request_copy), CacheStorageCacheQueryParams(), |
| 817 base::Bind(&CacheStorageCache::PutDidDelete, | 817 base::Bind(&CacheStorageCache::PutDidDelete, |
| 818 weak_ptr_factory_.GetWeakPtr(), | 818 weak_ptr_factory_.GetWeakPtr(), |
| 819 base::Passed(std::move(put_context)))); | 819 base::Passed(std::move(put_context)))); |
| 820 } | 820 } |
| 821 | 821 |
| 822 void CacheStorageCache::PutDidDelete(scoped_ptr<PutContext> put_context, | 822 void CacheStorageCache::PutDidDelete(scoped_ptr<PutContext> put_context, |
| 823 CacheStorageError delete_error) { | 823 CacheStorageError delete_error) { |
| 824 if (backend_state_ != BACKEND_OPEN) { | 824 if (backend_state_ != BACKEND_OPEN) { |
| 825 put_context->callback.Run(CACHE_STORAGE_ERROR_STORAGE); | 825 put_context->callback.Run(CACHE_STORAGE_ERROR_STORAGE); |
| 826 return; | 826 return; |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1028 scoped_ptr<ServiceWorkerFetchRequest> request(new ServiceWorkerFetchRequest( | 1028 scoped_ptr<ServiceWorkerFetchRequest> request(new ServiceWorkerFetchRequest( |
| 1029 operation.request.url, operation.request.method, | 1029 operation.request.url, operation.request.method, |
| 1030 operation.request.headers, operation.request.referrer, | 1030 operation.request.headers, operation.request.referrer, |
| 1031 operation.request.is_reload)); | 1031 operation.request.is_reload)); |
| 1032 | 1032 |
| 1033 ErrorCallback pending_callback = | 1033 ErrorCallback pending_callback = |
| 1034 base::Bind(&CacheStorageCache::PendingErrorCallback, | 1034 base::Bind(&CacheStorageCache::PendingErrorCallback, |
| 1035 weak_ptr_factory_.GetWeakPtr(), callback); | 1035 weak_ptr_factory_.GetWeakPtr(), callback); |
| 1036 scheduler_->ScheduleOperation( | 1036 scheduler_->ScheduleOperation( |
| 1037 base::Bind(&CacheStorageCache::DeleteImpl, weak_ptr_factory_.GetWeakPtr(), | 1037 base::Bind(&CacheStorageCache::DeleteImpl, weak_ptr_factory_.GetWeakPtr(), |
| 1038 base::Passed(std::move(request)), pending_callback)); | 1038 base::Passed(std::move(request)), operation.match_params, |
| 1039 pending_callback)); |
| 1039 } | 1040 } |
| 1040 | 1041 |
| 1041 void CacheStorageCache::DeleteImpl( | 1042 void CacheStorageCache::DeleteImpl( |
| 1042 scoped_ptr<ServiceWorkerFetchRequest> request, | 1043 scoped_ptr<ServiceWorkerFetchRequest> request, |
| 1044 const CacheStorageCacheQueryParams& match_params, |
| 1043 const ErrorCallback& callback) { | 1045 const ErrorCallback& callback) { |
| 1044 DCHECK_NE(BACKEND_UNINITIALIZED, backend_state_); | 1046 DCHECK_NE(BACKEND_UNINITIALIZED, backend_state_); |
| 1045 if (backend_state_ != BACKEND_OPEN) { | 1047 if (backend_state_ != BACKEND_OPEN) { |
| 1046 callback.Run(CACHE_STORAGE_ERROR_STORAGE); | 1048 callback.Run(CACHE_STORAGE_ERROR_STORAGE); |
| 1047 return; | 1049 return; |
| 1048 } | 1050 } |
| 1051 |
| 1052 if (match_params.ignore_search) { |
| 1053 OpenAllEntries(base::Bind(&CacheStorageCache::DeleteDidOpenAllEntries, |
| 1054 weak_ptr_factory_.GetWeakPtr(), |
| 1055 base::Passed(std::move(request)), callback)); |
| 1056 return; |
| 1057 } |
| 1058 |
| 1049 scoped_ptr<disk_cache::Entry*> entry(new disk_cache::Entry*); | 1059 scoped_ptr<disk_cache::Entry*> entry(new disk_cache::Entry*); |
| 1050 | 1060 |
| 1051 disk_cache::Entry** entry_ptr = entry.get(); | 1061 disk_cache::Entry** entry_ptr = entry.get(); |
| 1052 | 1062 |
| 1053 ServiceWorkerFetchRequest* request_ptr = request.get(); | 1063 ServiceWorkerFetchRequest* request_ptr = request.get(); |
| 1054 | 1064 |
| 1055 net::CompletionCallback open_entry_callback = base::Bind( | 1065 net::CompletionCallback open_entry_callback = base::Bind( |
| 1056 &CacheStorageCache::DeleteDidOpenEntry, weak_ptr_factory_.GetWeakPtr(), | 1066 &CacheStorageCache::DeleteDidOpenEntry, weak_ptr_factory_.GetWeakPtr(), |
| 1057 origin_, base::Passed(std::move(request)), callback, | 1067 origin_, base::Passed(std::move(request)), callback, |
| 1058 base::Passed(std::move(entry))); | 1068 base::Passed(std::move(entry))); |
| 1059 | 1069 |
| 1060 int rv = backend_->OpenEntry(request_ptr->url.spec(), entry_ptr, | 1070 int rv = backend_->OpenEntry(request_ptr->url.spec(), entry_ptr, |
| 1061 open_entry_callback); | 1071 open_entry_callback); |
| 1062 if (rv != net::ERR_IO_PENDING) | 1072 if (rv != net::ERR_IO_PENDING) |
| 1063 open_entry_callback.Run(rv); | 1073 open_entry_callback.Run(rv); |
| 1064 } | 1074 } |
| 1065 | 1075 |
| 1076 void CacheStorageCache::DeleteDidOpenAllEntries( |
| 1077 scoped_ptr<ServiceWorkerFetchRequest> request, |
| 1078 const ErrorCallback& callback, |
| 1079 scoped_ptr<OpenAllEntriesContext> entries_context, |
| 1080 CacheStorageError error) { |
| 1081 if (error != CACHE_STORAGE_OK) { |
| 1082 callback.Run(error); |
| 1083 return; |
| 1084 } |
| 1085 |
| 1086 GURL request_url_without_query = RemoveQueryParam(request->url); |
| 1087 for (Entries::iterator iter = entries_context->entries.begin(); |
| 1088 iter != entries_context->entries.end(); iter++) { |
| 1089 disk_cache::Entry* entry(*iter); |
| 1090 if (request_url_without_query == RemoveQueryParam(GURL(entry->GetKey()))) |
| 1091 entry->Doom(); |
| 1092 } |
| 1093 |
| 1094 entries_context.reset(); |
| 1095 |
| 1096 UpdateCacheSize(); |
| 1097 callback.Run(CACHE_STORAGE_OK); |
| 1098 } |
| 1099 |
| 1066 void CacheStorageCache::DeleteDidOpenEntry( | 1100 void CacheStorageCache::DeleteDidOpenEntry( |
| 1067 const GURL& origin, | 1101 const GURL& origin, |
| 1068 scoped_ptr<ServiceWorkerFetchRequest> request, | 1102 scoped_ptr<ServiceWorkerFetchRequest> request, |
| 1069 const CacheStorageCache::ErrorCallback& callback, | 1103 const CacheStorageCache::ErrorCallback& callback, |
| 1070 scoped_ptr<disk_cache::Entry*> entry_ptr, | 1104 scoped_ptr<disk_cache::Entry*> entry_ptr, |
| 1071 int rv) { | 1105 int rv) { |
| 1072 if (rv != net::OK) { | 1106 if (rv != net::OK) { |
| 1073 callback.Run(CACHE_STORAGE_ERROR_NOT_FOUND); | 1107 callback.Run(CACHE_STORAGE_ERROR_NOT_FOUND); |
| 1074 return; | 1108 return; |
| 1075 } | 1109 } |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1358 storage::BlobDataBuilder blob_data(response->blob_uuid); | 1392 storage::BlobDataBuilder blob_data(response->blob_uuid); |
| 1359 | 1393 |
| 1360 disk_cache::Entry* temp_entry = entry.get(); | 1394 disk_cache::Entry* temp_entry = entry.get(); |
| 1361 blob_data.AppendDiskCacheEntry( | 1395 blob_data.AppendDiskCacheEntry( |
| 1362 new CacheStorageCacheDataHandle(this, std::move(entry)), temp_entry, | 1396 new CacheStorageCacheDataHandle(this, std::move(entry)), temp_entry, |
| 1363 INDEX_RESPONSE_BODY); | 1397 INDEX_RESPONSE_BODY); |
| 1364 return blob_storage_context_->AddFinishedBlob(&blob_data); | 1398 return blob_storage_context_->AddFinishedBlob(&blob_data); |
| 1365 } | 1399 } |
| 1366 | 1400 |
| 1367 } // namespace content | 1401 } // namespace content |
| OLD | NEW |