Index: content/browser/service_worker/service_worker_version.cc |
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc |
index 64453fdb1ca136c38ed706cdf6305fac60381a26..494b5ba090626fdd06c7c671f2dba1c9a7ae5f38 100644 |
--- a/content/browser/service_worker/service_worker_version.cc |
+++ b/content/browser/service_worker/service_worker_version.cc |
@@ -389,9 +389,11 @@ void ServiceWorkerVersion::RemoveControllee( |
RemoveProcessFromWorker(provider_host->process_id()); |
if (HasControllee()) |
return; |
- ScheduleStopWorker(); |
- if (is_doomed_) |
+ if (is_doomed_) { |
DoomInternal(); |
+ return; |
+ } |
+ ScheduleStopWorker(); |
} |
void ServiceWorkerVersion::AddPotentialControllee( |
@@ -667,7 +669,9 @@ void ServiceWorkerVersion::ScheduleStopWorker() { |
} |
void ServiceWorkerVersion::DoomInternal() { |
+ DCHECK(!HasControllee()); |
SetStatus(REDUNDANT); |
+ StopWorker(base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
if (!context_) |
return; |
std::vector<ServiceWorkerDatabase::ResourceRecord> resources; |