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 5d0f45bf51830a5d3836fb0453b83955e101fb8d..c4563824ff1ce9c577ffaef9241fa25e4f67fd04 100644 |
--- a/content/renderer/service_worker/service_worker_context_client.cc |
+++ b/content/renderer/service_worker/service_worker_context_client.cc |
@@ -266,6 +266,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) |
@@ -298,6 +299,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) { |
@@ -872,6 +882,26 @@ 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; |
+ } |
+ scoped_ptr<blink::WebServiceWorkerClientInfo> web_client; |
+ if (!client.IsEmpty()) { |
+ DCHECK(client.IsValid()); |
+ web_client.reset(new blink::WebServiceWorkerClientInfo( |
+ ToWebServiceWorkerClientInfo(client))); |
+ } |
+ callbacks->onSuccess(blink::adoptWebPtr(web_client.release())); |
+ context_->client_callbacks.Remove(request_id); |
+} |
+ |
void ServiceWorkerContextClient::OnDidGetClients( |
int request_id, const std::vector<ServiceWorkerClientInfo>& clients) { |
TRACE_EVENT0("ServiceWorker", |
@@ -909,7 +939,7 @@ void ServiceWorkerContextClient::OnOpenWindowResponse( |
web_client.reset(new blink::WebServiceWorkerClientInfo( |
ToWebServiceWorkerClientInfo(client))); |
} |
- callbacks->onSuccess(adoptWebPtr(web_client.release())); |
+ callbacks->onSuccess(blink::adoptWebPtr(web_client.release())); |
context_->client_callbacks.Remove(request_id); |
} |
@@ -945,7 +975,7 @@ void ServiceWorkerContextClient::OnFocusClientResponse( |
scoped_ptr<blink::WebServiceWorkerClientInfo> web_client ( |
new blink::WebServiceWorkerClientInfo( |
ToWebServiceWorkerClientInfo(client))); |
- callback->onSuccess(adoptWebPtr(web_client.release())); |
+ callback->onSuccess(blink::adoptWebPtr(web_client.release())); |
} else { |
callback->onError(blink::WebServiceWorkerError( |
blink::WebServiceWorkerError::ErrorTypeNotFound, |
@@ -972,7 +1002,7 @@ void ServiceWorkerContextClient::OnNavigateClientResponse( |
web_client.reset(new blink::WebServiceWorkerClientInfo( |
ToWebServiceWorkerClientInfo(client))); |
} |
- callbacks->onSuccess(adoptWebPtr(web_client.release())); |
+ callbacks->onSuccess(blink::adoptWebPtr(web_client.release())); |
context_->client_callbacks.Remove(request_id); |
} |