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 85b79ac8fae5a9277babc0c3386a9399f79e8f2d..1b65fe1ff76fd976d3623cc3dbba0a95e23175ed 100644 |
--- a/content/renderer/service_worker/service_worker_context_client.cc |
+++ b/content/renderer/service_worker/service_worker_context_client.cc |
@@ -12,6 +12,7 @@ |
#include "base/threading/thread_checker.h" |
#include "base/threading/thread_local.h" |
#include "base/trace_event/trace_event.h" |
+#include "content/child/navigator_connect/service_port_dispatcher_impl.h" |
#include "content/child/notifications/notification_data_conversions.h" |
#include "content/child/request_extra_data.h" |
#include "content/child/service_worker/service_worker_dispatcher.h" |
@@ -181,7 +182,7 @@ struct ServiceWorkerContextClient::WorkerContextData { |
IDMap<blink::WebServiceWorkerSkipWaitingCallbacks, IDMapOwnPointer>; |
explicit WorkerContextData(ServiceWorkerContextClient* owner) |
- : weak_factory(owner) {} |
+ : weak_factory(owner), proxy_weak_factory(owner->proxy_) {} |
~WorkerContextData() { |
DCHECK(thread_checker.CalledOnValidThread()); |
@@ -203,6 +204,7 @@ struct ServiceWorkerContextClient::WorkerContextData { |
base::ThreadChecker thread_checker; |
base::WeakPtrFactory<ServiceWorkerContextClient> weak_factory; |
+ base::WeakPtrFactory<blink::WebServiceWorkerContextProxy> proxy_weak_factory; |
}; |
ServiceWorkerContextClient* |
@@ -251,8 +253,6 @@ void ServiceWorkerContextClient::OnMessageReceived( |
OnNotificationClickEvent) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_PushEvent, OnPushEvent) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_GeofencingEvent, OnGeofencingEvent) |
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CrossOriginConnectEvent, |
- OnCrossOriginConnectEvent) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_MessageToWorker, OnPostMessage) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CrossOriginMessageToWorker, |
OnCrossOriginMessageToWorker) |
@@ -349,6 +349,11 @@ void ServiceWorkerContextClient::workerContextStarted( |
// willDestroyWorkerContext. |
context_.reset(new WorkerContextData(this)); |
+ // Register Mojo services. |
+ context_->service_registry.ServiceRegistry::AddService( |
+ base::Bind(&ServicePortDispatcherImpl::Create, |
+ context_->proxy_weak_factory.GetWeakPtr())); |
+ |
SetRegistrationInServiceWorkerGlobalScope(); |
Send(new EmbeddedWorkerHostMsg_WorkerScriptLoaded( |
@@ -497,13 +502,6 @@ void ServiceWorkerContextClient::didHandleSyncEvent( |
result)); |
} |
-void ServiceWorkerContextClient::didHandleCrossOriginConnectEvent( |
- int request_id, |
- bool accept_connection) { |
- Send(new ServiceWorkerHostMsg_CrossOriginConnectEventFinished( |
- GetRoutingID(), request_id, accept_connection)); |
-} |
- |
blink::WebServiceWorkerNetworkProvider* |
ServiceWorkerContextClient::createServiceWorkerNetworkProvider( |
blink::WebDataSource* data_source) { |
@@ -736,18 +734,6 @@ void ServiceWorkerContextClient::OnGeofencingEvent( |
request_id)); |
} |
-void ServiceWorkerContextClient::OnCrossOriginConnectEvent( |
- int request_id, |
- const NavigatorConnectClient& client) { |
- TRACE_EVENT0("ServiceWorker", |
- "ServiceWorkerContextClient::OnCrossOriginConnectEvent"); |
- blink::WebCrossOriginServiceWorkerClient web_client; |
- web_client.origin = client.origin; |
- web_client.targetURL = client.target_url; |
- web_client.clientID = client.message_port_id; |
- proxy_->dispatchCrossOriginConnectEvent(request_id, web_client); |
-} |
- |
void ServiceWorkerContextClient::OnPostMessage( |
const base::string16& message, |
const std::vector<TransferredMessagePort>& sent_message_ports, |