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 2efc2fa6dfecf33e8565dfc1418b37d98699ceb8..c050aac245d798398e0fa1c983090a46a146027d 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" |
@@ -180,7 +181,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()); |
@@ -200,6 +201,7 @@ struct ServiceWorkerContextClient::WorkerContextData { |
base::ThreadChecker thread_checker; |
base::WeakPtrFactory<ServiceWorkerContextClient> weak_factory; |
+ base::WeakPtrFactory<blink::WebServiceWorkerContextProxy> proxy_weak_factory; |
}; |
ServiceWorkerContextClient* |
@@ -248,8 +250,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) |
@@ -346,6 +346,11 @@ void ServiceWorkerContextClient::workerContextStarted( |
// willDestroyWorkerContext. |
context_.reset(new WorkerContextData(this)); |
+ // Register Mojo services. |
+ service_registry_.ServiceRegistry::AddService( |
+ base::Bind(&ServicePortDispatcherImpl::Create, |
+ context_->proxy_weak_factory.GetWeakPtr())); |
+ |
SetRegistrationInServiceWorkerGlobalScope(); |
Send(new EmbeddedWorkerHostMsg_WorkerScriptLoaded( |
@@ -525,13 +530,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) { |
@@ -769,18 +767,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, |