| 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 cea1d5570ecab90b2cb0c02feed5cab115e45184..ce5686381e8009f90565288ad05e72d0f52d0433 100644
|
| --- a/content/browser/service_worker/service_worker_registration.cc
|
| +++ b/content/browser/service_worker/service_worker_registration.cc
|
| @@ -275,19 +275,27 @@ void ServiceWorkerRegistration::OnDeleteFinished(
|
| void ServiceWorkerRegistration::Clear() {
|
| context_->storage()->NotifyDoneUninstallingRegistration(this);
|
|
|
| - if (installing_version()) {
|
| - installing_version()->Doom();
|
| - UnsetVersion(installing_version());
|
| + ChangedVersionAttributesMask mask;
|
| + if (installing_version_) {
|
| + installing_version_->Doom();
|
| + installing_version_ = NULL;
|
| + mask.add(ChangedVersionAttributesMask::INSTALLING_VERSION);
|
| }
|
| -
|
| - if (waiting_version()) {
|
| - waiting_version()->Doom();
|
| - UnsetVersion(waiting_version());
|
| + if (waiting_version_) {
|
| + waiting_version_->Doom();
|
| + waiting_version_ = NULL;
|
| + mask.add(ChangedVersionAttributesMask::WAITING_VERSION);
|
| }
|
| -
|
| - if (active_version()) {
|
| - active_version()->Doom();
|
| - UnsetVersion(active_version());
|
| + if (active_version_) {
|
| + active_version_->Doom();
|
| + active_version_->RemoveListener(this);
|
| + active_version_ = NULL;
|
| + mask.add(ChangedVersionAttributesMask::ACTIVE_VERSION);
|
| + }
|
| + if (mask.changed()) {
|
| + ServiceWorkerRegistrationInfo info = GetInfo();
|
| + FOR_EACH_OBSERVER(Listener, listeners_,
|
| + OnVersionAttributesChanged(this, mask, info));
|
| }
|
| }
|
|
|
|
|