Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2066)

Unified Diff: content/renderer/service_worker/service_worker_context_client.cc

Issue 1202453002: ServiceWorker: Implement navigate() method in WindowClient (chromium side). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 93edf9847eca5c96a45939f8004dace04551a531..1d9728f2329f88d8424df6110f13ffb23c2edf72 100644
--- a/content/renderer/service_worker/service_worker_context_client.cc
+++ b/content/renderer/service_worker/service_worker_context_client.cc
@@ -262,6 +262,8 @@ void ServiceWorkerContextClient::OnMessageReceived(
OnOpenWindowError)
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_FocusClientResponse,
OnFocusClientResponse)
+ IPC_MESSAGE_HANDLER(ServiceWorkerMsg_NavigateClientResponse,
+ OnNavigateClientResponse)
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidSkipWaiting, OnDidSkipWaiting)
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidClaimClients, OnDidClaimClients)
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ClaimClientsError, OnClaimClientsError)
@@ -613,6 +615,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);
@@ -922,6 +934,30 @@ 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* callback =
+ context_->client_callbacks.Lookup(request_id);
+ if (!callback) {
+ NOTREACHED() << "Got stray response: " << request_id;
+ return;
+ }
+
+ if (client.IsEmpty()) {
+ callback->onSuccess(nullptr);
+ } else {
+ scoped_ptr<blink::WebServiceWorkerClientInfo> web_client(
+ new blink::WebServiceWorkerClientInfo(
+ ToWebServiceWorkerClientInfo(client)));
+ callback->onSuccess(web_client.release());
+ }
+
+ context_->client_callbacks.Remove(request_id);
+}
+
void ServiceWorkerContextClient::OnDidSkipWaiting(int request_id) {
TRACE_EVENT0("ServiceWorker",
"ServiceWorkerContextClient::OnDidSkipWaiting");

Powered by Google App Engine
This is Rietveld 408576698