Index: content/browser/service_worker/service_worker_provider_host.cc |
diff --git a/content/browser/service_worker/service_worker_provider_host.cc b/content/browser/service_worker/service_worker_provider_host.cc |
index 648d55a16b73b266f5b2ccc83c4e0274475cd8d1..0fe4bca91976fcb755e08bd6d41e52715baa199f 100644 |
--- a/content/browser/service_worker/service_worker_provider_host.cc |
+++ b/content/browser/service_worker/service_worker_provider_host.cc |
@@ -180,7 +180,7 @@ void ServiceWorkerProviderHost::SetControllerVersionAttribute( |
return; // Could be NULL in some tests. |
// SetController message should be sent only for controllees. |
- DCHECK_NE(SERVICE_WORKER_PROVIDER_FOR_CONTROLLER, provider_type_); |
+ DCHECK(IsProviderForClient()); |
Send(new ServiceWorkerMsg_SetControllerServiceWorker( |
render_thread_id_, provider_id(), |
CreateAndRegisterServiceWorkerHandle(version), notify_controllerchange)); |
@@ -208,6 +208,20 @@ bool ServiceWorkerProviderHost::SetHostedVersionId(int64 version_id) { |
return true; |
} |
+bool ServiceWorkerProviderHost::IsProviderForClient() const { |
+ switch (provider_type_) { |
+ case SERVICE_WORKER_PROVIDER_FOR_WINDOW: |
+ case SERVICE_WORKER_PROVIDER_FOR_WORKER: |
+ case SERVICE_WORKER_PROVIDER_FOR_SHARED_WORKER: |
+ return true; |
+ case SERVICE_WORKER_PROVIDER_FOR_CONTROLLER: |
+ case SERVICE_WORKER_PROVIDER_UNKNOWN: |
+ return false; |
+ } |
+ NOTREACHED() << provider_type_; |
+ return false; |
+} |
+ |
blink::WebServiceWorkerClientType ServiceWorkerProviderHost::client_type() |
const { |
switch (provider_type_) { |
@@ -247,7 +261,7 @@ void ServiceWorkerProviderHost::DisassociateRegistration() { |
return; |
// Disassociation message should be sent only for controllees. |
- DCHECK_NE(SERVICE_WORKER_PROVIDER_FOR_CONTROLLER, provider_type_); |
+ DCHECK(IsProviderForClient()); |
Send(new ServiceWorkerMsg_DisassociateRegistration( |
render_thread_id_, provider_id())); |
} |
@@ -587,7 +601,7 @@ void ServiceWorkerProviderHost::SendAssociateRegistrationMessage() { |
associated_registration_->active_version()); |
// Association message should be sent only for controllees. |
- DCHECK_NE(SERVICE_WORKER_PROVIDER_FOR_CONTROLLER, provider_type_); |
+ DCHECK(IsProviderForClient()); |
dispatcher_host_->Send(new ServiceWorkerMsg_AssociateRegistration( |
render_thread_id_, provider_id(), handle->GetObjectInfo(), attrs)); |
} |