| 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 |