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 6153b93a747902920cd1602d5151efd0853a289b..63e403a2847d3eb2e9bc5377e33b9d4823ac3061 100644 |
--- a/content/browser/service_worker/service_worker_provider_host.cc |
+++ b/content/browser/service_worker/service_worker_provider_host.cc |
@@ -89,7 +89,7 @@ void ServiceWorkerProviderHost::OnSkippedWaiting( |
return; |
ServiceWorkerVersion* active_version = registration->active_version(); |
DCHECK_EQ(active_version->status(), ServiceWorkerVersion::ACTIVATING); |
- SetControllerVersionAttribute(active_version); |
+ SetControllerVersionAttribute(active_version, true); |
falken
2015/01/26 08:45:13
nit: can you add /* should_notify_controller_chang
xiang
2015/01/28 05:38:35
Done.
|
} |
void ServiceWorkerProviderHost::SetDocumentUrl(const GURL& url) { |
@@ -102,7 +102,8 @@ void ServiceWorkerProviderHost::SetTopmostFrameUrl(const GURL& url) { |
} |
void ServiceWorkerProviderHost::SetControllerVersionAttribute( |
- ServiceWorkerVersion* version) { |
+ ServiceWorkerVersion* version, |
+ bool should_notify_controllerchange) { |
if (version == controlling_version_.get()) |
return; |
@@ -116,9 +117,6 @@ void ServiceWorkerProviderHost::SetControllerVersionAttribute( |
if (!dispatcher_host_) |
return; // Could be NULL in some tests. |
- bool should_notify_controllerchange = |
- previous_version && version && version->skip_waiting(); |
- |
dispatcher_host_->Send(new ServiceWorkerMsg_SetControllerServiceWorker( |
kDocumentMainThreadId, provider_id(), |
dispatcher_host_->CreateAndRegisterServiceWorkerHandle(version), |
@@ -148,16 +146,16 @@ bool ServiceWorkerProviderHost::SetHostedVersionId(int64 version_id) { |
} |
void ServiceWorkerProviderHost::AssociateRegistration( |
- ServiceWorkerRegistration* registration) { |
+ ServiceWorkerRegistration* registration, |
+ bool should_notify_controllerchange) { |
DCHECK(CanAssociateRegistration(registration)); |
- if (associated_registration_.get()) |
- DecreaseProcessReference(associated_registration_->pattern()); |
IncreaseProcessReference(registration->pattern()); |
associated_registration_ = registration; |
associated_registration_->AddListener(this); |
SendAssociateRegistrationMessage(); |
- SetControllerVersionAttribute(registration->active_version()); |
+ SetControllerVersionAttribute(registration->active_version(), |
+ should_notify_controllerchange); |
} |
void ServiceWorkerProviderHost::DisassociateRegistration() { |
@@ -166,7 +164,7 @@ void ServiceWorkerProviderHost::DisassociateRegistration() { |
DecreaseProcessReference(associated_registration_->pattern()); |
associated_registration_->RemoveListener(this); |
associated_registration_ = NULL; |
- SetControllerVersionAttribute(NULL); |
+ SetControllerVersionAttribute(NULL, false); |
if (dispatcher_host_) { |
dispatcher_host_->Send(new ServiceWorkerMsg_DisassociateRegistration( |
@@ -250,6 +248,17 @@ void ServiceWorkerProviderHost::GetClientInfo( |
kDocumentMainThreadId, embedded_worker_id, request_id, provider_id())); |
} |
+void ServiceWorkerProviderHost::SetController( |
+ ServiceWorkerRegistration* registration) { |
+ DCHECK(registration->active_version()); |
+ if (associated_registration_ == registration) { |
falken
2015/01/26 08:45:12
when does this happen? if this provider host is as
xiang
2015/01/28 05:38:35
This could happen when a registration associated t
falken
2015/01/28 08:59:49
I see, I was confused and thought SWProviderHost l
|
+ SetControllerVersionAttribute(registration->active_version(), true); |
+ return; |
+ } |
+ DisassociateRegistration(); |
+ AssociateRegistration(registration, true); |
falken
2015/01/26 08:45:12
/* should_notify_controller_change */
xiang
2015/01/28 05:38:35
Done. We don't need the flags now.
|
+} |
+ |
void ServiceWorkerProviderHost::AddScopedProcessReferenceToPattern( |
const GURL& pattern) { |
associated_patterns_.push_back(pattern); |