Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2111)

Unified Diff: content/browser/service_worker/service_worker_provider_host.cc

Issue 477593007: ServiceWorker: Make '.ready' return a promise to be resolved with ServiceWorkerRegistration (2/3) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remake more Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 bd0c5ea3197e310de114dc2618f42abc0db0618d..0157d3a48bb4e5f7229882421584cf3d0f8aa2e3 100644
--- a/content/browser/service_worker/service_worker_provider_host.cc
+++ b/content/browser/service_worker/service_worker_provider_host.cc
@@ -144,21 +144,43 @@ bool ServiceWorkerProviderHost::SetHostedVersionId(int64 version_id) {
void ServiceWorkerProviderHost::AssociateRegistration(
ServiceWorkerRegistration* registration) {
DCHECK(CanAssociateRegistration(registration));
+
+ if (dispatcher_host_) {
+ ServiceWorkerRegistrationHandle* handle =
+ dispatcher_host_->GetOrCreateRegistrationHandle(
+ provider_id(), registration);
+
+ ServiceWorkerVersionAttributes attrs;
+ attrs.installing = handle->CreateServiceWorkerHandleAndPass(
+ registration->installing_version());
+ attrs.waiting = handle->CreateServiceWorkerHandleAndPass(
+ registration->waiting_version());
+ attrs.active = handle->CreateServiceWorkerHandleAndPass(
+ registration->active_version());
+
+ dispatcher_host_->Send(new ServiceWorkerMsg_AssociateRegistration(
+ kDocumentMainThreadId, provider_id(), handle->GetObjectInfo(), attrs));
nasko 2014/09/10 01:15:56 nit: Is this expected to change in the immediate f
nhiroki 2014/09/10 01:50:47 Good point. I think we don't have any plan to chan
nasko 2014/09/10 04:15:10 Fixing in another CL is fine. Please file a bug so
nhiroki 2014/09/10 05:28:47 I took a deeper look and found that this is not al
+ }
+
associated_registration_ = registration;
- registration->AddListener(this);
+ associated_registration_->AddListener(this);
UpdatePotentialControllees(registration->installing_version(),
registration->waiting_version(),
registration->active_version());
- SetControllerVersionAttribute(registration->active_version());
}
void ServiceWorkerProviderHost::UnassociateRegistration() {
if (!associated_registration_.get())
return;
- associated_registration_->RemoveListener(this);
- associated_registration_ = NULL;
UpdatePotentialControllees(NULL, NULL, NULL);
SetControllerVersionAttribute(NULL);
michaeln 2014/09/09 02:22:02 does the change in order of operations matter here
nhiroki 2014/09/09 08:49:08 Just to make consistent with AssociateRegistration
+ associated_registration_->RemoveListener(this);
+ associated_registration_ = NULL;
+
+ if (dispatcher_host_) {
+ dispatcher_host_->Send(new ServiceWorkerMsg_UnassociateRegistration(
+ kDocumentMainThreadId, provider_id()));
+ }
}
scoped_ptr<ServiceWorkerRequestHandler>

Powered by Google App Engine
This is Rietveld 408576698