Index: content/browser/service_worker/service_worker_registration.cc |
diff --git a/content/browser/service_worker/service_worker_registration.cc b/content/browser/service_worker/service_worker_registration.cc |
index ae48d1dc0f889baa6052bc62e1d2a5c58ee1ed00..929384d21b85f2c811423cb24c25bedfded89869 100644 |
--- a/content/browser/service_worker/service_worker_registration.cc |
+++ b/content/browser/service_worker/service_worker_registration.cc |
@@ -272,6 +272,7 @@ void ServiceWorkerRegistration::ActivateWaitingVersion() { |
// "6. Set serviceWorkerRegistration.activeWorker to activatingWorker." |
// "7. Set serviceWorkerRegistration.waitingWorker to null." |
SetActiveVersion(activating_version.get()); |
+ FOR_EACH_OBSERVER(Listener, listeners_, OnActivateVersion(this)); |
// "8. Run the [[UpdateState]] algorithm passing registration.activeWorker and |
// "activating" as arguments." |
@@ -303,10 +304,12 @@ void ServiceWorkerRegistration::OnActivateEventFinished( |
id(), pattern().GetOrigin(), |
base::Bind(&ServiceWorkerRegistration::OnDeleteFinished, this)); |
// But not from memory if there is a version in the pipeline. |
- if (installing_version()) |
+ if (installing_version()) { |
is_deleted_ = false; |
- else |
+ } else { |
is_uninstalled_ = true; |
+ FOR_EACH_OBSERVER(Listener, listeners_, OnRegistrationFailed(this)); |
+ } |
} |
return; |
} |
@@ -355,6 +358,9 @@ void ServiceWorkerRegistration::Clear() { |
FOR_EACH_OBSERVER(Listener, listeners_, |
OnVersionAttributesChanged(this, mask, info)); |
} |
+ |
+ FOR_EACH_OBSERVER( |
+ Listener, listeners_, OnRegistrationFinishedUninstalling(this)); |
} |
void ServiceWorkerRegistration::OnRestoreFinished( |