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

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

Issue 2313653002: ServiceWorker: Exchange InterfaceProviders when starting worker thread (Closed)
Patch Set: Updated comments and fixed a typo 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 ee456fa58fc82dec4ecd6e911b407039c1588244..2714d0abe773097409ff9098ab2b63bf052bced2 100644
--- a/content/browser/service_worker/embedded_worker_instance.cc
+++ b/content/browser/service_worker/embedded_worker_instance.cc
@@ -599,7 +599,14 @@ void EmbeddedWorkerInstance::OnRegisteredToDevToolsManager(
void EmbeddedWorkerInstance::SendMojoStartWorker(
std::unique_ptr<EmbeddedWorkerStartParams> params) {
- client_->StartWorker(*params);
+ service_manager::mojom::InterfaceProviderPtr remote_interfaces;
+ service_manager::mojom::InterfaceProviderRequest request =
+ mojo::GetProxy(&remote_interfaces);
+ remote_interfaces_->Bind(std::move(remote_interfaces));
+ service_manager::mojom::InterfaceProviderPtr exposed_interfaces;
+ interface_registry_->Bind(mojo::GetProxy(&exposed_interfaces));
+ client_->StartWorker(*params, std::move(exposed_interfaces),
+ std::move(request));
registry_->BindWorkerToProcess(process_id(), embedded_worker_id());
TRACE_EVENT_ASYNC_STEP_PAST1("ServiceWorker", "EmbeddedWorkerInstance::Start",
this, "SendStartWorker", "Status", "mojo");
@@ -699,17 +706,22 @@ void EmbeddedWorkerInstance::OnThreadStarted(int thread_id) {
thread_id_ = thread_id;
FOR_EACH_OBSERVER(Listener, listener_list_, OnThreadStarted());
- service_manager::mojom::InterfaceProviderPtr exposed_interfaces;
- interface_registry_->Bind(mojo::GetProxy(&exposed_interfaces));
- service_manager::mojom::InterfaceProviderPtr remote_interfaces;
- service_manager::mojom::InterfaceProviderRequest request =
- mojo::GetProxy(&remote_interfaces);
- remote_interfaces_->Bind(std::move(remote_interfaces));
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(SetupMojoOnUIThread, process_id(), thread_id_,
- base::Passed(&request),
- base::Passed(exposed_interfaces.PassInterface())));
+ // This code is for BackgroundSync and FetchEvent, which have been already
+ // mojofied. Interfaces are exchanged at StartWorker when mojo for the service
+ // worker is enabled, so this code isn't necessary when the flag is enabled.
+ if (!ServiceWorkerUtils::IsMojoForServiceWorkerEnabled()) {
+ service_manager::mojom::InterfaceProviderPtr exposed_interfaces;
+ interface_registry_->Bind(mojo::GetProxy(&exposed_interfaces));
+ service_manager::mojom::InterfaceProviderPtr remote_interfaces;
+ service_manager::mojom::InterfaceProviderRequest request =
+ mojo::GetProxy(&remote_interfaces);
+ remote_interfaces_->Bind(std::move(remote_interfaces));
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(SetupMojoOnUIThread, process_id(), thread_id_,
+ base::Passed(&request),
+ base::Passed(exposed_interfaces.PassInterface())));
+ }
}
void EmbeddedWorkerInstance::OnScriptLoadFailed() {
« 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