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 <map> | 7 #include <map> |
8 #include <memory> | 8 #include <memory> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 | 240 |
241 web_response->SetCorsExposedHeaderNames( | 241 web_response->SetCorsExposedHeaderNames( |
242 blink::WebVector<blink::WebString>(cors_exposed_header_names)); | 242 blink::WebVector<blink::WebString>(cors_exposed_header_names)); |
243 } | 243 } |
244 | 244 |
245 // Use this template in willDestroyWorkerContext to abort all the pending | 245 // Use this template in willDestroyWorkerContext to abort all the pending |
246 // events callbacks. | 246 // events callbacks. |
247 template <typename T> | 247 template <typename T> |
248 void AbortPendingEventCallbacks(T& callbacks) { | 248 void AbortPendingEventCallbacks(T& callbacks) { |
249 for (typename T::iterator it(&callbacks); !it.IsAtEnd(); it.Advance()) { | 249 for (typename T::iterator it(&callbacks); !it.IsAtEnd(); it.Advance()) { |
250 it.GetCurrentValue()->Run(SERVICE_WORKER_ERROR_ABORT, base::Time::Now()); | 250 std::move(*it.GetCurrentValue()) |
| 251 .Run(SERVICE_WORKER_ERROR_ABORT, base::Time::Now()); |
251 } | 252 } |
252 } | 253 } |
253 | 254 |
254 template <typename Key, typename Callback> | 255 template <typename Key, typename Callback> |
255 void AbortPendingEventCallbacks(std::map<Key, Callback>& callbacks) { | 256 void AbortPendingEventCallbacks(std::map<Key, Callback>& callbacks) { |
256 for (const auto& it : callbacks) | 257 for (auto& item : callbacks) |
257 it.second.Run(SERVICE_WORKER_ERROR_ABORT, base::Time::Now()); | 258 std::move(item.second).Run(SERVICE_WORKER_ERROR_ABORT, base::Time::Now()); |
258 } | 259 } |
259 | 260 |
260 } // namespace | 261 } // namespace |
261 | 262 |
262 // Holding data that needs to be bound to the worker context on the | 263 // Holding data that needs to be bound to the worker context on the |
263 // worker thread. | 264 // worker thread. |
264 struct ServiceWorkerContextClient::WorkerContextData { | 265 struct ServiceWorkerContextClient::WorkerContextData { |
265 using SimpleEventCallback = | 266 using SimpleEventCallback = |
266 base::Callback<void(ServiceWorkerStatusCode, base::Time)>; | 267 base::OnceCallback<void(ServiceWorkerStatusCode, base::Time)>; |
267 using ClientsCallbacksMap = | 268 using ClientsCallbacksMap = |
268 IDMap<std::unique_ptr<blink::WebServiceWorkerClientsCallbacks>>; | 269 IDMap<std::unique_ptr<blink::WebServiceWorkerClientsCallbacks>>; |
269 using ClaimClientsCallbacksMap = | 270 using ClaimClientsCallbacksMap = |
270 IDMap<std::unique_ptr<blink::WebServiceWorkerClientsClaimCallbacks>>; | 271 IDMap<std::unique_ptr<blink::WebServiceWorkerClientsClaimCallbacks>>; |
271 using ClientCallbacksMap = | 272 using ClientCallbacksMap = |
272 IDMap<std::unique_ptr<blink::WebServiceWorkerClientCallbacks>>; | 273 IDMap<std::unique_ptr<blink::WebServiceWorkerClientCallbacks>>; |
273 using SkipWaitingCallbacksMap = | 274 using SkipWaitingCallbacksMap = |
274 IDMap<std::unique_ptr<blink::WebServiceWorkerSkipWaitingCallbacks>>; | 275 IDMap<std::unique_ptr<blink::WebServiceWorkerSkipWaitingCallbacks>>; |
275 using ActivateEventCallbacksMap = | 276 using ActivateEventCallbacksMap = |
276 IDMap<std::unique_ptr<const DispatchActivateEventCallback>>; | 277 IDMap<std::unique_ptr<DispatchActivateEventCallback>>; |
277 using BackgroundFetchAbortEventCallbacksMap = | 278 using BackgroundFetchAbortEventCallbacksMap = |
278 IDMap<std::unique_ptr<const DispatchBackgroundFetchAbortEventCallback>>; | 279 IDMap<std::unique_ptr<DispatchBackgroundFetchAbortEventCallback>>; |
279 using BackgroundFetchClickEventCallbacksMap = | 280 using BackgroundFetchClickEventCallbacksMap = |
280 IDMap<std::unique_ptr<const DispatchBackgroundFetchClickEventCallback>>; | 281 IDMap<std::unique_ptr<DispatchBackgroundFetchClickEventCallback>>; |
281 using BackgroundFetchFailEventCallbacksMap = | 282 using BackgroundFetchFailEventCallbacksMap = |
282 IDMap<std::unique_ptr<const DispatchBackgroundFetchFailEventCallback>>; | 283 IDMap<std::unique_ptr<DispatchBackgroundFetchFailEventCallback>>; |
283 using BackgroundFetchedEventCallbacksMap = | 284 using BackgroundFetchedEventCallbacksMap = |
284 IDMap<std::unique_ptr<const DispatchBackgroundFetchedEventCallback>>; | 285 IDMap<std::unique_ptr<DispatchBackgroundFetchedEventCallback>>; |
285 using SyncEventCallbacksMap = IDMap<std::unique_ptr<const SyncCallback>>; | 286 using SyncEventCallbacksMap = IDMap<std::unique_ptr<SyncCallback>>; |
286 using NotificationClickEventCallbacksMap = | 287 using NotificationClickEventCallbacksMap = |
287 IDMap<std::unique_ptr<const DispatchNotificationClickEventCallback>>; | 288 IDMap<std::unique_ptr<DispatchNotificationClickEventCallback>>; |
288 using NotificationCloseEventCallbacksMap = | 289 using NotificationCloseEventCallbacksMap = |
289 IDMap<std::unique_ptr<const DispatchNotificationCloseEventCallback>>; | 290 IDMap<std::unique_ptr<DispatchNotificationCloseEventCallback>>; |
290 using PushEventCallbacksMap = | 291 using PushEventCallbacksMap = |
291 IDMap<std::unique_ptr<const DispatchPushEventCallback>>; | 292 IDMap<std::unique_ptr<DispatchPushEventCallback>>; |
292 using ExtendableMessageEventCallbacksMap = | 293 using ExtendableMessageEventCallbacksMap = |
293 IDMap<std::unique_ptr<const DispatchExtendableMessageEventCallback>>; | 294 IDMap<std::unique_ptr<DispatchExtendableMessageEventCallback>>; |
294 using NavigationPreloadRequestsMap = IDMap< | 295 using NavigationPreloadRequestsMap = IDMap< |
295 std::unique_ptr<ServiceWorkerContextClient::NavigationPreloadRequest>>; | 296 std::unique_ptr<ServiceWorkerContextClient::NavigationPreloadRequest>>; |
296 | 297 |
297 explicit WorkerContextData(ServiceWorkerContextClient* owner) | 298 explicit WorkerContextData(ServiceWorkerContextClient* owner) |
298 : event_dispatcher_binding(owner), | 299 : event_dispatcher_binding(owner), |
299 weak_factory(owner), | 300 weak_factory(owner), |
300 proxy_weak_factory(owner->proxy_) {} | 301 proxy_weak_factory(owner->proxy_) {} |
301 | 302 |
302 ~WorkerContextData() { | 303 ~WorkerContextData() { |
303 DCHECK(thread_checker.CalledOnValidThread()); | 304 DCHECK(thread_checker.CalledOnValidThread()); |
(...skipping 30 matching lines...) Expand all Loading... |
334 | 335 |
335 // Pending callbacks for Background Sync Events. | 336 // Pending callbacks for Background Sync Events. |
336 SyncEventCallbacksMap sync_event_callbacks; | 337 SyncEventCallbacksMap sync_event_callbacks; |
337 | 338 |
338 // Pending callbacks for Payment App Response. | 339 // Pending callbacks for Payment App Response. |
339 std::map<int /* payment_request_id */, | 340 std::map<int /* payment_request_id */, |
340 payments::mojom::PaymentAppResponseCallbackPtr> | 341 payments::mojom::PaymentAppResponseCallbackPtr> |
341 payment_response_callbacks; | 342 payment_response_callbacks; |
342 | 343 |
343 // Pending callbacks for Payment Request Events. | 344 // Pending callbacks for Payment Request Events. |
344 std::map<int /* payment_request_id */, | 345 std::map<int /* payment_request_id */, DispatchPaymentRequestEventCallback> |
345 const DispatchPaymentRequestEventCallback> | |
346 payment_request_event_callbacks; | 346 payment_request_event_callbacks; |
347 | 347 |
348 // Pending callbacks for Notification Click Events. | 348 // Pending callbacks for Notification Click Events. |
349 NotificationClickEventCallbacksMap notification_click_event_callbacks; | 349 NotificationClickEventCallbacksMap notification_click_event_callbacks; |
350 | 350 |
351 // Pending callbacks for Notification Close Events. | 351 // Pending callbacks for Notification Close Events. |
352 NotificationCloseEventCallbacksMap notification_close_event_callbacks; | 352 NotificationCloseEventCallbacksMap notification_close_event_callbacks; |
353 | 353 |
354 // Pending callbacks for Push Events. | 354 // Pending callbacks for Push Events. |
355 PushEventCallbacksMap push_event_callbacks; | 355 PushEventCallbacksMap push_event_callbacks; |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 client->OnNavigationPreloadComplete(fetch_event_id_); | 419 client->OnNavigationPreloadComplete(fetch_event_id_); |
420 } | 420 } |
421 | 421 |
422 void OnDataDownloaded(int64_t data_length, | 422 void OnDataDownloaded(int64_t data_length, |
423 int64_t encoded_data_length) override { | 423 int64_t encoded_data_length) override { |
424 NOTREACHED(); | 424 NOTREACHED(); |
425 } | 425 } |
426 | 426 |
427 void OnUploadProgress(int64_t current_position, | 427 void OnUploadProgress(int64_t current_position, |
428 int64_t total_size, | 428 int64_t total_size, |
429 const base::Closure& ack_callback) override { | 429 OnUploadProgressCallback ack_callback) override { |
430 NOTREACHED(); | 430 NOTREACHED(); |
431 } | 431 } |
432 | 432 |
433 void OnReceiveCachedMetadata(const std::vector<uint8_t>& data) override {} | 433 void OnReceiveCachedMetadata(const std::vector<uint8_t>& data) override {} |
434 | 434 |
435 void OnTransferSizeUpdated(int32_t transfer_size_diff) override { | 435 void OnTransferSizeUpdated(int32_t transfer_size_diff) override { |
436 } | 436 } |
437 | 437 |
438 void OnStartLoadingResponseBody( | 438 void OnStartLoadingResponseBody( |
439 mojo::ScopedDataPipeConsumerHandle body) override { | 439 mojo::ScopedDataPipeConsumerHandle body) override { |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
816 | 816 |
817 blink::WebDevToolsAgentClient::WebKitClientMessageLoop* | 817 blink::WebDevToolsAgentClient::WebKitClientMessageLoop* |
818 ServiceWorkerContextClient::CreateDevToolsMessageLoop() { | 818 ServiceWorkerContextClient::CreateDevToolsMessageLoop() { |
819 return DevToolsAgent::createMessageLoopWrapper(); | 819 return DevToolsAgent::createMessageLoopWrapper(); |
820 } | 820 } |
821 | 821 |
822 void ServiceWorkerContextClient::DidHandleActivateEvent( | 822 void ServiceWorkerContextClient::DidHandleActivateEvent( |
823 int request_id, | 823 int request_id, |
824 blink::WebServiceWorkerEventResult result, | 824 blink::WebServiceWorkerEventResult result, |
825 double event_dispatch_time) { | 825 double event_dispatch_time) { |
826 const DispatchActivateEventCallback* callback = | 826 DispatchActivateEventCallback* callback = |
827 context_->activate_event_callbacks.Lookup(request_id); | 827 context_->activate_event_callbacks.Lookup(request_id); |
828 DCHECK(callback); | 828 DCHECK(callback); |
829 callback->Run(EventResultToStatus(result), | 829 DCHECK(*callback); |
830 base::Time::FromDoubleT(event_dispatch_time)); | 830 std::move(*callback).Run(EventResultToStatus(result), |
| 831 base::Time::FromDoubleT(event_dispatch_time)); |
831 context_->activate_event_callbacks.Remove(request_id); | 832 context_->activate_event_callbacks.Remove(request_id); |
832 } | 833 } |
833 | 834 |
834 void ServiceWorkerContextClient::DidHandleBackgroundFetchAbortEvent( | 835 void ServiceWorkerContextClient::DidHandleBackgroundFetchAbortEvent( |
835 int request_id, | 836 int request_id, |
836 blink::WebServiceWorkerEventResult result, | 837 blink::WebServiceWorkerEventResult result, |
837 double event_dispatch_time) { | 838 double event_dispatch_time) { |
838 const DispatchBackgroundFetchAbortEventCallback* callback = | 839 DispatchBackgroundFetchAbortEventCallback* callback = |
839 context_->background_fetch_abort_event_callbacks.Lookup(request_id); | 840 context_->background_fetch_abort_event_callbacks.Lookup(request_id); |
840 DCHECK(callback); | 841 DCHECK(callback); |
841 callback->Run(EventResultToStatus(result), | 842 DCHECK(*callback); |
842 base::Time::FromDoubleT(event_dispatch_time)); | 843 std::move(*callback).Run(EventResultToStatus(result), |
| 844 base::Time::FromDoubleT(event_dispatch_time)); |
843 context_->background_fetch_abort_event_callbacks.Remove(request_id); | 845 context_->background_fetch_abort_event_callbacks.Remove(request_id); |
844 } | 846 } |
845 | 847 |
846 void ServiceWorkerContextClient::DidHandleBackgroundFetchClickEvent( | 848 void ServiceWorkerContextClient::DidHandleBackgroundFetchClickEvent( |
847 int request_id, | 849 int request_id, |
848 blink::WebServiceWorkerEventResult result, | 850 blink::WebServiceWorkerEventResult result, |
849 double event_dispatch_time) { | 851 double event_dispatch_time) { |
850 const DispatchBackgroundFetchClickEventCallback* callback = | 852 DispatchBackgroundFetchClickEventCallback* callback = |
851 context_->background_fetch_click_event_callbacks.Lookup(request_id); | 853 context_->background_fetch_click_event_callbacks.Lookup(request_id); |
852 DCHECK(callback); | 854 DCHECK(callback); |
853 callback->Run(EventResultToStatus(result), | 855 DCHECK(*callback); |
854 base::Time::FromDoubleT(event_dispatch_time)); | 856 std::move(*callback).Run(EventResultToStatus(result), |
| 857 base::Time::FromDoubleT(event_dispatch_time)); |
855 context_->background_fetch_click_event_callbacks.Remove(request_id); | 858 context_->background_fetch_click_event_callbacks.Remove(request_id); |
856 } | 859 } |
857 | 860 |
858 void ServiceWorkerContextClient::DidHandleBackgroundFetchFailEvent( | 861 void ServiceWorkerContextClient::DidHandleBackgroundFetchFailEvent( |
859 int request_id, | 862 int request_id, |
860 blink::WebServiceWorkerEventResult result, | 863 blink::WebServiceWorkerEventResult result, |
861 double event_dispatch_time) { | 864 double event_dispatch_time) { |
862 const DispatchBackgroundFetchFailEventCallback* callback = | 865 DispatchBackgroundFetchFailEventCallback* callback = |
863 context_->background_fetch_fail_event_callbacks.Lookup(request_id); | 866 context_->background_fetch_fail_event_callbacks.Lookup(request_id); |
864 DCHECK(callback); | 867 DCHECK(callback); |
865 callback->Run(EventResultToStatus(result), | 868 DCHECK(*callback); |
866 base::Time::FromDoubleT(event_dispatch_time)); | 869 std::move(*callback).Run(EventResultToStatus(result), |
| 870 base::Time::FromDoubleT(event_dispatch_time)); |
867 context_->background_fetch_fail_event_callbacks.Remove(request_id); | 871 context_->background_fetch_fail_event_callbacks.Remove(request_id); |
868 } | 872 } |
869 | 873 |
870 void ServiceWorkerContextClient::DidHandleBackgroundFetchedEvent( | 874 void ServiceWorkerContextClient::DidHandleBackgroundFetchedEvent( |
871 int request_id, | 875 int request_id, |
872 blink::WebServiceWorkerEventResult result, | 876 blink::WebServiceWorkerEventResult result, |
873 double event_dispatch_time) { | 877 double event_dispatch_time) { |
874 const DispatchBackgroundFetchedEventCallback* callback = | 878 DispatchBackgroundFetchedEventCallback* callback = |
875 context_->background_fetched_event_callbacks.Lookup(request_id); | 879 context_->background_fetched_event_callbacks.Lookup(request_id); |
876 DCHECK(callback); | 880 DCHECK(callback); |
877 callback->Run(EventResultToStatus(result), | 881 DCHECK(*callback); |
878 base::Time::FromDoubleT(event_dispatch_time)); | 882 std::move(*callback).Run(EventResultToStatus(result), |
| 883 base::Time::FromDoubleT(event_dispatch_time)); |
879 context_->background_fetched_event_callbacks.Remove(request_id); | 884 context_->background_fetched_event_callbacks.Remove(request_id); |
880 } | 885 } |
881 | 886 |
882 void ServiceWorkerContextClient::DidHandleExtendableMessageEvent( | 887 void ServiceWorkerContextClient::DidHandleExtendableMessageEvent( |
883 int request_id, | 888 int request_id, |
884 blink::WebServiceWorkerEventResult result, | 889 blink::WebServiceWorkerEventResult result, |
885 double event_dispatch_time) { | 890 double event_dispatch_time) { |
886 const DispatchExtendableMessageEventCallback* callback = | 891 DispatchExtendableMessageEventCallback* callback = |
887 context_->message_event_callbacks.Lookup(request_id); | 892 context_->message_event_callbacks.Lookup(request_id); |
888 DCHECK(callback); | 893 DCHECK(callback); |
889 callback->Run(EventResultToStatus(result), | 894 DCHECK(*callback); |
890 base::Time::FromDoubleT(event_dispatch_time)); | 895 std::move(*callback).Run(EventResultToStatus(result), |
| 896 base::Time::FromDoubleT(event_dispatch_time)); |
891 context_->message_event_callbacks.Remove(request_id); | 897 context_->message_event_callbacks.Remove(request_id); |
892 } | 898 } |
893 | 899 |
894 void ServiceWorkerContextClient::DidHandleInstallEvent( | 900 void ServiceWorkerContextClient::DidHandleInstallEvent( |
895 int request_id, | 901 int request_id, |
896 blink::WebServiceWorkerEventResult result, | 902 blink::WebServiceWorkerEventResult result, |
897 double event_dispatch_time) { | 903 double event_dispatch_time) { |
898 Send(new ServiceWorkerHostMsg_InstallEventFinished( | 904 Send(new ServiceWorkerHostMsg_InstallEventFinished( |
899 GetRoutingID(), request_id, result, proxy_->HasFetchEventHandler(), | 905 GetRoutingID(), request_id, result, proxy_->HasFetchEventHandler(), |
900 base::Time::FromDoubleT(event_dispatch_time))); | 906 base::Time::FromDoubleT(event_dispatch_time))); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
954 response_callback->OnResponseStream( | 960 response_callback->OnResponseStream( |
955 response, std::move(body_as_stream), | 961 response, std::move(body_as_stream), |
956 base::Time::FromDoubleT(event_dispatch_time)); | 962 base::Time::FromDoubleT(event_dispatch_time)); |
957 context_->fetch_response_callbacks.erase(fetch_event_id); | 963 context_->fetch_response_callbacks.erase(fetch_event_id); |
958 } | 964 } |
959 | 965 |
960 void ServiceWorkerContextClient::DidHandleFetchEvent( | 966 void ServiceWorkerContextClient::DidHandleFetchEvent( |
961 int fetch_event_id, | 967 int fetch_event_id, |
962 blink::WebServiceWorkerEventResult result, | 968 blink::WebServiceWorkerEventResult result, |
963 double event_dispatch_time) { | 969 double event_dispatch_time) { |
964 const WorkerContextData::SimpleEventCallback& callback = | 970 WorkerContextData::SimpleEventCallback callback = |
965 context_->fetch_event_callbacks[fetch_event_id]; | 971 std::move(context_->fetch_event_callbacks[fetch_event_id]); |
966 DCHECK(callback); | 972 DCHECK(callback); |
967 callback.Run(EventResultToStatus(result), | 973 std::move(callback).Run(EventResultToStatus(result), |
968 base::Time::FromDoubleT(event_dispatch_time)); | 974 base::Time::FromDoubleT(event_dispatch_time)); |
969 context_->fetch_event_callbacks.erase(fetch_event_id); | 975 context_->fetch_event_callbacks.erase(fetch_event_id); |
970 } | 976 } |
971 | 977 |
972 void ServiceWorkerContextClient::DidHandleNotificationClickEvent( | 978 void ServiceWorkerContextClient::DidHandleNotificationClickEvent( |
973 int request_id, | 979 int request_id, |
974 blink::WebServiceWorkerEventResult result, | 980 blink::WebServiceWorkerEventResult result, |
975 double event_dispatch_time) { | 981 double event_dispatch_time) { |
976 const DispatchNotificationClickEventCallback* callback = | 982 DispatchNotificationClickEventCallback* callback = |
977 context_->notification_click_event_callbacks.Lookup(request_id); | 983 context_->notification_click_event_callbacks.Lookup(request_id); |
978 DCHECK(callback); | 984 DCHECK(callback); |
979 | 985 DCHECK(*callback); |
980 callback->Run(EventResultToStatus(result), | 986 std::move(*callback).Run(EventResultToStatus(result), |
981 base::Time::FromDoubleT(event_dispatch_time)); | 987 base::Time::FromDoubleT(event_dispatch_time)); |
982 | 988 |
983 context_->notification_click_event_callbacks.Remove(request_id); | 989 context_->notification_click_event_callbacks.Remove(request_id); |
984 } | 990 } |
985 | 991 |
986 void ServiceWorkerContextClient::DidHandleNotificationCloseEvent( | 992 void ServiceWorkerContextClient::DidHandleNotificationCloseEvent( |
987 int request_id, | 993 int request_id, |
988 blink::WebServiceWorkerEventResult result, | 994 blink::WebServiceWorkerEventResult result, |
989 double event_dispatch_time) { | 995 double event_dispatch_time) { |
990 const DispatchNotificationCloseEventCallback* callback = | 996 DispatchNotificationCloseEventCallback* callback = |
991 context_->notification_close_event_callbacks.Lookup(request_id); | 997 context_->notification_close_event_callbacks.Lookup(request_id); |
992 DCHECK(callback); | 998 DCHECK(callback); |
993 | 999 DCHECK(*callback); |
994 callback->Run(EventResultToStatus(result), | 1000 std::move(*callback).Run(EventResultToStatus(result), |
995 base::Time::FromDoubleT(event_dispatch_time)); | 1001 base::Time::FromDoubleT(event_dispatch_time)); |
996 | 1002 |
997 context_->notification_close_event_callbacks.Remove(request_id); | 1003 context_->notification_close_event_callbacks.Remove(request_id); |
998 } | 1004 } |
999 | 1005 |
1000 void ServiceWorkerContextClient::DidHandlePushEvent( | 1006 void ServiceWorkerContextClient::DidHandlePushEvent( |
1001 int request_id, | 1007 int request_id, |
1002 blink::WebServiceWorkerEventResult result, | 1008 blink::WebServiceWorkerEventResult result, |
1003 double event_dispatch_time) { | 1009 double event_dispatch_time) { |
1004 const DispatchPushEventCallback* callback = | 1010 DispatchPushEventCallback* callback = |
1005 context_->push_event_callbacks.Lookup(request_id); | 1011 context_->push_event_callbacks.Lookup(request_id); |
1006 DCHECK(callback); | 1012 DCHECK(callback); |
1007 callback->Run(EventResultToStatus(result), | 1013 DCHECK(*callback); |
1008 base::Time::FromDoubleT(event_dispatch_time)); | 1014 std::move(*callback).Run(EventResultToStatus(result), |
| 1015 base::Time::FromDoubleT(event_dispatch_time)); |
1009 context_->push_event_callbacks.Remove(request_id); | 1016 context_->push_event_callbacks.Remove(request_id); |
1010 } | 1017 } |
1011 | 1018 |
1012 void ServiceWorkerContextClient::DidHandleSyncEvent( | 1019 void ServiceWorkerContextClient::DidHandleSyncEvent( |
1013 int request_id, | 1020 int request_id, |
1014 blink::WebServiceWorkerEventResult result, | 1021 blink::WebServiceWorkerEventResult result, |
1015 double event_dispatch_time) { | 1022 double event_dispatch_time) { |
1016 const SyncCallback* callback = | 1023 SyncCallback* callback = context_->sync_event_callbacks.Lookup(request_id); |
1017 context_->sync_event_callbacks.Lookup(request_id); | |
1018 DCHECK(callback); | 1024 DCHECK(callback); |
1019 callback->Run(EventResultToStatus(result), | 1025 DCHECK(*callback); |
1020 base::Time::FromDoubleT(event_dispatch_time)); | 1026 std::move(*callback).Run(EventResultToStatus(result), |
| 1027 base::Time::FromDoubleT(event_dispatch_time)); |
1021 context_->sync_event_callbacks.Remove(request_id); | 1028 context_->sync_event_callbacks.Remove(request_id); |
1022 } | 1029 } |
1023 | 1030 |
1024 void ServiceWorkerContextClient::RespondToPaymentRequestEvent( | 1031 void ServiceWorkerContextClient::RespondToPaymentRequestEvent( |
1025 int payment_request_id, | 1032 int payment_request_id, |
1026 const blink::WebPaymentAppResponse& web_response, | 1033 const blink::WebPaymentAppResponse& web_response, |
1027 double dispatch_event_time) { | 1034 double dispatch_event_time) { |
1028 const payments::mojom::PaymentAppResponseCallbackPtr& response_callback = | 1035 const payments::mojom::PaymentAppResponseCallbackPtr& response_callback = |
1029 context_->payment_response_callbacks[payment_request_id]; | 1036 context_->payment_response_callbacks[payment_request_id]; |
1030 payments::mojom::PaymentAppResponsePtr response = | 1037 payments::mojom::PaymentAppResponsePtr response = |
1031 payments::mojom::PaymentAppResponse::New(); | 1038 payments::mojom::PaymentAppResponse::New(); |
1032 response->method_name = web_response.method_name.Utf8(); | 1039 response->method_name = web_response.method_name.Utf8(); |
1033 response_callback->OnPaymentAppResponse( | 1040 response_callback->OnPaymentAppResponse( |
1034 std::move(response), base::Time::FromDoubleT(dispatch_event_time)); | 1041 std::move(response), base::Time::FromDoubleT(dispatch_event_time)); |
1035 context_->payment_response_callbacks.erase(payment_request_id); | 1042 context_->payment_response_callbacks.erase(payment_request_id); |
1036 } | 1043 } |
1037 | 1044 |
1038 void ServiceWorkerContextClient::DidHandlePaymentRequestEvent( | 1045 void ServiceWorkerContextClient::DidHandlePaymentRequestEvent( |
1039 int payment_request_id, | 1046 int payment_request_id, |
1040 blink::WebServiceWorkerEventResult result, | 1047 blink::WebServiceWorkerEventResult result, |
1041 double event_dispatch_time) { | 1048 double event_dispatch_time) { |
1042 const DispatchPaymentRequestEventCallback& callback = | 1049 DispatchPaymentRequestEventCallback callback = |
1043 context_->payment_request_event_callbacks[payment_request_id]; | 1050 std::move(context_->payment_request_event_callbacks[payment_request_id]); |
1044 callback.Run(EventResultToStatus(result), | 1051 std::move(callback).Run(EventResultToStatus(result), |
1045 base::Time::FromDoubleT(event_dispatch_time)); | 1052 base::Time::FromDoubleT(event_dispatch_time)); |
1046 context_->payment_request_event_callbacks.erase(payment_request_id); | 1053 context_->payment_request_event_callbacks.erase(payment_request_id); |
1047 } | 1054 } |
1048 | 1055 |
1049 blink::WebServiceWorkerNetworkProvider* | 1056 blink::WebServiceWorkerNetworkProvider* |
1050 ServiceWorkerContextClient::CreateServiceWorkerNetworkProvider() { | 1057 ServiceWorkerContextClient::CreateServiceWorkerNetworkProvider() { |
1051 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); | 1058 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); |
1052 | 1059 |
1053 // Create a content::ServiceWorkerNetworkProvider for this data source so | 1060 // Create a content::ServiceWorkerNetworkProvider for this data source so |
1054 // we can observe its requests. | 1061 // we can observe its requests. |
1055 std::unique_ptr<ServiceWorkerNetworkProvider> provider = | 1062 std::unique_ptr<ServiceWorkerNetworkProvider> provider = |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1122 const blink::WebVector<blink::WebURL>& sub_scopes, | 1129 const blink::WebVector<blink::WebURL>& sub_scopes, |
1123 const blink::WebVector<blink::WebSecurityOrigin>& origins) { | 1130 const blink::WebVector<blink::WebSecurityOrigin>& origins) { |
1124 Send(new ServiceWorkerHostMsg_RegisterForeignFetchScopes( | 1131 Send(new ServiceWorkerHostMsg_RegisterForeignFetchScopes( |
1125 GetRoutingID(), std::vector<GURL>(sub_scopes.begin(), sub_scopes.end()), | 1132 GetRoutingID(), std::vector<GURL>(sub_scopes.begin(), sub_scopes.end()), |
1126 std::vector<url::Origin>(origins.begin(), origins.end()))); | 1133 std::vector<url::Origin>(origins.begin(), origins.end()))); |
1127 } | 1134 } |
1128 | 1135 |
1129 void ServiceWorkerContextClient::DispatchSyncEvent( | 1136 void ServiceWorkerContextClient::DispatchSyncEvent( |
1130 const std::string& tag, | 1137 const std::string& tag, |
1131 blink::mojom::BackgroundSyncEventLastChance last_chance, | 1138 blink::mojom::BackgroundSyncEventLastChance last_chance, |
1132 const DispatchSyncEventCallback& callback) { | 1139 DispatchSyncEventCallback callback) { |
1133 TRACE_EVENT0("ServiceWorker", | 1140 TRACE_EVENT0("ServiceWorker", |
1134 "ServiceWorkerContextClient::DispatchSyncEvent"); | 1141 "ServiceWorkerContextClient::DispatchSyncEvent"); |
1135 int request_id = context_->sync_event_callbacks.Add( | 1142 int request_id = context_->sync_event_callbacks.Add( |
1136 base::MakeUnique<SyncCallback>(callback)); | 1143 base::MakeUnique<SyncCallback>(std::move(callback))); |
1137 | 1144 |
1138 // TODO(shimazu): Use typemap when this is moved to blink-side. | 1145 // TODO(shimazu): Use typemap when this is moved to blink-side. |
1139 blink::WebServiceWorkerContextProxy::LastChanceOption web_last_chance = | 1146 blink::WebServiceWorkerContextProxy::LastChanceOption web_last_chance = |
1140 mojo::ConvertTo<blink::WebServiceWorkerContextProxy::LastChanceOption>( | 1147 mojo::ConvertTo<blink::WebServiceWorkerContextProxy::LastChanceOption>( |
1141 last_chance); | 1148 last_chance); |
1142 | 1149 |
1143 // TODO(jkarlin): Make this blink::WebString::FromUTF8Lenient once | 1150 // TODO(jkarlin): Make this blink::WebString::FromUTF8Lenient once |
1144 // https://crrev.com/1768063002/ lands. | 1151 // https://crrev.com/1768063002/ lands. |
1145 proxy_->DispatchSyncEvent(request_id, blink::WebString::FromUTF8(tag), | 1152 proxy_->DispatchSyncEvent(request_id, blink::WebString::FromUTF8(tag), |
1146 web_last_chance); | 1153 web_last_chance); |
1147 } | 1154 } |
1148 | 1155 |
1149 void ServiceWorkerContextClient::DispatchPaymentRequestEvent( | 1156 void ServiceWorkerContextClient::DispatchPaymentRequestEvent( |
1150 int payment_request_id, | 1157 int payment_request_id, |
1151 payments::mojom::PaymentAppRequestPtr app_request, | 1158 payments::mojom::PaymentAppRequestPtr app_request, |
1152 payments::mojom::PaymentAppResponseCallbackPtr response_callback, | 1159 payments::mojom::PaymentAppResponseCallbackPtr response_callback, |
1153 const DispatchPaymentRequestEventCallback& callback) { | 1160 DispatchPaymentRequestEventCallback callback) { |
1154 TRACE_EVENT0("ServiceWorker", | 1161 TRACE_EVENT0("ServiceWorker", |
1155 "ServiceWorkerContextClient::DispatchPaymentRequestEvent"); | 1162 "ServiceWorkerContextClient::DispatchPaymentRequestEvent"); |
1156 context_->payment_response_callbacks.insert( | 1163 context_->payment_response_callbacks.insert( |
1157 std::make_pair(payment_request_id, std::move(response_callback))); | 1164 std::make_pair(payment_request_id, std::move(response_callback))); |
1158 context_->payment_request_event_callbacks.insert( | 1165 context_->payment_request_event_callbacks.insert( |
1159 std::make_pair(payment_request_id, callback)); | 1166 std::make_pair(payment_request_id, std::move(callback))); |
1160 | 1167 |
1161 blink::WebPaymentAppRequest webAppRequest = | 1168 blink::WebPaymentAppRequest webAppRequest = |
1162 mojo::ConvertTo<blink::WebPaymentAppRequest>(std::move(app_request)); | 1169 mojo::ConvertTo<blink::WebPaymentAppRequest>(std::move(app_request)); |
1163 proxy_->DispatchPaymentRequestEvent(payment_request_id, webAppRequest); | 1170 proxy_->DispatchPaymentRequestEvent(payment_request_id, webAppRequest); |
1164 } | 1171 } |
1165 | 1172 |
1166 void ServiceWorkerContextClient::Send(IPC::Message* message) { | 1173 void ServiceWorkerContextClient::Send(IPC::Message* message) { |
1167 sender_->Send(message); | 1174 sender_->Send(message); |
1168 } | 1175 } |
1169 | 1176 |
(...skipping 16 matching lines...) Expand all Loading... |
1186 // Register a registration and its version attributes with the dispatcher | 1193 // Register a registration and its version attributes with the dispatcher |
1187 // living on the worker thread. | 1194 // living on the worker thread. |
1188 scoped_refptr<WebServiceWorkerRegistrationImpl> registration( | 1195 scoped_refptr<WebServiceWorkerRegistrationImpl> registration( |
1189 dispatcher->GetOrCreateRegistration(info, attrs)); | 1196 dispatcher->GetOrCreateRegistration(info, attrs)); |
1190 | 1197 |
1191 proxy_->SetRegistration( | 1198 proxy_->SetRegistration( |
1192 WebServiceWorkerRegistrationImpl::CreateHandle(registration)); | 1199 WebServiceWorkerRegistrationImpl::CreateHandle(registration)); |
1193 } | 1200 } |
1194 | 1201 |
1195 void ServiceWorkerContextClient::DispatchActivateEvent( | 1202 void ServiceWorkerContextClient::DispatchActivateEvent( |
1196 const DispatchActivateEventCallback& callback) { | 1203 DispatchActivateEventCallback callback) { |
1197 TRACE_EVENT0("ServiceWorker", | 1204 TRACE_EVENT0("ServiceWorker", |
1198 "ServiceWorkerContextClient::DispatchActivateEvent"); | 1205 "ServiceWorkerContextClient::DispatchActivateEvent"); |
1199 int request_id = context_->activate_event_callbacks.Add( | 1206 int request_id = context_->activate_event_callbacks.Add( |
1200 base::MakeUnique<DispatchActivateEventCallback>(callback)); | 1207 base::MakeUnique<DispatchActivateEventCallback>(std::move(callback))); |
1201 proxy_->DispatchActivateEvent(request_id); | 1208 proxy_->DispatchActivateEvent(request_id); |
1202 } | 1209 } |
1203 | 1210 |
1204 void ServiceWorkerContextClient::DispatchBackgroundFetchAbortEvent( | 1211 void ServiceWorkerContextClient::DispatchBackgroundFetchAbortEvent( |
1205 const std::string& tag, | 1212 const std::string& tag, |
1206 const DispatchBackgroundFetchAbortEventCallback& callback) { | 1213 DispatchBackgroundFetchAbortEventCallback callback) { |
1207 TRACE_EVENT0("ServiceWorker", | 1214 TRACE_EVENT0("ServiceWorker", |
1208 "ServiceWorkerContextClient::DispatchBackgroundFetchAbortEvent"); | 1215 "ServiceWorkerContextClient::DispatchBackgroundFetchAbortEvent"); |
1209 int request_id = context_->background_fetch_abort_event_callbacks.Add( | 1216 int request_id = context_->background_fetch_abort_event_callbacks.Add( |
1210 base::MakeUnique<DispatchBackgroundFetchAbortEventCallback>(callback)); | 1217 base::MakeUnique<DispatchBackgroundFetchAbortEventCallback>( |
| 1218 std::move(callback))); |
1211 | 1219 |
1212 proxy_->DispatchBackgroundFetchAbortEvent(request_id, | 1220 proxy_->DispatchBackgroundFetchAbortEvent(request_id, |
1213 blink::WebString::FromUTF8(tag)); | 1221 blink::WebString::FromUTF8(tag)); |
1214 } | 1222 } |
1215 | 1223 |
1216 void ServiceWorkerContextClient::DispatchBackgroundFetchClickEvent( | 1224 void ServiceWorkerContextClient::DispatchBackgroundFetchClickEvent( |
1217 const std::string& tag, | 1225 const std::string& tag, |
1218 mojom::BackgroundFetchState state, | 1226 mojom::BackgroundFetchState state, |
1219 const DispatchBackgroundFetchClickEventCallback& callback) { | 1227 DispatchBackgroundFetchClickEventCallback callback) { |
1220 TRACE_EVENT0("ServiceWorker", | 1228 TRACE_EVENT0("ServiceWorker", |
1221 "ServiceWorkerContextClient::DispatchBackgroundFetchClickEvent"); | 1229 "ServiceWorkerContextClient::DispatchBackgroundFetchClickEvent"); |
1222 int request_id = context_->background_fetch_click_event_callbacks.Add( | 1230 int request_id = context_->background_fetch_click_event_callbacks.Add( |
1223 base::MakeUnique<DispatchBackgroundFetchClickEventCallback>(callback)); | 1231 base::MakeUnique<DispatchBackgroundFetchClickEventCallback>( |
| 1232 std::move(callback))); |
1224 | 1233 |
1225 // TODO(peter): Use typemap when this is moved to blink-side. | 1234 // TODO(peter): Use typemap when this is moved to blink-side. |
1226 blink::WebServiceWorkerContextProxy::BackgroundFetchState web_state = | 1235 blink::WebServiceWorkerContextProxy::BackgroundFetchState web_state = |
1227 mojo::ConvertTo< | 1236 mojo::ConvertTo< |
1228 blink::WebServiceWorkerContextProxy::BackgroundFetchState>(state); | 1237 blink::WebServiceWorkerContextProxy::BackgroundFetchState>(state); |
1229 | 1238 |
1230 proxy_->DispatchBackgroundFetchClickEvent( | 1239 proxy_->DispatchBackgroundFetchClickEvent( |
1231 request_id, blink::WebString::FromUTF8(tag), web_state); | 1240 request_id, blink::WebString::FromUTF8(tag), web_state); |
1232 } | 1241 } |
1233 | 1242 |
1234 void ServiceWorkerContextClient::DispatchBackgroundFetchFailEvent( | 1243 void ServiceWorkerContextClient::DispatchBackgroundFetchFailEvent( |
1235 const std::string& tag, | 1244 const std::string& tag, |
1236 const std::vector<BackgroundFetchSettledFetch>& fetches, | 1245 const std::vector<BackgroundFetchSettledFetch>& fetches, |
1237 const DispatchBackgroundFetchFailEventCallback& callback) { | 1246 DispatchBackgroundFetchFailEventCallback callback) { |
1238 TRACE_EVENT0("ServiceWorker", | 1247 TRACE_EVENT0("ServiceWorker", |
1239 "ServiceWorkerContextClient::DispatchBackgroundFetchFailEvent"); | 1248 "ServiceWorkerContextClient::DispatchBackgroundFetchFailEvent"); |
1240 int request_id = context_->background_fetch_fail_event_callbacks.Add( | 1249 int request_id = context_->background_fetch_fail_event_callbacks.Add( |
1241 base::MakeUnique<DispatchBackgroundFetchFailEventCallback>(callback)); | 1250 base::MakeUnique<DispatchBackgroundFetchFailEventCallback>( |
| 1251 std::move(callback))); |
1242 | 1252 |
1243 blink::WebVector<blink::WebBackgroundFetchSettledFetch> web_fetches( | 1253 blink::WebVector<blink::WebBackgroundFetchSettledFetch> web_fetches( |
1244 fetches.size()); | 1254 fetches.size()); |
1245 for (size_t i = 0; i < fetches.size(); ++i) { | 1255 for (size_t i = 0; i < fetches.size(); ++i) { |
1246 ToWebServiceWorkerRequest(fetches[i].request, &web_fetches[i].request); | 1256 ToWebServiceWorkerRequest(fetches[i].request, &web_fetches[i].request); |
1247 ToWebServiceWorkerResponse(fetches[i].response, &web_fetches[i].response); | 1257 ToWebServiceWorkerResponse(fetches[i].response, &web_fetches[i].response); |
1248 } | 1258 } |
1249 | 1259 |
1250 proxy_->DispatchBackgroundFetchFailEvent( | 1260 proxy_->DispatchBackgroundFetchFailEvent( |
1251 request_id, blink::WebString::FromUTF8(tag), web_fetches); | 1261 request_id, blink::WebString::FromUTF8(tag), web_fetches); |
1252 } | 1262 } |
1253 | 1263 |
1254 void ServiceWorkerContextClient::DispatchBackgroundFetchedEvent( | 1264 void ServiceWorkerContextClient::DispatchBackgroundFetchedEvent( |
1255 const std::string& tag, | 1265 const std::string& tag, |
1256 const std::vector<BackgroundFetchSettledFetch>& fetches, | 1266 const std::vector<BackgroundFetchSettledFetch>& fetches, |
1257 const DispatchBackgroundFetchedEventCallback& callback) { | 1267 DispatchBackgroundFetchedEventCallback callback) { |
1258 TRACE_EVENT0("ServiceWorker", | 1268 TRACE_EVENT0("ServiceWorker", |
1259 "ServiceWorkerContextClient::DispatchBackgroundFetchedEvent"); | 1269 "ServiceWorkerContextClient::DispatchBackgroundFetchedEvent"); |
1260 int request_id = context_->background_fetched_event_callbacks.Add( | 1270 int request_id = context_->background_fetched_event_callbacks.Add( |
1261 base::MakeUnique<DispatchBackgroundFetchedEventCallback>(callback)); | 1271 base::MakeUnique<DispatchBackgroundFetchedEventCallback>( |
| 1272 std::move(callback))); |
1262 | 1273 |
1263 blink::WebVector<blink::WebBackgroundFetchSettledFetch> web_fetches( | 1274 blink::WebVector<blink::WebBackgroundFetchSettledFetch> web_fetches( |
1264 fetches.size()); | 1275 fetches.size()); |
1265 for (size_t i = 0; i < fetches.size(); ++i) { | 1276 for (size_t i = 0; i < fetches.size(); ++i) { |
1266 ToWebServiceWorkerRequest(fetches[i].request, &web_fetches[i].request); | 1277 ToWebServiceWorkerRequest(fetches[i].request, &web_fetches[i].request); |
1267 ToWebServiceWorkerResponse(fetches[i].response, &web_fetches[i].response); | 1278 ToWebServiceWorkerResponse(fetches[i].response, &web_fetches[i].response); |
1268 } | 1279 } |
1269 | 1280 |
1270 proxy_->DispatchBackgroundFetchedEvent( | 1281 proxy_->DispatchBackgroundFetchedEvent( |
1271 request_id, blink::WebString::FromUTF8(tag), web_fetches); | 1282 request_id, blink::WebString::FromUTF8(tag), web_fetches); |
1272 } | 1283 } |
1273 | 1284 |
1274 void ServiceWorkerContextClient::DispatchExtendableMessageEvent( | 1285 void ServiceWorkerContextClient::DispatchExtendableMessageEvent( |
1275 mojom::ExtendableMessageEventPtr event, | 1286 mojom::ExtendableMessageEventPtr event, |
1276 const DispatchExtendableMessageEventCallback& callback) { | 1287 DispatchExtendableMessageEventCallback callback) { |
1277 TRACE_EVENT0("ServiceWorker", | 1288 TRACE_EVENT0("ServiceWorker", |
1278 "ServiceWorkerContextClient::DispatchExtendableMessageEvent"); | 1289 "ServiceWorkerContextClient::DispatchExtendableMessageEvent"); |
1279 int request_id = context_->message_event_callbacks.Add( | 1290 int request_id = context_->message_event_callbacks.Add( |
1280 base::MakeUnique<DispatchExtendableMessageEventCallback>(callback)); | 1291 base::MakeUnique<DispatchExtendableMessageEventCallback>( |
| 1292 std::move(callback))); |
1281 | 1293 |
1282 blink::WebMessagePortChannelArray ports = | 1294 blink::WebMessagePortChannelArray ports = |
1283 WebMessagePortChannelImpl::CreateFromMessagePipeHandles( | 1295 WebMessagePortChannelImpl::CreateFromMessagePipeHandles( |
1284 std::move(event->message_ports)); | 1296 std::move(event->message_ports)); |
1285 if (event->source.client_info.IsValid()) { | 1297 if (event->source.client_info.IsValid()) { |
1286 blink::WebServiceWorkerClientInfo web_client = | 1298 blink::WebServiceWorkerClientInfo web_client = |
1287 ToWebServiceWorkerClientInfo(event->source.client_info); | 1299 ToWebServiceWorkerClientInfo(event->source.client_info); |
1288 proxy_->DispatchExtendableMessageEvent( | 1300 proxy_->DispatchExtendableMessageEvent( |
1289 request_id, blink::WebString::FromUTF16(event->message), | 1301 request_id, blink::WebString::FromUTF16(event->message), |
1290 event->source_origin, std::move(ports), web_client); | 1302 event->source_origin, std::move(ports), web_client); |
(...skipping 19 matching lines...) Expand all Loading... |
1310 TRACE_EVENT0("ServiceWorker", | 1322 TRACE_EVENT0("ServiceWorker", |
1311 "ServiceWorkerContextClient::OnInstallEvent"); | 1323 "ServiceWorkerContextClient::OnInstallEvent"); |
1312 proxy_->DispatchInstallEvent(request_id); | 1324 proxy_->DispatchInstallEvent(request_id); |
1313 } | 1325 } |
1314 | 1326 |
1315 void ServiceWorkerContextClient::DispatchFetchEvent( | 1327 void ServiceWorkerContextClient::DispatchFetchEvent( |
1316 int fetch_event_id, | 1328 int fetch_event_id, |
1317 const ServiceWorkerFetchRequest& request, | 1329 const ServiceWorkerFetchRequest& request, |
1318 mojom::FetchEventPreloadHandlePtr preload_handle, | 1330 mojom::FetchEventPreloadHandlePtr preload_handle, |
1319 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback, | 1331 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback, |
1320 const DispatchFetchEventCallback& callback) { | 1332 DispatchFetchEventCallback callback) { |
1321 std::unique_ptr<NavigationPreloadRequest> preload_request = | 1333 std::unique_ptr<NavigationPreloadRequest> preload_request = |
1322 preload_handle | 1334 preload_handle |
1323 ? base::MakeUnique<NavigationPreloadRequest>( | 1335 ? base::MakeUnique<NavigationPreloadRequest>( |
1324 fetch_event_id, request.url, std::move(preload_handle)) | 1336 fetch_event_id, request.url, std::move(preload_handle)) |
1325 : nullptr; | 1337 : nullptr; |
1326 const bool navigation_preload_sent = !!preload_request; | 1338 const bool navigation_preload_sent = !!preload_request; |
1327 TRACE_EVENT0("ServiceWorker", | 1339 TRACE_EVENT0("ServiceWorker", |
1328 "ServiceWorkerContextClient::DispatchFetchEvent"); | 1340 "ServiceWorkerContextClient::DispatchFetchEvent"); |
1329 context_->fetch_response_callbacks.insert( | 1341 context_->fetch_response_callbacks.insert( |
1330 std::make_pair(fetch_event_id, std::move(response_callback))); | 1342 std::make_pair(fetch_event_id, std::move(response_callback))); |
(...skipping 13 matching lines...) Expand all Loading... |
1344 proxy_->DispatchFetchEvent(fetch_event_id, web_request, | 1356 proxy_->DispatchFetchEvent(fetch_event_id, web_request, |
1345 navigation_preload_sent); | 1357 navigation_preload_sent); |
1346 } | 1358 } |
1347 } | 1359 } |
1348 | 1360 |
1349 void ServiceWorkerContextClient::DispatchNotificationClickEvent( | 1361 void ServiceWorkerContextClient::DispatchNotificationClickEvent( |
1350 const std::string& notification_id, | 1362 const std::string& notification_id, |
1351 const PlatformNotificationData& notification_data, | 1363 const PlatformNotificationData& notification_data, |
1352 int action_index, | 1364 int action_index, |
1353 const base::Optional<base::string16>& reply, | 1365 const base::Optional<base::string16>& reply, |
1354 const DispatchNotificationClickEventCallback& callback) { | 1366 DispatchNotificationClickEventCallback callback) { |
1355 TRACE_EVENT0("ServiceWorker", | 1367 TRACE_EVENT0("ServiceWorker", |
1356 "ServiceWorkerContextClient::DispatchNotificationClickEvent"); | 1368 "ServiceWorkerContextClient::DispatchNotificationClickEvent"); |
1357 | 1369 |
1358 int request_id = context_->notification_click_event_callbacks.Add( | 1370 int request_id = context_->notification_click_event_callbacks.Add( |
1359 base::MakeUnique<DispatchNotificationClickEventCallback>(callback)); | 1371 base::MakeUnique<DispatchNotificationClickEventCallback>( |
| 1372 std::move(callback))); |
1360 | 1373 |
1361 blink::WebString web_reply; | 1374 blink::WebString web_reply; |
1362 if (reply) | 1375 if (reply) |
1363 web_reply = blink::WebString::FromUTF16(reply.value()); | 1376 web_reply = blink::WebString::FromUTF16(reply.value()); |
1364 | 1377 |
1365 proxy_->DispatchNotificationClickEvent( | 1378 proxy_->DispatchNotificationClickEvent( |
1366 request_id, blink::WebString::FromUTF8(notification_id), | 1379 request_id, blink::WebString::FromUTF8(notification_id), |
1367 ToWebNotificationData(notification_data), action_index, web_reply); | 1380 ToWebNotificationData(notification_data), action_index, web_reply); |
1368 } | 1381 } |
1369 | 1382 |
1370 void ServiceWorkerContextClient::DispatchNotificationCloseEvent( | 1383 void ServiceWorkerContextClient::DispatchNotificationCloseEvent( |
1371 const std::string& notification_id, | 1384 const std::string& notification_id, |
1372 const PlatformNotificationData& notification_data, | 1385 const PlatformNotificationData& notification_data, |
1373 const DispatchNotificationCloseEventCallback& callback) { | 1386 DispatchNotificationCloseEventCallback callback) { |
1374 TRACE_EVENT0("ServiceWorker", | 1387 TRACE_EVENT0("ServiceWorker", |
1375 "ServiceWorkerContextClient::DispatchNotificationCloseEvent"); | 1388 "ServiceWorkerContextClient::DispatchNotificationCloseEvent"); |
1376 | 1389 |
1377 int request_id = context_->notification_close_event_callbacks.Add( | 1390 int request_id = context_->notification_close_event_callbacks.Add( |
1378 base::MakeUnique<DispatchNotificationCloseEventCallback>(callback)); | 1391 base::MakeUnique<DispatchNotificationCloseEventCallback>( |
| 1392 std::move(callback))); |
1379 | 1393 |
1380 proxy_->DispatchNotificationCloseEvent( | 1394 proxy_->DispatchNotificationCloseEvent( |
1381 request_id, blink::WebString::FromUTF8(notification_id), | 1395 request_id, blink::WebString::FromUTF8(notification_id), |
1382 ToWebNotificationData(notification_data)); | 1396 ToWebNotificationData(notification_data)); |
1383 } | 1397 } |
1384 | 1398 |
1385 void ServiceWorkerContextClient::DispatchPushEvent( | 1399 void ServiceWorkerContextClient::DispatchPushEvent( |
1386 const PushEventPayload& payload, | 1400 const PushEventPayload& payload, |
1387 const DispatchPushEventCallback& callback) { | 1401 DispatchPushEventCallback callback) { |
1388 TRACE_EVENT0("ServiceWorker", | 1402 TRACE_EVENT0("ServiceWorker", |
1389 "ServiceWorkerContextClient::DispatchPushEvent"); | 1403 "ServiceWorkerContextClient::DispatchPushEvent"); |
1390 int request_id = context_->push_event_callbacks.Add( | 1404 int request_id = context_->push_event_callbacks.Add( |
1391 base::MakeUnique<DispatchPushEventCallback>(callback)); | 1405 base::MakeUnique<DispatchPushEventCallback>(std::move(callback))); |
1392 | 1406 |
1393 // Only set data to be a valid string if the payload had decrypted data. | 1407 // Only set data to be a valid string if the payload had decrypted data. |
1394 blink::WebString data; | 1408 blink::WebString data; |
1395 if (!payload.is_null) | 1409 if (!payload.is_null) |
1396 data.Assign(blink::WebString::FromUTF8(payload.data)); | 1410 data.Assign(blink::WebString::FromUTF8(payload.data)); |
1397 proxy_->DispatchPushEvent(request_id, data); | 1411 proxy_->DispatchPushEvent(request_id, data); |
1398 } | 1412 } |
1399 | 1413 |
1400 void ServiceWorkerContextClient::OnDidGetClient( | 1414 void ServiceWorkerContextClient::OnDidGetClient( |
1401 int request_id, | 1415 int request_id, |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1574 context_->claim_clients_callbacks.Lookup(request_id); | 1588 context_->claim_clients_callbacks.Lookup(request_id); |
1575 if (!callbacks) { | 1589 if (!callbacks) { |
1576 NOTREACHED() << "Got stray response: " << request_id; | 1590 NOTREACHED() << "Got stray response: " << request_id; |
1577 return; | 1591 return; |
1578 } | 1592 } |
1579 callbacks->OnError(blink::WebServiceWorkerError( | 1593 callbacks->OnError(blink::WebServiceWorkerError( |
1580 error_type, blink::WebString::FromUTF16(message))); | 1594 error_type, blink::WebString::FromUTF16(message))); |
1581 context_->claim_clients_callbacks.Remove(request_id); | 1595 context_->claim_clients_callbacks.Remove(request_id); |
1582 } | 1596 } |
1583 | 1597 |
1584 void ServiceWorkerContextClient::Ping(const PingCallback& callback) { | 1598 void ServiceWorkerContextClient::Ping(PingCallback callback) { |
1585 callback.Run(); | 1599 std::move(callback).Run(); |
1586 } | 1600 } |
1587 | 1601 |
1588 void ServiceWorkerContextClient::OnNavigationPreloadResponse( | 1602 void ServiceWorkerContextClient::OnNavigationPreloadResponse( |
1589 int fetch_event_id, | 1603 int fetch_event_id, |
1590 std::unique_ptr<blink::WebURLResponse> response, | 1604 std::unique_ptr<blink::WebURLResponse> response, |
1591 std::unique_ptr<blink::WebDataConsumerHandle> data_consumer_handle) { | 1605 std::unique_ptr<blink::WebDataConsumerHandle> data_consumer_handle) { |
1592 proxy_->OnNavigationPreloadResponse(fetch_event_id, std::move(response), | 1606 proxy_->OnNavigationPreloadResponse(fetch_event_id, std::move(response), |
1593 std::move(data_consumer_handle)); | 1607 std::move(data_consumer_handle)); |
1594 } | 1608 } |
1595 | 1609 |
(...skipping 10 matching lines...) Expand all Loading... |
1606 } | 1620 } |
1607 | 1621 |
1608 base::WeakPtr<ServiceWorkerContextClient> | 1622 base::WeakPtr<ServiceWorkerContextClient> |
1609 ServiceWorkerContextClient::GetWeakPtr() { | 1623 ServiceWorkerContextClient::GetWeakPtr() { |
1610 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); | 1624 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); |
1611 DCHECK(context_); | 1625 DCHECK(context_); |
1612 return context_->weak_factory.GetWeakPtr(); | 1626 return context_->weak_factory.GetWeakPtr(); |
1613 } | 1627 } |
1614 | 1628 |
1615 } // namespace content | 1629 } // namespace content |
OLD | NEW |