Index: content/browser/service_worker/service_worker_context_wrapper.cc |
diff --git a/content/browser/service_worker/service_worker_context_wrapper.cc b/content/browser/service_worker/service_worker_context_wrapper.cc |
index 5298a24f7a823fa3f444f8e0969e074d601158d5..c73909fb130c1519ee03dcb56b5da0f49074fd59 100644 |
--- a/content/browser/service_worker/service_worker_context_wrapper.cc |
+++ b/content/browser/service_worker/service_worker_context_wrapper.cc |
@@ -6,6 +6,7 @@ |
#include <map> |
+#include "base/barrier_closure.h" |
#include "base/files/file_path.h" |
#include "base/logging.h" |
#include "base/threading/sequenced_worker_pool.h" |
@@ -13,6 +14,7 @@ |
#include "content/browser/service_worker/service_worker_context_core.h" |
#include "content/browser/service_worker/service_worker_context_observer.h" |
#include "content/browser/service_worker/service_worker_process_manager.h" |
+#include "content/browser/service_worker/service_worker_quota_client.h" |
#include "content/public/browser/browser_context.h" |
#include "content/public/browser/browser_thread.h" |
#include "net/url_request/url_request_context_getter.h" |
@@ -183,35 +185,26 @@ void ServiceWorkerContextWrapper::DidGetAllRegistrationsForGetAllOrigins( |
} |
namespace { |
+void StatusCodeToBoolCallbackAdapter( |
+ const ServiceWorkerContext::ResultCallback& callback, |
+ ServiceWorkerStatusCode code) { |
+ callback.Run(code == ServiceWorkerStatusCode::SERVICE_WORKER_OK); |
+} |
void EmptySuccessCallback(bool success) { |
} |
- |
} // namespace |
-void ServiceWorkerContextWrapper::DeleteForOrigin(const GURL& origin_url) { |
+void ServiceWorkerContextWrapper::DeleteForOrigin( |
+ const GURL& origin_url, |
+ const ResultCallback& result) { |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
- context_core_->storage()->GetAllRegistrations(base::Bind( |
- &ServiceWorkerContextWrapper::DidGetAllRegistrationsForDeleteForOrigin, |
- this, |
- origin_url)); |
+ context_core_->UnregisterServiceWorkers( |
+ origin_url, base::Bind(&StatusCodeToBoolCallbackAdapter, result)); |
} |
-void ServiceWorkerContextWrapper::DidGetAllRegistrationsForDeleteForOrigin( |
- const GURL& origin, |
- const std::vector<ServiceWorkerRegistrationInfo>& registrations) { |
- DCHECK_CURRENTLY_ON(BrowserThread::IO); |
- |
- for (std::vector<ServiceWorkerRegistrationInfo>::const_iterator it = |
- registrations.begin(); |
- it != registrations.end(); |
- ++it) { |
- const ServiceWorkerRegistrationInfo& registration_info = *it; |
- if (origin == registration_info.pattern.GetOrigin()) { |
- UnregisterServiceWorker(registration_info.pattern, |
- base::Bind(&EmptySuccessCallback)); |
- } |
- } |
+void ServiceWorkerContextWrapper::DeleteForOrigin(const GURL& origin_url) { |
+ DeleteForOrigin(origin_url, base::Bind(&EmptySuccessCallback)); |
} |
void ServiceWorkerContextWrapper::AddObserver( |
@@ -256,6 +249,9 @@ void ServiceWorkerContextWrapper::InitInternal( |
return; |
} |
DCHECK(!context_core_); |
+ if (quota_manager_proxy) { |
+ quota_manager_proxy->RegisterClient(new ServiceWorkerQuotaClient(this)); |
+ } |
context_core_.reset(new ServiceWorkerContextCore(user_data_directory, |
stores_task_runner, |
database_task_runner, |