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

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: nit Created 5 years, 5 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 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");

Powered by Google App Engine
This is Rietveld 408576698