Chromium Code Reviews| 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 3dc5852db3e5365fa87660bdb176733fd58c959e..100b645c5c9689a767fba2c7899ffd745b9c4b04 100644 |
| --- a/content/renderer/service_worker/service_worker_context_client.cc |
| +++ b/content/renderer/service_worker/service_worker_context_client.cc |
| @@ -262,6 +262,10 @@ void ServiceWorkerContextClient::OnMessageReceived( |
| OnOpenWindowError) |
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_FocusClientResponse, |
| OnFocusClientResponse) |
| + IPC_MESSAGE_HANDLER(ServiceWorkerMsg_NavigateClientResponse, |
| + OnNavigateClientResponse) |
| + IPC_MESSAGE_HANDLER(ServiceWorkerMsg_NavigateClientError, |
| + OnNavigateClientError) |
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidSkipWaiting, OnDidSkipWaiting) |
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidClaimClients, OnDidClaimClients) |
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ClaimClientsError, OnClaimClientsError) |
| @@ -575,6 +579,16 @@ void ServiceWorkerContextClient::focus( |
| base::UTF16ToUTF8(uuid))); |
| } |
| +void ServiceWorkerContextClient::navigate( |
| + const blink::WebString& uuid, |
| + const blink::WebURL& url, |
| + blink::WebServiceWorkerClientCallbacks* callback) { |
| + DCHECK(callback); |
| + int request_id = context_->client_callbacks.Add(callback); |
| + Send(new ServiceWorkerHostMsg_NavigateClient(GetRoutingID(), request_id, |
| + base::UTF16ToUTF8(uuid), url)); |
| +} |
| + |
| void ServiceWorkerContextClient::skipWaiting( |
| blink::WebServiceWorkerSkipWaitingCallbacks* callbacks) { |
| DCHECK(callbacks); |
| @@ -879,6 +893,46 @@ void ServiceWorkerContextClient::OnFocusClientResponse( |
| context_->client_callbacks.Remove(request_id); |
| } |
| +void ServiceWorkerContextClient::OnNavigateClientResponse( |
| + int request_id, |
| + const ServiceWorkerClientInfo& client) { |
| + TRACE_EVENT0("ServiceWorker", |
| + "ServiceWorkerContextClient::OnNavigateClientResponse"); |
| + 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(web_client.release()); |
| + context_->client_callbacks.Remove(request_id); |
| +} |
| + |
| +void ServiceWorkerContextClient::OnNavigateClientError( |
| + int request_id, |
| + const std::string& message) { |
|
palmer
2015/07/15 17:07:54
What is the possible range of values for |message|
zino
2015/07/17 11:26:11
It's just error message.
It uses the same way with
palmer
2015/07/20 23:15:32
How about passing a reason code (an enum) and the
zino
2015/07/23 05:56:17
Done. (without using enum, because the message isn
|
| + TRACE_EVENT0("ServiceWorker", |
| + "ServiceWorkerContextClient::OnNavigateClientError"); |
| + blink::WebServiceWorkerClientCallbacks* callbacks = |
| + context_->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, |
| + blink::WebString::fromUTF8(message))); |
| + callbacks->onError(error.release()); |
| + context_->client_callbacks.Remove(request_id); |
| +} |
| + |
| void ServiceWorkerContextClient::OnDidSkipWaiting(int request_id) { |
| TRACE_EVENT0("ServiceWorker", |
| "ServiceWorkerContextClient::OnDidSkipWaiting"); |