OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |