| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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_dispatcher_host.h" | 5 #include "content/browser/cache_storage/cache_storage_dispatcher_host.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 case CACHE_STORAGE_ERROR_CACHE_NAME_NOT_FOUND: | 54 case CACHE_STORAGE_ERROR_CACHE_NAME_NOT_FOUND: |
| 55 return blink::WebServiceWorkerCacheErrorCacheNameNotFound; | 55 return blink::WebServiceWorkerCacheErrorCacheNameNotFound; |
| 56 case CACHE_STORAGE_ERROR_QUERY_TOO_LARGE: | 56 case CACHE_STORAGE_ERROR_QUERY_TOO_LARGE: |
| 57 return blink::WebServiceWorkerCacheErrorTooLarge; | 57 return blink::WebServiceWorkerCacheErrorTooLarge; |
| 58 } | 58 } |
| 59 NOTREACHED(); | 59 NOTREACHED(); |
| 60 return blink::WebServiceWorkerCacheErrorNotImplemented; | 60 return blink::WebServiceWorkerCacheErrorNotImplemented; |
| 61 } | 61 } |
| 62 | 62 |
| 63 bool OriginCanAccessCacheStorage(const url::Origin& origin) { | 63 bool OriginCanAccessCacheStorage(const url::Origin& origin) { |
| 64 return !origin.unique() && IsOriginSecure(GURL(origin.Serialize())); | 64 return !origin.unique() && IsOriginSecure(origin.GetURL()); |
| 65 } | 65 } |
| 66 | 66 |
| 67 void StopPreservingCache( | 67 void StopPreservingCache( |
| 68 std::unique_ptr<CacheStorageCacheHandle> cache_handle) {} | 68 std::unique_ptr<CacheStorageCacheHandle> cache_handle) {} |
| 69 | 69 |
| 70 } // namespace | 70 } // namespace |
| 71 | 71 |
| 72 CacheStorageDispatcherHost::CacheStorageDispatcherHost() | 72 CacheStorageDispatcherHost::CacheStorageDispatcherHost() |
| 73 : BrowserMessageFilter(kFilteredMessageClasses, | 73 : BrowserMessageFilter(kFilteredMessageClasses, |
| 74 arraysize(kFilteredMessageClasses)) {} | 74 arraysize(kFilteredMessageClasses)) {} |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 int thread_id, | 125 int thread_id, |
| 126 int request_id, | 126 int request_id, |
| 127 const url::Origin& origin, | 127 const url::Origin& origin, |
| 128 const base::string16& cache_name) { | 128 const base::string16& cache_name) { |
| 129 TRACE_EVENT0("CacheStorage", "CacheStorageDispatcherHost::OnCacheStorageHas"); | 129 TRACE_EVENT0("CacheStorage", "CacheStorageDispatcherHost::OnCacheStorageHas"); |
| 130 if (!OriginCanAccessCacheStorage(origin)) { | 130 if (!OriginCanAccessCacheStorage(origin)) { |
| 131 bad_message::ReceivedBadMessage(this, bad_message::CSDH_INVALID_ORIGIN); | 131 bad_message::ReceivedBadMessage(this, bad_message::CSDH_INVALID_ORIGIN); |
| 132 return; | 132 return; |
| 133 } | 133 } |
| 134 context_->cache_manager()->HasCache( | 134 context_->cache_manager()->HasCache( |
| 135 GURL(origin.Serialize()), base::UTF16ToUTF8(cache_name), | 135 origin.GetURL(), base::UTF16ToUTF8(cache_name), |
| 136 base::Bind(&CacheStorageDispatcherHost::OnCacheStorageHasCallback, this, | 136 base::Bind(&CacheStorageDispatcherHost::OnCacheStorageHasCallback, this, |
| 137 thread_id, request_id)); | 137 thread_id, request_id)); |
| 138 } | 138 } |
| 139 | 139 |
| 140 void CacheStorageDispatcherHost::OnCacheStorageOpen( | 140 void CacheStorageDispatcherHost::OnCacheStorageOpen( |
| 141 int thread_id, | 141 int thread_id, |
| 142 int request_id, | 142 int request_id, |
| 143 const url::Origin& origin, | 143 const url::Origin& origin, |
| 144 const base::string16& cache_name) { | 144 const base::string16& cache_name) { |
| 145 TRACE_EVENT0("CacheStorage", | 145 TRACE_EVENT0("CacheStorage", |
| 146 "CacheStorageDispatcherHost::OnCacheStorageOpen"); | 146 "CacheStorageDispatcherHost::OnCacheStorageOpen"); |
| 147 if (!OriginCanAccessCacheStorage(origin)) { | 147 if (!OriginCanAccessCacheStorage(origin)) { |
| 148 bad_message::ReceivedBadMessage(this, bad_message::CSDH_INVALID_ORIGIN); | 148 bad_message::ReceivedBadMessage(this, bad_message::CSDH_INVALID_ORIGIN); |
| 149 return; | 149 return; |
| 150 } | 150 } |
| 151 context_->cache_manager()->OpenCache( | 151 context_->cache_manager()->OpenCache( |
| 152 GURL(origin.Serialize()), base::UTF16ToUTF8(cache_name), | 152 origin.GetURL(), base::UTF16ToUTF8(cache_name), |
| 153 base::Bind(&CacheStorageDispatcherHost::OnCacheStorageOpenCallback, this, | 153 base::Bind(&CacheStorageDispatcherHost::OnCacheStorageOpenCallback, this, |
| 154 thread_id, request_id)); | 154 thread_id, request_id)); |
| 155 } | 155 } |
| 156 | 156 |
| 157 void CacheStorageDispatcherHost::OnCacheStorageDelete( | 157 void CacheStorageDispatcherHost::OnCacheStorageDelete( |
| 158 int thread_id, | 158 int thread_id, |
| 159 int request_id, | 159 int request_id, |
| 160 const url::Origin& origin, | 160 const url::Origin& origin, |
| 161 const base::string16& cache_name) { | 161 const base::string16& cache_name) { |
| 162 TRACE_EVENT0("CacheStorage", | 162 TRACE_EVENT0("CacheStorage", |
| 163 "CacheStorageDispatcherHost::OnCacheStorageDelete"); | 163 "CacheStorageDispatcherHost::OnCacheStorageDelete"); |
| 164 if (!OriginCanAccessCacheStorage(origin)) { | 164 if (!OriginCanAccessCacheStorage(origin)) { |
| 165 bad_message::ReceivedBadMessage(this, bad_message::CSDH_INVALID_ORIGIN); | 165 bad_message::ReceivedBadMessage(this, bad_message::CSDH_INVALID_ORIGIN); |
| 166 return; | 166 return; |
| 167 } | 167 } |
| 168 context_->cache_manager()->DeleteCache( | 168 context_->cache_manager()->DeleteCache( |
| 169 GURL(origin.Serialize()), base::UTF16ToUTF8(cache_name), | 169 origin.GetURL(), base::UTF16ToUTF8(cache_name), |
| 170 base::Bind(&CacheStorageDispatcherHost::OnCacheStorageDeleteCallback, | 170 base::Bind(&CacheStorageDispatcherHost::OnCacheStorageDeleteCallback, |
| 171 this, thread_id, request_id)); | 171 this, thread_id, request_id)); |
| 172 } | 172 } |
| 173 | 173 |
| 174 void CacheStorageDispatcherHost::OnCacheStorageKeys(int thread_id, | 174 void CacheStorageDispatcherHost::OnCacheStorageKeys(int thread_id, |
| 175 int request_id, | 175 int request_id, |
| 176 const url::Origin& origin) { | 176 const url::Origin& origin) { |
| 177 TRACE_EVENT0("CacheStorage", | 177 TRACE_EVENT0("CacheStorage", |
| 178 "CacheStorageDispatcherHost::OnCacheStorageKeys"); | 178 "CacheStorageDispatcherHost::OnCacheStorageKeys"); |
| 179 if (!OriginCanAccessCacheStorage(origin)) { | 179 if (!OriginCanAccessCacheStorage(origin)) { |
| 180 bad_message::ReceivedBadMessage(this, bad_message::CSDH_INVALID_ORIGIN); | 180 bad_message::ReceivedBadMessage(this, bad_message::CSDH_INVALID_ORIGIN); |
| 181 return; | 181 return; |
| 182 } | 182 } |
| 183 context_->cache_manager()->EnumerateCaches( | 183 context_->cache_manager()->EnumerateCaches( |
| 184 GURL(origin.Serialize()), | 184 origin.GetURL(), |
| 185 base::Bind(&CacheStorageDispatcherHost::OnCacheStorageKeysCallback, this, | 185 base::Bind(&CacheStorageDispatcherHost::OnCacheStorageKeysCallback, this, |
| 186 thread_id, request_id)); | 186 thread_id, request_id)); |
| 187 } | 187 } |
| 188 | 188 |
| 189 void CacheStorageDispatcherHost::OnCacheStorageMatch( | 189 void CacheStorageDispatcherHost::OnCacheStorageMatch( |
| 190 int thread_id, | 190 int thread_id, |
| 191 int request_id, | 191 int request_id, |
| 192 const url::Origin& origin, | 192 const url::Origin& origin, |
| 193 const ServiceWorkerFetchRequest& request, | 193 const ServiceWorkerFetchRequest& request, |
| 194 const CacheStorageCacheQueryParams& match_params) { | 194 const CacheStorageCacheQueryParams& match_params) { |
| 195 TRACE_EVENT0("CacheStorage", | 195 TRACE_EVENT0("CacheStorage", |
| 196 "CacheStorageDispatcherHost::OnCacheStorageMatch"); | 196 "CacheStorageDispatcherHost::OnCacheStorageMatch"); |
| 197 if (!OriginCanAccessCacheStorage(origin)) { | 197 if (!OriginCanAccessCacheStorage(origin)) { |
| 198 bad_message::ReceivedBadMessage(this, bad_message::CSDH_INVALID_ORIGIN); | 198 bad_message::ReceivedBadMessage(this, bad_message::CSDH_INVALID_ORIGIN); |
| 199 return; | 199 return; |
| 200 } | 200 } |
| 201 std::unique_ptr<ServiceWorkerFetchRequest> scoped_request( | 201 std::unique_ptr<ServiceWorkerFetchRequest> scoped_request( |
| 202 new ServiceWorkerFetchRequest(request.url, request.method, | 202 new ServiceWorkerFetchRequest(request.url, request.method, |
| 203 request.headers, request.referrer, | 203 request.headers, request.referrer, |
| 204 request.is_reload)); | 204 request.is_reload)); |
| 205 | 205 |
| 206 if (match_params.cache_name.is_null()) { | 206 if (match_params.cache_name.is_null()) { |
| 207 context_->cache_manager()->MatchAllCaches( | 207 context_->cache_manager()->MatchAllCaches( |
| 208 GURL(origin.Serialize()), std::move(scoped_request), match_params, | 208 origin.GetURL(), std::move(scoped_request), match_params, |
| 209 base::Bind(&CacheStorageDispatcherHost::OnCacheStorageMatchCallback, | 209 base::Bind(&CacheStorageDispatcherHost::OnCacheStorageMatchCallback, |
| 210 this, thread_id, request_id)); | 210 this, thread_id, request_id)); |
| 211 return; | 211 return; |
| 212 } | 212 } |
| 213 context_->cache_manager()->MatchCache( | 213 context_->cache_manager()->MatchCache( |
| 214 GURL(origin.Serialize()), | 214 origin.GetURL(), base::UTF16ToUTF8(match_params.cache_name.string()), |
| 215 base::UTF16ToUTF8(match_params.cache_name.string()), | |
| 216 std::move(scoped_request), match_params, | 215 std::move(scoped_request), match_params, |
| 217 base::Bind(&CacheStorageDispatcherHost::OnCacheStorageMatchCallback, this, | 216 base::Bind(&CacheStorageDispatcherHost::OnCacheStorageMatchCallback, this, |
| 218 thread_id, request_id)); | 217 thread_id, request_id)); |
| 219 } | 218 } |
| 220 | 219 |
| 221 void CacheStorageDispatcherHost::OnCacheMatch( | 220 void CacheStorageDispatcherHost::OnCacheMatch( |
| 222 int thread_id, | 221 int thread_id, |
| 223 int request_id, | 222 int request_id, |
| 224 int cache_id, | 223 int cache_id, |
| 225 const ServiceWorkerFetchRequest& request, | 224 const ServiceWorkerFetchRequest& request, |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 539 UUIDToBlobDataHandleList::iterator it = blob_handle_store_.find(uuid); | 538 UUIDToBlobDataHandleList::iterator it = blob_handle_store_.find(uuid); |
| 540 if (it == blob_handle_store_.end()) | 539 if (it == blob_handle_store_.end()) |
| 541 return; | 540 return; |
| 542 DCHECK(!it->second.empty()); | 541 DCHECK(!it->second.empty()); |
| 543 it->second.pop_front(); | 542 it->second.pop_front(); |
| 544 if (it->second.empty()) | 543 if (it->second.empty()) |
| 545 blob_handle_store_.erase(it); | 544 blob_handle_store_.erase(it); |
| 546 } | 545 } |
| 547 | 546 |
| 548 } // namespace content | 547 } // namespace content |
| OLD | NEW |