Index: content/renderer/service_worker/service_worker_context_client.cc |
diff --git a/content/renderer/service_worker/service_worker_context_client.cc b/content/renderer/service_worker/service_worker_context_client.cc |
index fb363187fd6025eb3ab42b8b37c010d254d11037..ffad2bb7dd650bfed32feff3793e4411862040fb 100644 |
--- a/content/renderer/service_worker/service_worker_context_client.cc |
+++ b/content/renderer/service_worker/service_worker_context_client.cc |
@@ -471,6 +471,7 @@ ServiceWorkerContextClient::ServiceWorkerContextClient( |
const GURL& service_worker_scope, |
const GURL& script_url, |
mojom::ServiceWorkerEventDispatcherRequest dispatcher_request, |
+ mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo instance_host, |
std::unique_ptr<EmbeddedWorkerInstanceClientImpl> embedded_worker_client) |
: embedded_worker_id_(embedded_worker_id), |
service_worker_version_id_(service_worker_version_id), |
@@ -481,6 +482,9 @@ ServiceWorkerContextClient::ServiceWorkerContextClient( |
proxy_(nullptr), |
pending_dispatcher_request_(std::move(dispatcher_request)), |
embedded_worker_client_(std::move(embedded_worker_client)) { |
+ instance_host_ = |
+ mojom::ThreadSafeEmbeddedWorkerInstanceHostAssociatedPtr::Create( |
+ std::move(instance_host), main_thread_task_runner_); |
TRACE_EVENT_ASYNC_BEGIN0("ServiceWorker", |
"ServiceWorkerContextClient::StartingWorkerContext", |
this); |
@@ -568,14 +572,16 @@ void ServiceWorkerContextClient::clearCachedMetadata( |
} |
void ServiceWorkerContextClient::workerReadyForInspection() { |
- Send(new EmbeddedWorkerHostMsg_WorkerReadyForInspection(embedded_worker_id_)); |
+ DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); |
+ (*instance_host_)->OnReadyForInspection(); |
} |
void ServiceWorkerContextClient::workerContextFailedToStart() { |
DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); |
DCHECK(!proxy_); |
- Send(new EmbeddedWorkerHostMsg_WorkerScriptLoadFailed(embedded_worker_id_)); |
+ (*instance_host_)->OnScriptLoadFailed(); |
+ (*instance_host_)->OnStopped(); |
RenderThreadImpl::current()->embedded_worker_dispatcher()-> |
WorkerContextDestroyed(embedded_worker_id_); |
@@ -585,7 +591,7 @@ void ServiceWorkerContextClient::workerScriptLoaded() { |
DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); |
DCHECK(!proxy_); |
- Send(new EmbeddedWorkerHostMsg_WorkerScriptLoaded(embedded_worker_id_)); |
+ (*instance_host_)->OnScriptLoaded(); |
} |
bool ServiceWorkerContextClient::hasAssociatedRegistration() { |
@@ -623,9 +629,9 @@ void ServiceWorkerContextClient::workerContextStarted( |
SetRegistrationInServiceWorkerGlobalScope(registration_info, version_attrs); |
- Send(new EmbeddedWorkerHostMsg_WorkerThreadStarted( |
- embedded_worker_id_, WorkerThread::GetCurrentId(), |
- provider_context_->provider_id())); |
+ (*instance_host_) |
+ ->OnThreadStarted(WorkerThread::GetCurrentId(), |
+ provider_context_->provider_id()); |
TRACE_EVENT_ASYNC_STEP_INTO0( |
"ServiceWorker", |
@@ -635,8 +641,8 @@ void ServiceWorkerContextClient::workerContextStarted( |
} |
void ServiceWorkerContextClient::didEvaluateWorkerScript(bool success) { |
- Send(new EmbeddedWorkerHostMsg_WorkerScriptEvaluated( |
- embedded_worker_id_, success)); |
+ DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); |
+ (*instance_host_)->OnScriptEvaluated(success); |
// Schedule a task to send back WorkerStarted asynchronously, |
// so that at the time we send it we can be sure that the |
@@ -699,6 +705,8 @@ void ServiceWorkerContextClient::workerContextDestroyed() { |
return; |
} |
+ (*instance_host_)->OnStopped(); |
+ |
// Now we should be able to free the WebEmbeddedWorker container on the |
// main thread. |
main_thread_task_runner_->PostTask( |
@@ -717,9 +725,9 @@ void ServiceWorkerContextClient::reportException( |
int line_number, |
int column_number, |
const blink::WebString& source_url) { |
- Send(new EmbeddedWorkerHostMsg_ReportException( |
- embedded_worker_id_, error_message.utf16(), line_number, column_number, |
- blink::WebStringToGURL(source_url))); |
+ (*instance_host_) |
+ ->OnReportException(error_message.utf16(), line_number, column_number, |
+ blink::WebStringToGURL(source_url)); |
} |
void ServiceWorkerContextClient::reportConsoleMessage( |
@@ -728,15 +736,9 @@ void ServiceWorkerContextClient::reportConsoleMessage( |
const blink::WebString& message, |
int line_number, |
const blink::WebString& source_url) { |
- EmbeddedWorkerHostMsg_ReportConsoleMessage_Params params; |
- params.source_identifier = source; |
- params.message_level = level; |
- params.message = message.utf16(); |
- params.line_number = line_number; |
- params.source_url = blink::WebStringToGURL(source_url); |
- |
- Send(new EmbeddedWorkerHostMsg_ReportConsoleMessage( |
- embedded_worker_id_, params)); |
+ (*instance_host_) |
+ ->OnReportConsoleMessage(source, level, message.utf16(), line_number, |
+ blink::WebStringToGURL(source_url)); |
} |
void ServiceWorkerContextClient::sendDevToolsMessage( |
@@ -1072,7 +1074,7 @@ void ServiceWorkerContextClient::SendWorkerStarted() { |
TRACE_EVENT_ASYNC_END0("ServiceWorker", |
"ServiceWorkerContextClient::StartingWorkerContext", |
this); |
- Send(new EmbeddedWorkerHostMsg_WorkerStarted(embedded_worker_id_)); |
+ (*instance_host_)->OnStarted(); |
} |
void ServiceWorkerContextClient::SetRegistrationInServiceWorkerGlobalScope( |