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

Unified Diff: content/renderer/service_worker/embedded_worker_instance_client_impl.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
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 2cbc9989b89de29784a4080fc2048a13dc9490eb..4b399b8819280218acbf37621858e962e0783aed 100644
--- a/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
+++ b/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
@@ -12,6 +12,7 @@
#include "content/public/common/content_client.h"
#include "content/renderer/service_worker/embedded_worker_devtools_agent.h"
#include "content/renderer/service_worker/service_worker_context_client.h"
+#include "services/service_manager/public/cpp/interface_registry.h"
#include "third_party/WebKit/public/web/WebEmbeddedWorker.h"
#include "third_party/WebKit/public/web/WebEmbeddedWorkerStartData.h"
@@ -25,6 +26,12 @@ void EmbeddedWorkerInstanceClientImpl::Create(
new EmbeddedWorkerInstanceClientImpl(dispatcher, std::move(request));
}
+void EmbeddedWorkerInstanceClientImpl::ExposeInterfacesToBrowser(
+ service_manager::InterfaceRegistry* interface_registry) {
+ DCHECK(renderer_request_.is_pending());
+ interface_registry->Bind(std::move(renderer_request_));
+}
+
void EmbeddedWorkerInstanceClientImpl::StopWorkerCompleted() {
DCHECK(embedded_worker_id_);
DCHECK(stop_callback_);
@@ -37,10 +44,15 @@ void EmbeddedWorkerInstanceClientImpl::StopWorkerCompleted() {
}
void EmbeddedWorkerInstanceClientImpl::StartWorker(
- const EmbeddedWorkerStartParams& params) {
+ const EmbeddedWorkerStartParams& params,
+ service_manager::mojom::InterfaceProviderPtr browser_interfaces,
+ service_manager::mojom::InterfaceProviderRequest renderer_request) {
+ DCHECK(ChildThreadImpl::current());
TRACE_EVENT0("ServiceWorker",
"EmbeddedWorkerInstanceClientImpl::StartWorker");
embedded_worker_id_ = params.embedded_worker_id;
+ remote_interfaces_.Bind(std::move(browser_interfaces));
+ renderer_request_ = std::move(renderer_request);
std::unique_ptr<EmbeddedWorkerDispatcher::WorkerWrapper> wrapper =
dispatcher_->StartWorkerContext(
@@ -55,6 +67,7 @@ void EmbeddedWorkerInstanceClientImpl::StartWorker(
void EmbeddedWorkerInstanceClientImpl::StopWorker(
const StopWorkerCallback& callback) {
+ DCHECK(ChildThreadImpl::current());
DCHECK(embedded_worker_id_);
DCHECK(!stop_callback_);
TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerInstanceClientImpl::StopWorker");

Powered by Google App Engine
This is Rietveld 408576698