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

Unified Diff: content/browser/service_worker/embedded_worker_instance.cc

Issue 2307543002: ServiceWorker: Mojofication of EWInstance::StopWorker (Closed)
Patch Set: Added a check of the status when detached Created 4 years, 2 months 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 | « no previous file | content/browser/service_worker/embedded_worker_instance_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/service_worker/embedded_worker_instance.cc
diff --git a/content/browser/service_worker/embedded_worker_instance.cc b/content/browser/service_worker/embedded_worker_instance.cc
index 17d4cd49e02c3021eb0f2b61f3865b94bf689789..842a57a357553eb9d6d591088973fd0bfc0b1306 100644
--- a/content/browser/service_worker/embedded_worker_instance.cc
+++ b/content/browser/service_worker/embedded_worker_instance.cc
@@ -460,8 +460,11 @@ void EmbeddedWorkerInstance::Start(
params->settings.v8_cache_options = GetV8CacheOptions();
mojom::EmbeddedWorkerInstanceClientRequest request;
- if (ServiceWorkerUtils::IsMojoForServiceWorkerEnabled())
+ if (ServiceWorkerUtils::IsMojoForServiceWorkerEnabled()) {
request = mojo::GetProxy(&client_);
+ client_.set_connection_error_handler(
+ base::Bind(&EmbeddedWorkerInstance::Detach, base::Unretained(this)));
+ }
inflight_start_task_.reset(
new StartTask(this, params->script_url, std::move(request)));
@@ -476,8 +479,15 @@ ServiceWorkerStatusCode EmbeddedWorkerInstance::Stop() {
// Abort an inflight start task.
inflight_start_task_.reset();
- ServiceWorkerStatusCode status =
- registry_->StopWorker(process_id(), embedded_worker_id_);
+ ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_IPC_FAILED;
+ if (ServiceWorkerUtils::IsMojoForServiceWorkerEnabled()) {
+ status = SERVICE_WORKER_OK;
+ client_->StopWorker(base::Bind(&EmbeddedWorkerRegistry::OnWorkerStopped,
+ base::Unretained(registry_.get()),
+ process_id(), embedded_worker_id()));
+ } else {
+ status = registry_->StopWorker(process_id(), embedded_worker_id_);
+ }
UMA_HISTOGRAM_ENUMERATION("ServiceWorker.SendStopWorker.Status", status,
SERVICE_WORKER_ERROR_MAX_VALUE);
// StopWorker could fail if we were starting up and don't have a process yet,
@@ -756,7 +766,7 @@ void EmbeddedWorkerInstance::OnDetached() {
}
void EmbeddedWorkerInstance::Detach() {
- registry_->RemoveWorker(process_id(), embedded_worker_id_);
+ registry_->DetachWorker(process_id(), embedded_worker_id());
OnDetached();
}
@@ -836,6 +846,7 @@ void EmbeddedWorkerInstance::ReleaseProcess() {
// Abort an inflight start task.
inflight_start_task_.reset();
+ client_.reset();
devtools_proxy_.reset();
process_handle_.reset();
status_ = EmbeddedWorkerStatus::STOPPED;
« no previous file with comments | « no previous file | content/browser/service_worker/embedded_worker_instance_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698