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

Unified Diff: content/renderer/service_worker/embedded_worker_instance_client_impl.cc

Issue 2596153002: service worker: Attempt to send WorkerStopped before ProviderDestroyed. (Closed)
Patch Set: Created 4 years 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
« no previous file with comments | « content/renderer/service_worker/embedded_worker_dispatcher.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/service_worker/embedded_worker_instance_client_impl.cc
diff --git a/content/renderer/service_worker/embedded_worker_instance_client_impl.cc b/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
index 38014c8cc62640fcf7258ef9d588d784c2c0b1c3..aa699bcf0c170284ae143f2fca0b89058d158178 100644
--- a/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
+++ b/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
@@ -28,12 +28,18 @@ void EmbeddedWorkerInstanceClientImpl::Create(
void EmbeddedWorkerInstanceClientImpl::StopWorkerCompleted() {
DCHECK(embedded_worker_id_);
DCHECK(stop_callback_);
- dispatcher_->UnregisterWorker(embedded_worker_id_.value());
- embedded_worker_id_.reset();
- stop_callback_.Run();
TRACE_EVENT0("ServiceWorker",
"EmbeddedWorkerInstanceClientImpl::StopWorkerCompleted");
+ // TODO(falken): The signals to the browser should be in the order:
+ // (1) WorkerStopped (via stop_callback_)
+ // (2) ProviderDestroyed (via UnregisterWorker destroying
+ // WebEmbeddedWorkerImpl)
+ // But this ordering is currently not guaranteed since the Mojo pipes are
+ // different. https://crbug.com/676526
+ stop_callback_.Run();
stop_callback_.Reset();
+ dispatcher_->UnregisterWorker(embedded_worker_id_.value());
+ embedded_worker_id_.reset();
wrapper_ = nullptr;
}
« no previous file with comments | « content/renderer/service_worker/embedded_worker_dispatcher.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698