| Index: content/renderer/service_worker/service_worker_script_context.cc
|
| diff --git a/content/renderer/service_worker/service_worker_script_context.cc b/content/renderer/service_worker/service_worker_script_context.cc
|
| index f0fde5a5c85cfb9f13842e681eb272922ba49cf7..4d00ff7aca8c7880ce116e9f4568aa5de9a66996 100644
|
| --- a/content/renderer/service_worker/service_worker_script_context.cc
|
| +++ b/content/renderer/service_worker/service_worker_script_context.cc
|
| @@ -118,6 +118,10 @@ void ServiceWorkerScriptContext::OnMessageReceived(
|
| OnCrossOriginMessageToWorker)
|
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetClientDocuments,
|
| OnDidGetClientDocuments)
|
| + IPC_MESSAGE_HANDLER(ServiceWorkerMsg_OpenWindowResponse,
|
| + OnOpenWindowResponse)
|
| + IPC_MESSAGE_HANDLER(ServiceWorkerMsg_OpenWindowError,
|
| + OnOpenWindowError)
|
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_FocusClientResponse,
|
| OnFocusClientResponse)
|
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidSkipWaiting, OnDidSkipWaiting)
|
| @@ -222,6 +226,13 @@ void ServiceWorkerScriptContext::GetClientDocuments(
|
| GetRoutingID(), request_id));
|
| }
|
|
|
| +void ServiceWorkerScriptContext::OpenWindow(
|
| + const GURL& url, blink::WebServiceWorkerClientCallbacks* callbacks) {
|
| + DCHECK(callbacks);
|
| + int request_id = pending_client_callbacks_.Add(callbacks);
|
| + Send(new ServiceWorkerHostMsg_OpenWindow(GetRoutingID(), request_id, url));
|
| +}
|
| +
|
| void ServiceWorkerScriptContext::PostMessageToDocument(
|
| int client_id,
|
| const base::string16& message,
|
| @@ -451,6 +462,44 @@ void ServiceWorkerScriptContext::OnDidGetClientDocuments(
|
| pending_clients_callbacks_.Remove(request_id);
|
| }
|
|
|
| +void ServiceWorkerScriptContext::OnOpenWindowResponse(
|
| + int request_id,
|
| + const ServiceWorkerClientInfo& client) {
|
| + TRACE_EVENT0("ServiceWorker",
|
| + "ServiceWorkerScriptContext::OnOpenWindowResponse");
|
| + blink::WebServiceWorkerClientCallbacks* callbacks =
|
| + pending_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(web_client.release());
|
| + pending_client_callbacks_.Remove(request_id);
|
| +}
|
| +
|
| +void ServiceWorkerScriptContext::OnOpenWindowError(int request_id) {
|
| + TRACE_EVENT0("ServiceWorker",
|
| + "ServiceWorkerScriptContext::OnOpenWindowError");
|
| + blink::WebServiceWorkerClientCallbacks* callbacks =
|
| + pending_client_callbacks_.Lookup(request_id);
|
| + if (!callbacks) {
|
| + NOTREACHED() << "Got stray response: " << request_id;
|
| + return;
|
| + }
|
| + scoped_ptr<blink::WebServiceWorkerError> error(
|
| + new blink::WebServiceWorkerError(
|
| + blink::WebServiceWorkerError::ErrorTypeUnknown,
|
| + "Something went wrong while trying to open the window."));
|
| + callbacks->onError(error.release());
|
| + pending_client_callbacks_.Remove(request_id);
|
| +}
|
| +
|
| void ServiceWorkerScriptContext::OnFocusClientResponse(int request_id,
|
| bool result) {
|
| TRACE_EVENT0("ServiceWorker",
|
|
|