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 dc8f4d2fa205508fddd2a205226affcc63e42576..b678899e665b1e97fcaafe4f93a287d183f63281 100644 |
--- a/content/renderer/service_worker/service_worker_context_client.cc |
+++ b/content/renderer/service_worker/service_worker_context_client.cc |
@@ -261,6 +261,7 @@ void ServiceWorkerContextClient::OnMessageReceived( |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_MessageToWorker, OnPostMessage) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CrossOriginMessageToWorker, |
OnCrossOriginMessageToWorker) |
+ IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetClient, OnDidGetClient) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetClients, OnDidGetClients) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_OpenWindowResponse, |
OnOpenWindowResponse) |
@@ -293,6 +294,15 @@ blink::WebURL ServiceWorkerContextClient::scope() const { |
return service_worker_scope_; |
} |
+void ServiceWorkerContextClient::getClient( |
+ const blink::WebString& id, |
+ blink::WebServiceWorkerClientCallbacks* callbacks) { |
+ DCHECK(callbacks); |
+ int request_id = context_->client_callbacks.Add(callbacks); |
+ Send(new ServiceWorkerHostMsg_GetClient( |
+ GetRoutingID(), request_id, base::UTF16ToUTF8(base::StringPiece16(id)))); |
+} |
+ |
void ServiceWorkerContextClient::getClients( |
const blink::WebServiceWorkerClientQueryOptions& weboptions, |
blink::WebServiceWorkerClientsCallbacks* callbacks) { |
@@ -823,6 +833,21 @@ void ServiceWorkerContextClient::OnCrossOriginMessageToWorker( |
proxy_->dispatchCrossOriginMessageEvent(web_client, message, ports); |
} |
+void ServiceWorkerContextClient::OnDidGetClient( |
+ int request_id, |
+ const ServiceWorkerClientInfo& client) { |
+ TRACE_EVENT0("ServiceWorker", "ServiceWorkerContextClient::OnDidGetClient"); |
+ blink::WebServiceWorkerClientCallbacks* callbacks = |
+ context_->client_callbacks.Lookup(request_id); |
+ if (!callbacks) { |
+ NOTREACHED() << "Got stray response: " << request_id; |
+ return; |
+ } |
+ callbacks->onSuccess(adoptWebPtr(new blink::WebServiceWorkerClientInfo( |
+ ToWebServiceWorkerClientInfo(client)))); |
+ context_->client_callbacks.Remove(request_id); |
+} |
+ |
void ServiceWorkerContextClient::OnDidGetClients( |
int request_id, const std::vector<ServiceWorkerClientInfo>& clients) { |
TRACE_EVENT0("ServiceWorker", |