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

Side by Side Diff: content/renderer/service_worker/service_worker_context_client.cc

Issue 1439333002: Service Worker: Add Clients.get(id) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add layout test Created 4 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/service_worker/service_worker_context_client.h" 5 #include "content/renderer/service_worker/service_worker_context_client.h"
6 6
7 #include "base/lazy_instance.h" 7 #include "base/lazy_instance.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ActivateEvent, OnActivateEvent) 249 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ActivateEvent, OnActivateEvent)
250 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_FetchEvent, OnFetchEvent) 250 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_FetchEvent, OnFetchEvent)
251 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEvent) 251 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEvent)
252 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_NotificationClickEvent, 252 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_NotificationClickEvent,
253 OnNotificationClickEvent) 253 OnNotificationClickEvent)
254 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_PushEvent, OnPushEvent) 254 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_PushEvent, OnPushEvent)
255 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_GeofencingEvent, OnGeofencingEvent) 255 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_GeofencingEvent, OnGeofencingEvent)
256 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_MessageToWorker, OnPostMessage) 256 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_MessageToWorker, OnPostMessage)
257 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CrossOriginMessageToWorker, 257 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CrossOriginMessageToWorker,
258 OnCrossOriginMessageToWorker) 258 OnCrossOriginMessageToWorker)
259 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetClient, OnDidGetClient)
259 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetClients, OnDidGetClients) 260 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetClients, OnDidGetClients)
260 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_OpenWindowResponse, 261 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_OpenWindowResponse,
261 OnOpenWindowResponse) 262 OnOpenWindowResponse)
262 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_OpenWindowError, 263 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_OpenWindowError,
263 OnOpenWindowError) 264 OnOpenWindowError)
264 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_FocusClientResponse, 265 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_FocusClientResponse,
265 OnFocusClientResponse) 266 OnFocusClientResponse)
266 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_NavigateClientResponse, 267 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_NavigateClientResponse,
267 OnNavigateClientResponse) 268 OnNavigateClientResponse)
268 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_NavigateClientError, 269 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_NavigateClientError,
(...skipping 11 matching lines...) Expand all
280 mojo::InterfaceRequest<mojo::ServiceProvider> services, 281 mojo::InterfaceRequest<mojo::ServiceProvider> services,
281 mojo::ServiceProviderPtr exposed_services) { 282 mojo::ServiceProviderPtr exposed_services) {
282 context_->service_registry.Bind(services.Pass()); 283 context_->service_registry.Bind(services.Pass());
283 context_->service_registry.BindRemoteServiceProvider(exposed_services.Pass()); 284 context_->service_registry.BindRemoteServiceProvider(exposed_services.Pass());
284 } 285 }
285 286
286 blink::WebURL ServiceWorkerContextClient::scope() const { 287 blink::WebURL ServiceWorkerContextClient::scope() const {
287 return service_worker_scope_; 288 return service_worker_scope_;
288 } 289 }
289 290
291 void ServiceWorkerContextClient::getClient(
292 const blink::WebString& id,
293 blink::WebServiceWorkerClientCallbacks* callbacks) {
294 DCHECK(callbacks);
295 int request_id = context_->client_callbacks.Add(callbacks);
296 Send(new ServiceWorkerHostMsg_GetClient(
297 GetRoutingID(), request_id, base::UTF16ToUTF8(base::StringPiece16(id))));
298 }
299
290 void ServiceWorkerContextClient::getClients( 300 void ServiceWorkerContextClient::getClients(
291 const blink::WebServiceWorkerClientQueryOptions& weboptions, 301 const blink::WebServiceWorkerClientQueryOptions& weboptions,
292 blink::WebServiceWorkerClientsCallbacks* callbacks) { 302 blink::WebServiceWorkerClientsCallbacks* callbacks) {
293 DCHECK(callbacks); 303 DCHECK(callbacks);
294 int request_id = context_->clients_callbacks.Add(callbacks); 304 int request_id = context_->clients_callbacks.Add(callbacks);
295 ServiceWorkerClientQueryOptions options; 305 ServiceWorkerClientQueryOptions options;
296 options.client_type = weboptions.clientType; 306 options.client_type = weboptions.clientType;
297 options.include_uncontrolled = weboptions.includeUncontrolled; 307 options.include_uncontrolled = weboptions.includeUncontrolled;
298 Send(new ServiceWorkerHostMsg_GetClients( 308 Send(new ServiceWorkerHostMsg_GetClients(
299 GetRoutingID(), request_id, options)); 309 GetRoutingID(), request_id, options));
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 sent_message_ports, new_routing_ids, 816 sent_message_ports, new_routing_ids,
807 main_thread_task_runner_); 817 main_thread_task_runner_);
808 818
809 blink::WebCrossOriginServiceWorkerClient web_client; 819 blink::WebCrossOriginServiceWorkerClient web_client;
810 web_client.origin = client.origin; 820 web_client.origin = client.origin;
811 web_client.targetURL = client.target_url; 821 web_client.targetURL = client.target_url;
812 web_client.clientID = client.message_port_id; 822 web_client.clientID = client.message_port_id;
813 proxy_->dispatchCrossOriginMessageEvent(web_client, message, ports); 823 proxy_->dispatchCrossOriginMessageEvent(web_client, message, ports);
814 } 824 }
815 825
826 void ServiceWorkerContextClient::OnDidGetClient(
827 int request_id,
828 const ServiceWorkerClientInfo& client) {
829 TRACE_EVENT0("ServiceWorker", "ServiceWorkerContextClient::OnDidGetClient");
830 blink::WebServiceWorkerClientCallbacks* callbacks =
831 context_->client_callbacks.Lookup(request_id);
832 if (!callbacks) {
833 NOTREACHED() << "Got stray response: " << request_id;
834 return;
835 }
836 scoped_ptr<blink::WebServiceWorkerClientInfo> info;
837 info.reset(new blink::WebServiceWorkerClientInfo(
838 ToWebServiceWorkerClientInfo(client)));
839 callbacks->onSuccess(adoptWebPtr(info.release()));
840 context_->client_callbacks.Remove(request_id);
841 }
842
816 void ServiceWorkerContextClient::OnDidGetClients( 843 void ServiceWorkerContextClient::OnDidGetClients(
817 int request_id, const std::vector<ServiceWorkerClientInfo>& clients) { 844 int request_id, const std::vector<ServiceWorkerClientInfo>& clients) {
818 TRACE_EVENT0("ServiceWorker", 845 TRACE_EVENT0("ServiceWorker",
819 "ServiceWorkerContextClient::OnDidGetClients"); 846 "ServiceWorkerContextClient::OnDidGetClients");
820 blink::WebServiceWorkerClientsCallbacks* callbacks = 847 blink::WebServiceWorkerClientsCallbacks* callbacks =
821 context_->clients_callbacks.Lookup(request_id); 848 context_->clients_callbacks.Lookup(request_id);
822 if (!callbacks) { 849 if (!callbacks) {
823 NOTREACHED() << "Got stray response: " << request_id; 850 NOTREACHED() << "Got stray response: " << request_id;
824 return; 851 return;
825 } 852 }
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
981 } 1008 }
982 1009
983 base::WeakPtr<ServiceWorkerContextClient> 1010 base::WeakPtr<ServiceWorkerContextClient>
984 ServiceWorkerContextClient::GetWeakPtr() { 1011 ServiceWorkerContextClient::GetWeakPtr() {
985 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); 1012 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread());
986 DCHECK(context_); 1013 DCHECK(context_);
987 return context_->weak_factory.GetWeakPtr(); 1014 return context_->weak_factory.GetWeakPtr();
988 } 1015 }
989 1016
990 } // namespace content 1017 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698