Chromium Code Reviews| Index: content/browser/service_worker/service_worker_cache.cc |
| diff --git a/content/browser/service_worker/service_worker_cache.cc b/content/browser/service_worker/service_worker_cache.cc |
| index a597a0303f94627fa4dc56d4e8233fba140fd733..33ab46938983ff6a07b8e016e289fe202d8d7ee3 100644 |
| --- a/content/browser/service_worker/service_worker_cache.cc |
| +++ b/content/browser/service_worker/service_worker_cache.cc |
| @@ -9,6 +9,7 @@ |
| #include "base/files/file_path.h" |
| #include "base/guid.h" |
| #include "base/message_loop/message_loop_proxy.h" |
| +#include "base/metrics/histogram.h" |
|
Ilya Sherman
2015/03/13 22:58:19
Please include histogram_macros instead.
jkarlin
2015/03/14 01:47:19
Done.
|
| #include "base/profiler/scoped_tracker.h" |
| #include "base/strings/string_util.h" |
| #include "content/browser/service_worker/service_worker_cache.pb.h" |
| @@ -435,14 +436,14 @@ void ServiceWorkerCache::Put(scoped_ptr<ServiceWorkerFetchRequest> request, |
| if (!response->blob_uuid.empty()) { |
| if (!blob_storage_context_) { |
| - callback.Run(ErrorTypeStorage, scoped_ptr<ServiceWorkerResponse>(), |
| + callback.Run(ERROR_TYPE_STORAGE, scoped_ptr<ServiceWorkerResponse>(), |
| scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| } |
| blob_data_handle = |
| blob_storage_context_->GetBlobDataFromUUID(response->blob_uuid); |
| if (!blob_data_handle) { |
| - callback.Run(ErrorTypeStorage, scoped_ptr<ServiceWorkerResponse>(), |
| + callback.Run(ERROR_TYPE_STORAGE, scoped_ptr<ServiceWorkerResponse>(), |
| scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| } |
| @@ -478,7 +479,7 @@ void ServiceWorkerCache::Match(scoped_ptr<ServiceWorkerFetchRequest> request, |
| InitBackend(); |
| break; |
| case BACKEND_CLOSED: |
| - callback.Run(ErrorTypeStorage, scoped_ptr<ServiceWorkerResponse>(), |
| + callback.Run(ERROR_TYPE_STORAGE, scoped_ptr<ServiceWorkerResponse>(), |
| scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| case BACKEND_OPEN: |
| @@ -501,7 +502,7 @@ void ServiceWorkerCache::Delete(scoped_ptr<ServiceWorkerFetchRequest> request, |
| InitBackend(); |
| break; |
| case BACKEND_CLOSED: |
| - callback.Run(ErrorTypeStorage); |
| + callback.Run(ERROR_TYPE_STORAGE); |
| return; |
| case BACKEND_OPEN: |
| DCHECK(backend_); |
| @@ -521,7 +522,7 @@ void ServiceWorkerCache::Keys(const RequestsCallback& callback) { |
| InitBackend(); |
| break; |
| case BACKEND_CLOSED: |
| - callback.Run(ErrorTypeStorage, scoped_ptr<Requests>()); |
| + callback.Run(ERROR_TYPE_STORAGE, scoped_ptr<Requests>()); |
| return; |
| case BACKEND_OPEN: |
| DCHECK(backend_); |
| @@ -600,7 +601,7 @@ void ServiceWorkerCache::MatchImpl( |
| const ResponseCallback& callback) { |
| DCHECK(backend_state_ != BACKEND_UNINITIALIZED); |
| if (backend_state_ != BACKEND_OPEN) { |
| - callback.Run(ErrorTypeStorage, scoped_ptr<ServiceWorkerResponse>(), |
| + callback.Run(ERROR_TYPE_STORAGE, scoped_ptr<ServiceWorkerResponse>(), |
| scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| } |
| @@ -625,9 +626,10 @@ void ServiceWorkerCache::MatchDidOpenEntry( |
| scoped_ptr<MatchContext> match_context, |
| int rv) { |
| if (rv != net::OK) { |
| - match_context->original_callback.Run(ServiceWorkerCache::ErrorTypeNotFound, |
| - scoped_ptr<ServiceWorkerResponse>(), |
| - scoped_ptr<storage::BlobDataHandle>()); |
| + match_context->original_callback.Run( |
| + ServiceWorkerCache::ERROR_TYPE_NOT_FOUND, |
| + scoped_ptr<ServiceWorkerResponse>(), |
| + scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| } |
| @@ -646,7 +648,7 @@ void ServiceWorkerCache::MatchDidReadMetadata( |
| scoped_ptr<MatchContext> match_context, |
| scoped_ptr<ServiceWorkerCacheMetadata> metadata) { |
| if (!metadata) { |
| - match_context->original_callback.Run(ServiceWorkerCache::ErrorTypeStorage, |
| + match_context->original_callback.Run(ServiceWorkerCache::ERROR_TYPE_STORAGE, |
| scoped_ptr<ServiceWorkerResponse>(), |
| scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| @@ -680,14 +682,15 @@ void ServiceWorkerCache::MatchDidReadMetadata( |
| if (!VaryMatches(match_context->request->headers, cached_request_headers, |
| response->headers)) { |
| - match_context->original_callback.Run(ServiceWorkerCache::ErrorTypeNotFound, |
| - scoped_ptr<ServiceWorkerResponse>(), |
| - scoped_ptr<storage::BlobDataHandle>()); |
| + match_context->original_callback.Run( |
| + ServiceWorkerCache::ERROR_TYPE_NOT_FOUND, |
| + scoped_ptr<ServiceWorkerResponse>(), |
| + scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| } |
| if (match_context->entry->GetDataSize(INDEX_RESPONSE_BODY) == 0) { |
| - match_context->original_callback.Run(ServiceWorkerCache::ErrorTypeOK, |
| + match_context->original_callback.Run(ServiceWorkerCache::ERROR_TYPE_OK, |
| match_context->response.Pass(), |
| scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| @@ -695,7 +698,7 @@ void ServiceWorkerCache::MatchDidReadMetadata( |
| // Stream the response body into a blob. |
| if (!match_context->blob_storage_context) { |
| - match_context->original_callback.Run(ServiceWorkerCache::ErrorTypeStorage, |
| + match_context->original_callback.Run(ServiceWorkerCache::ERROR_TYPE_STORAGE, |
| scoped_ptr<ServiceWorkerResponse>(), |
| scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| @@ -732,7 +735,7 @@ void ServiceWorkerCache::MatchDidReadResponseBodyData( |
| "422516 ServiceWorkerCache::MatchDidReadResponseBodyData")); |
| if (rv < 0) { |
| - match_context->original_callback.Run(ServiceWorkerCache::ErrorTypeStorage, |
| + match_context->original_callback.Run(ServiceWorkerCache::ERROR_TYPE_STORAGE, |
| scoped_ptr<ServiceWorkerResponse>(), |
| scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| @@ -771,7 +774,7 @@ void ServiceWorkerCache::MatchDidReadResponseBodyData( |
| void ServiceWorkerCache::MatchDoneWithBody( |
| scoped_ptr<MatchContext> match_context) { |
| if (!match_context->blob_storage_context) { |
| - match_context->original_callback.Run(ServiceWorkerCache::ErrorTypeStorage, |
| + match_context->original_callback.Run(ServiceWorkerCache::ERROR_TYPE_STORAGE, |
| scoped_ptr<ServiceWorkerResponse>(), |
| scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| @@ -781,7 +784,7 @@ void ServiceWorkerCache::MatchDoneWithBody( |
| match_context->blob_storage_context->AddFinishedBlob( |
| match_context->blob_data.get())); |
| - match_context->original_callback.Run(ServiceWorkerCache::ErrorTypeOK, |
| + match_context->original_callback.Run(ServiceWorkerCache::ERROR_TYPE_OK, |
| match_context->response.Pass(), |
| blob_data_handle.Pass()); |
| } |
| @@ -789,7 +792,7 @@ void ServiceWorkerCache::MatchDoneWithBody( |
| void ServiceWorkerCache::PutImpl(scoped_ptr<PutContext> put_context) { |
| DCHECK(backend_state_ != BACKEND_UNINITIALIZED); |
| if (backend_state_ != BACKEND_OPEN) { |
| - put_context->callback.Run(ErrorTypeStorage, |
| + put_context->callback.Run(ERROR_TYPE_STORAGE, |
| scoped_ptr<ServiceWorkerResponse>(), |
| scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| @@ -806,7 +809,7 @@ void ServiceWorkerCache::PutImpl(scoped_ptr<PutContext> put_context) { |
| void ServiceWorkerCache::PutDidDelete(scoped_ptr<PutContext> put_context, |
| ErrorType delete_error) { |
| if (backend_state_ != BACKEND_OPEN) { |
| - put_context->callback.Run(ErrorTypeStorage, |
| + put_context->callback.Run(ERROR_TYPE_STORAGE, |
| scoped_ptr<ServiceWorkerResponse>(), |
| scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| @@ -830,7 +833,7 @@ void ServiceWorkerCache::PutDidDelete(scoped_ptr<PutContext> put_context, |
| void ServiceWorkerCache::PutDidCreateEntry(scoped_ptr<PutContext> put_context, |
| int rv) { |
| if (rv != net::OK) { |
| - put_context->callback.Run(ServiceWorkerCache::ErrorTypeExists, |
| + put_context->callback.Run(ServiceWorkerCache::ERROR_TYPE_EXISTS, |
| scoped_ptr<ServiceWorkerResponse>(), |
| scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| @@ -871,7 +874,7 @@ void ServiceWorkerCache::PutDidCreateEntry(scoped_ptr<PutContext> put_context, |
| scoped_ptr<std::string> serialized(new std::string()); |
| if (!metadata.SerializeToString(serialized.get())) { |
| - put_context->callback.Run(ServiceWorkerCache::ErrorTypeStorage, |
| + put_context->callback.Run(ServiceWorkerCache::ERROR_TYPE_STORAGE, |
| scoped_ptr<ServiceWorkerResponse>(), |
| scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| @@ -903,7 +906,7 @@ void ServiceWorkerCache::PutDidWriteHeaders(scoped_ptr<PutContext> put_context, |
| int rv) { |
| if (rv != expected_bytes) { |
| put_context->cache_entry->Doom(); |
| - put_context->callback.Run(ServiceWorkerCache::ErrorTypeStorage, |
| + put_context->callback.Run(ServiceWorkerCache::ERROR_TYPE_STORAGE, |
| scoped_ptr<ServiceWorkerResponse>(), |
| scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| @@ -921,7 +924,7 @@ void ServiceWorkerCache::PutDidWriteHeaders(scoped_ptr<PutContext> put_context, |
| put_context->cache_entry->GetDataSize(INDEX_HEADERS)); |
| } |
| - put_context->callback.Run(ServiceWorkerCache::ErrorTypeOK, |
| + put_context->callback.Run(ServiceWorkerCache::ERROR_TYPE_OK, |
| put_context->response.Pass(), |
| scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| @@ -957,7 +960,7 @@ void ServiceWorkerCache::PutDidWriteBlobToCache( |
| if (!success) { |
| put_context->cache_entry->Doom(); |
| - put_context->callback.Run(ServiceWorkerCache::ErrorTypeStorage, |
| + put_context->callback.Run(ServiceWorkerCache::ERROR_TYPE_STORAGE, |
| scoped_ptr<ServiceWorkerResponse>(), |
| scoped_ptr<storage::BlobDataHandle>()); |
| return; |
| @@ -972,7 +975,7 @@ void ServiceWorkerCache::PutDidWriteBlobToCache( |
| put_context->cache_entry->GetDataSize(INDEX_RESPONSE_BODY)); |
| } |
| - put_context->callback.Run(ServiceWorkerCache::ErrorTypeOK, |
| + put_context->callback.Run(ServiceWorkerCache::ERROR_TYPE_OK, |
| put_context->response.Pass(), |
| put_context->out_blob_data_handle.Pass()); |
| } |
| @@ -982,7 +985,7 @@ void ServiceWorkerCache::DeleteImpl( |
| const ErrorCallback& callback) { |
| DCHECK(backend_state_ != BACKEND_UNINITIALIZED); |
| if (backend_state_ != BACKEND_OPEN) { |
| - callback.Run(ErrorTypeStorage); |
| + callback.Run(ERROR_TYPE_STORAGE); |
| return; |
| } |
| scoped_ptr<disk_cache::Entry*> entry(new disk_cache::Entry*); |
| @@ -1010,7 +1013,7 @@ void ServiceWorkerCache::DeleteDidOpenEntry( |
| const scoped_refptr<storage::QuotaManagerProxy>& quota_manager_proxy, |
| int rv) { |
| if (rv != net::OK) { |
| - callback.Run(ServiceWorkerCache::ErrorTypeNotFound); |
| + callback.Run(ServiceWorkerCache::ERROR_TYPE_NOT_FOUND); |
| return; |
| } |
| @@ -1026,13 +1029,13 @@ void ServiceWorkerCache::DeleteDidOpenEntry( |
| } |
| entry->Doom(); |
| - callback.Run(ServiceWorkerCache::ErrorTypeOK); |
| + callback.Run(ServiceWorkerCache::ERROR_TYPE_OK); |
| } |
| void ServiceWorkerCache::KeysImpl(const RequestsCallback& callback) { |
| DCHECK(backend_state_ != BACKEND_UNINITIALIZED); |
| if (backend_state_ != BACKEND_OPEN) { |
| - callback.Run(ErrorTypeStorage, scoped_ptr<Requests>()); |
| + callback.Run(ERROR_TYPE_STORAGE, scoped_ptr<Requests>()); |
| return; |
| } |
| @@ -1074,13 +1077,13 @@ void ServiceWorkerCache::KeysDidOpenNextEntry( |
| } |
| if (rv < 0) { |
| - keys_context->original_callback.Run(ErrorTypeStorage, |
| + keys_context->original_callback.Run(ERROR_TYPE_STORAGE, |
| scoped_ptr<Requests>()); |
| return; |
| } |
| if (backend_state_ != BACKEND_OPEN) { |
| - keys_context->original_callback.Run(ErrorTypeNotFound, |
| + keys_context->original_callback.Run(ERROR_TYPE_NOT_FOUND, |
| scoped_ptr<Requests>()); |
| return; |
| } |
| @@ -1107,7 +1110,7 @@ void ServiceWorkerCache::KeysProcessNextEntry( |
| const Entries::iterator& iter) { |
| if (iter == keys_context->entries.end()) { |
| // All done. Return all of the keys. |
| - keys_context->original_callback.Run(ErrorTypeOK, |
| + keys_context->original_callback.Run(ERROR_TYPE_OK, |
| keys_context->out_keys.Pass()); |
| return; |
| } |
| @@ -1192,12 +1195,12 @@ void ServiceWorkerCache::CreateBackendDidCreate( |
| scoped_ptr<ScopedBackendPtr> backend_ptr, |
| int rv) { |
| if (rv != net::OK) { |
| - callback.Run(ServiceWorkerCache::ErrorTypeStorage); |
| + callback.Run(ServiceWorkerCache::ERROR_TYPE_STORAGE); |
| return; |
| } |
| backend_ = backend_ptr->Pass(); |
| - callback.Run(ServiceWorkerCache::ErrorTypeOK); |
| + callback.Run(ServiceWorkerCache::ERROR_TYPE_OK); |
| } |
| void ServiceWorkerCache::InitBackend() { |
| @@ -1217,10 +1220,14 @@ void ServiceWorkerCache::InitBackend() { |
| void ServiceWorkerCache::InitDone(ErrorType error) { |
| initializing_ = false; |
| - backend_state_ = (error == ErrorTypeOK && backend_ && |
| + backend_state_ = (error == ERROR_TYPE_OK && backend_ && |
| backend_state_ == BACKEND_UNINITIALIZED) |
| ? BACKEND_OPEN |
| : BACKEND_CLOSED; |
| + |
| + UMA_HISTOGRAM_ENUMERATION("ServiceWorkerCache.InitBackendResult", |
| + error, ErrorType::ERROR_TYPE_LAST); |
|
Ilya Sherman
2015/03/13 22:58:19
The final argument should be larger than any valid
jkarlin
2015/03/14 01:47:19
Thanks!
|
| + |
| scheduler_->CompleteOperationAndRunNext(); |
| } |