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 4c3009f86f96cda46e19dfa41187140d5cfb94e8..31e189b9969d1c3549536b31ab95f0a6a4674095 100644 |
--- a/content/browser/service_worker/service_worker_version.cc |
+++ b/content/browser/service_worker/service_worker_version.cc |
@@ -491,19 +491,22 @@ void ServiceWorkerVersion::StopWorker(const StatusCallback& callback) { |
TRACE_EVENT_SCOPE_THREAD, "Script", script_url_.spec(), |
"Status", VersionStatusToString(status_)); |
- if (running_status() == EmbeddedWorkerStatus::STOPPED) { |
- RunSoon(base::Bind(callback, SERVICE_WORKER_OK)); |
- return; |
- } |
- |
- if (stop_callbacks_.empty()) { |
- ServiceWorkerStatusCode status = embedded_worker_->Stop(); |
- if (status != SERVICE_WORKER_OK) { |
- RunSoon(base::Bind(callback, status)); |
+ switch (running_status()) { |
+ case EmbeddedWorkerStatus::STARTING: |
+ case EmbeddedWorkerStatus::RUNNING: |
+ if (!embedded_worker_->Stop()) { |
falken
2017/01/05 06:40:17
can you add a TODO here about how the return value
shimazu
2017/01/05 07:42:56
Done.
|
+ RunSoon(base::Bind(callback, SERVICE_WORKER_ERROR_IPC_FAILED)); |
+ return; |
+ } |
+ stop_callbacks_.push_back(callback); |
+ return; |
+ case EmbeddedWorkerStatus::STOPPING: |
+ stop_callbacks_.push_back(callback); |
+ return; |
+ case EmbeddedWorkerStatus::STOPPED: |
+ RunSoon(base::Bind(callback, SERVICE_WORKER_OK)); |
return; |
- } |
} |
- stop_callbacks_.push_back(callback); |
} |
void ServiceWorkerVersion::ScheduleUpdate() { |