| 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 <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 224 | 224 |
| 225 web_response->SetCorsExposedHeaderNames( | 225 web_response->SetCorsExposedHeaderNames( |
| 226 blink::WebVector<blink::WebString>(cors_exposed_header_names)); | 226 blink::WebVector<blink::WebString>(cors_exposed_header_names)); |
| 227 } | 227 } |
| 228 | 228 |
| 229 // Use this template in willDestroyWorkerContext to abort all the pending | 229 // Use this template in willDestroyWorkerContext to abort all the pending |
| 230 // events callbacks. | 230 // events callbacks. |
| 231 template <typename T> | 231 template <typename T> |
| 232 void AbortPendingEventCallbacks(T& callbacks) { | 232 void AbortPendingEventCallbacks(T& callbacks) { |
| 233 for (typename T::iterator it(&callbacks); !it.IsAtEnd(); it.Advance()) { | 233 for (typename T::iterator it(&callbacks); !it.IsAtEnd(); it.Advance()) { |
| 234 it.GetCurrentValue()->Run(SERVICE_WORKER_ERROR_ABORT, base::Time::Now()); | 234 std::move(*it.GetCurrentValue()) |
| 235 .Run(SERVICE_WORKER_ERROR_ABORT, base::Time::Now()); |
| 235 } | 236 } |
| 236 } | 237 } |
| 237 | 238 |
| 238 } // namespace | 239 } // namespace |
| 239 | 240 |
| 240 // Holding data that needs to be bound to the worker context on the | 241 // Holding data that needs to be bound to the worker context on the |
| 241 // worker thread. | 242 // worker thread. |
| 242 struct ServiceWorkerContextClient::WorkerContextData { | 243 struct ServiceWorkerContextClient::WorkerContextData { |
| 243 using ClientsCallbacksMap = | 244 using ClientsCallbacksMap = |
| 244 IDMap<std::unique_ptr<blink::WebServiceWorkerClientsCallbacks>>; | 245 IDMap<std::unique_ptr<blink::WebServiceWorkerClientsCallbacks>>; |
| 245 using ClaimClientsCallbacksMap = | 246 using ClaimClientsCallbacksMap = |
| 246 IDMap<std::unique_ptr<blink::WebServiceWorkerClientsClaimCallbacks>>; | 247 IDMap<std::unique_ptr<blink::WebServiceWorkerClientsClaimCallbacks>>; |
| 247 using ClientCallbacksMap = | 248 using ClientCallbacksMap = |
| 248 IDMap<std::unique_ptr<blink::WebServiceWorkerClientCallbacks>>; | 249 IDMap<std::unique_ptr<blink::WebServiceWorkerClientCallbacks>>; |
| 249 using SkipWaitingCallbacksMap = | 250 using SkipWaitingCallbacksMap = |
| 250 IDMap<std::unique_ptr<blink::WebServiceWorkerSkipWaitingCallbacks>>; | 251 IDMap<std::unique_ptr<blink::WebServiceWorkerSkipWaitingCallbacks>>; |
| 251 using ActivateEventCallbacksMap = | 252 using ActivateEventCallbacksMap = |
| 252 IDMap<std::unique_ptr<const DispatchActivateEventCallback>>; | 253 IDMap<std::unique_ptr<DispatchActivateEventCallback>>; |
| 253 using BackgroundFetchAbortEventCallbacksMap = | 254 using BackgroundFetchAbortEventCallbacksMap = |
| 254 IDMap<std::unique_ptr<const DispatchBackgroundFetchAbortEventCallback>>; | 255 IDMap<std::unique_ptr<DispatchBackgroundFetchAbortEventCallback>>; |
| 255 using BackgroundFetchClickEventCallbacksMap = | 256 using BackgroundFetchClickEventCallbacksMap = |
| 256 IDMap<std::unique_ptr<const DispatchBackgroundFetchClickEventCallback>>; | 257 IDMap<std::unique_ptr<DispatchBackgroundFetchClickEventCallback>>; |
| 257 using BackgroundFetchFailEventCallbacksMap = | 258 using BackgroundFetchFailEventCallbacksMap = |
| 258 IDMap<std::unique_ptr<const DispatchBackgroundFetchFailEventCallback>>; | 259 IDMap<std::unique_ptr<DispatchBackgroundFetchFailEventCallback>>; |
| 259 using BackgroundFetchedEventCallbacksMap = | 260 using BackgroundFetchedEventCallbacksMap = |
| 260 IDMap<std::unique_ptr<const DispatchBackgroundFetchedEventCallback>>; | 261 IDMap<std::unique_ptr<DispatchBackgroundFetchedEventCallback>>; |
| 261 using SyncEventCallbacksMap = IDMap<std::unique_ptr<const SyncCallback>>; | 262 using SyncEventCallbacksMap = IDMap<std::unique_ptr<SyncCallback>>; |
| 262 using NotificationClickEventCallbacksMap = | 263 using NotificationClickEventCallbacksMap = |
| 263 IDMap<std::unique_ptr<const DispatchNotificationClickEventCallback>>; | 264 IDMap<std::unique_ptr<DispatchNotificationClickEventCallback>>; |
| 264 using NotificationCloseEventCallbacksMap = | 265 using NotificationCloseEventCallbacksMap = |
| 265 IDMap<std::unique_ptr<const DispatchNotificationCloseEventCallback>>; | 266 IDMap<std::unique_ptr<DispatchNotificationCloseEventCallback>>; |
| 266 using PushEventCallbacksMap = | 267 using PushEventCallbacksMap = |
| 267 IDMap<std::unique_ptr<const DispatchPushEventCallback>>; | 268 IDMap<std::unique_ptr<DispatchPushEventCallback>>; |
| 268 using FetchEventCallbacksMap = IDMap<std::unique_ptr<const FetchCallback>>; | 269 using FetchEventCallbacksMap = IDMap<std::unique_ptr<FetchCallback>>; |
| 269 using ExtendableMessageEventCallbacksMap = | 270 using ExtendableMessageEventCallbacksMap = |
| 270 IDMap<std::unique_ptr<const DispatchExtendableMessageEventCallback>>; | 271 IDMap<std::unique_ptr<DispatchExtendableMessageEventCallback>>; |
| 271 using NavigationPreloadRequestsMap = IDMap< | 272 using NavigationPreloadRequestsMap = IDMap< |
| 272 std::unique_ptr<ServiceWorkerContextClient::NavigationPreloadRequest>>; | 273 std::unique_ptr<ServiceWorkerContextClient::NavigationPreloadRequest>>; |
| 273 | 274 |
| 274 explicit WorkerContextData(ServiceWorkerContextClient* owner) | 275 explicit WorkerContextData(ServiceWorkerContextClient* owner) |
| 275 : event_dispatcher_binding(owner), | 276 : event_dispatcher_binding(owner), |
| 276 weak_factory(owner), | 277 weak_factory(owner), |
| 277 proxy_weak_factory(owner->proxy_) {} | 278 proxy_weak_factory(owner->proxy_) {} |
| 278 | 279 |
| 279 ~WorkerContextData() { | 280 ~WorkerContextData() { |
| 280 DCHECK(thread_checker.CalledOnValidThread()); | 281 DCHECK(thread_checker.CalledOnValidThread()); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 311 | 312 |
| 312 // Pending callbacks for Background Sync Events. | 313 // Pending callbacks for Background Sync Events. |
| 313 SyncEventCallbacksMap sync_event_callbacks; | 314 SyncEventCallbacksMap sync_event_callbacks; |
| 314 | 315 |
| 315 // Pending callbacks for Payment App Response. | 316 // Pending callbacks for Payment App Response. |
| 316 std::map<int /* payment_request_id */, | 317 std::map<int /* payment_request_id */, |
| 317 payments::mojom::PaymentAppResponseCallbackPtr> | 318 payments::mojom::PaymentAppResponseCallbackPtr> |
| 318 payment_response_callbacks; | 319 payment_response_callbacks; |
| 319 | 320 |
| 320 // Pending callbacks for Payment Request Events. | 321 // Pending callbacks for Payment Request Events. |
| 321 std::map<int /* payment_request_id */, | 322 std::map<int /* payment_request_id */, DispatchPaymentRequestEventCallback> |
| 322 const DispatchPaymentRequestEventCallback> | |
| 323 payment_request_event_callbacks; | 323 payment_request_event_callbacks; |
| 324 | 324 |
| 325 // Pending callbacks for Notification Click Events. | 325 // Pending callbacks for Notification Click Events. |
| 326 NotificationClickEventCallbacksMap notification_click_event_callbacks; | 326 NotificationClickEventCallbacksMap notification_click_event_callbacks; |
| 327 | 327 |
| 328 // Pending callbacks for Notification Close Events. | 328 // Pending callbacks for Notification Close Events. |
| 329 NotificationCloseEventCallbacksMap notification_close_event_callbacks; | 329 NotificationCloseEventCallbacksMap notification_close_event_callbacks; |
| 330 | 330 |
| 331 // Pending callbacks for Push Events. | 331 // Pending callbacks for Push Events. |
| 332 PushEventCallbacksMap push_event_callbacks; | 332 PushEventCallbacksMap push_event_callbacks; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 391 client->OnNavigationPreloadComplete(fetch_event_id_); | 391 client->OnNavigationPreloadComplete(fetch_event_id_); |
| 392 } | 392 } |
| 393 | 393 |
| 394 void OnDataDownloaded(int64_t data_length, | 394 void OnDataDownloaded(int64_t data_length, |
| 395 int64_t encoded_data_length) override { | 395 int64_t encoded_data_length) override { |
| 396 NOTREACHED(); | 396 NOTREACHED(); |
| 397 } | 397 } |
| 398 | 398 |
| 399 void OnUploadProgress(int64_t current_position, | 399 void OnUploadProgress(int64_t current_position, |
| 400 int64_t total_size, | 400 int64_t total_size, |
| 401 const base::Closure& ack_callback) override { | 401 OnUploadProgressCallback ack_callback) override { |
| 402 NOTREACHED(); | 402 NOTREACHED(); |
| 403 } | 403 } |
| 404 | 404 |
| 405 void OnReceiveCachedMetadata(const std::vector<uint8_t>& data) override {} | 405 void OnReceiveCachedMetadata(const std::vector<uint8_t>& data) override {} |
| 406 | 406 |
| 407 void OnTransferSizeUpdated(int32_t transfer_size_diff) override { | 407 void OnTransferSizeUpdated(int32_t transfer_size_diff) override { |
| 408 } | 408 } |
| 409 | 409 |
| 410 void OnStartLoadingResponseBody( | 410 void OnStartLoadingResponseBody( |
| 411 mojo::ScopedDataPipeConsumerHandle body) override { | 411 mojo::ScopedDataPipeConsumerHandle body) override { |
| (...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 788 | 788 |
| 789 blink::WebDevToolsAgentClient::WebKitClientMessageLoop* | 789 blink::WebDevToolsAgentClient::WebKitClientMessageLoop* |
| 790 ServiceWorkerContextClient::CreateDevToolsMessageLoop() { | 790 ServiceWorkerContextClient::CreateDevToolsMessageLoop() { |
| 791 return DevToolsAgent::createMessageLoopWrapper(); | 791 return DevToolsAgent::createMessageLoopWrapper(); |
| 792 } | 792 } |
| 793 | 793 |
| 794 void ServiceWorkerContextClient::DidHandleActivateEvent( | 794 void ServiceWorkerContextClient::DidHandleActivateEvent( |
| 795 int request_id, | 795 int request_id, |
| 796 blink::WebServiceWorkerEventResult result, | 796 blink::WebServiceWorkerEventResult result, |
| 797 double event_dispatch_time) { | 797 double event_dispatch_time) { |
| 798 const DispatchActivateEventCallback* callback = | 798 DispatchActivateEventCallback* callback = |
| 799 context_->activate_event_callbacks.Lookup(request_id); | 799 context_->activate_event_callbacks.Lookup(request_id); |
| 800 DCHECK(callback); | 800 DCHECK(callback); |
| 801 callback->Run(EventResultToStatus(result), | 801 DCHECK(*callback); |
| 802 base::Time::FromDoubleT(event_dispatch_time)); | 802 std::move(*callback).Run(EventResultToStatus(result), |
| 803 base::Time::FromDoubleT(event_dispatch_time)); |
| 803 context_->activate_event_callbacks.Remove(request_id); | 804 context_->activate_event_callbacks.Remove(request_id); |
| 804 } | 805 } |
| 805 | 806 |
| 806 void ServiceWorkerContextClient::DidHandleBackgroundFetchAbortEvent( | 807 void ServiceWorkerContextClient::DidHandleBackgroundFetchAbortEvent( |
| 807 int request_id, | 808 int request_id, |
| 808 blink::WebServiceWorkerEventResult result, | 809 blink::WebServiceWorkerEventResult result, |
| 809 double event_dispatch_time) { | 810 double event_dispatch_time) { |
| 810 const DispatchBackgroundFetchAbortEventCallback* callback = | 811 DispatchBackgroundFetchAbortEventCallback* callback = |
| 811 context_->background_fetch_abort_event_callbacks.Lookup(request_id); | 812 context_->background_fetch_abort_event_callbacks.Lookup(request_id); |
| 812 DCHECK(callback); | 813 DCHECK(callback); |
| 813 callback->Run(EventResultToStatus(result), | 814 DCHECK(*callback); |
| 814 base::Time::FromDoubleT(event_dispatch_time)); | 815 std::move(*callback).Run(EventResultToStatus(result), |
| 816 base::Time::FromDoubleT(event_dispatch_time)); |
| 815 context_->background_fetch_abort_event_callbacks.Remove(request_id); | 817 context_->background_fetch_abort_event_callbacks.Remove(request_id); |
| 816 } | 818 } |
| 817 | 819 |
| 818 void ServiceWorkerContextClient::DidHandleBackgroundFetchClickEvent( | 820 void ServiceWorkerContextClient::DidHandleBackgroundFetchClickEvent( |
| 819 int request_id, | 821 int request_id, |
| 820 blink::WebServiceWorkerEventResult result, | 822 blink::WebServiceWorkerEventResult result, |
| 821 double event_dispatch_time) { | 823 double event_dispatch_time) { |
| 822 const DispatchBackgroundFetchClickEventCallback* callback = | 824 DispatchBackgroundFetchClickEventCallback* callback = |
| 823 context_->background_fetch_click_event_callbacks.Lookup(request_id); | 825 context_->background_fetch_click_event_callbacks.Lookup(request_id); |
| 824 DCHECK(callback); | 826 DCHECK(callback); |
| 825 callback->Run(EventResultToStatus(result), | 827 DCHECK(*callback); |
| 826 base::Time::FromDoubleT(event_dispatch_time)); | 828 std::move(*callback).Run(EventResultToStatus(result), |
| 829 base::Time::FromDoubleT(event_dispatch_time)); |
| 827 context_->background_fetch_click_event_callbacks.Remove(request_id); | 830 context_->background_fetch_click_event_callbacks.Remove(request_id); |
| 828 } | 831 } |
| 829 | 832 |
| 830 void ServiceWorkerContextClient::DidHandleBackgroundFetchFailEvent( | 833 void ServiceWorkerContextClient::DidHandleBackgroundFetchFailEvent( |
| 831 int request_id, | 834 int request_id, |
| 832 blink::WebServiceWorkerEventResult result, | 835 blink::WebServiceWorkerEventResult result, |
| 833 double event_dispatch_time) { | 836 double event_dispatch_time) { |
| 834 const DispatchBackgroundFetchFailEventCallback* callback = | 837 DispatchBackgroundFetchFailEventCallback* callback = |
| 835 context_->background_fetch_fail_event_callbacks.Lookup(request_id); | 838 context_->background_fetch_fail_event_callbacks.Lookup(request_id); |
| 836 DCHECK(callback); | 839 DCHECK(callback); |
| 837 callback->Run(EventResultToStatus(result), | 840 DCHECK(*callback); |
| 838 base::Time::FromDoubleT(event_dispatch_time)); | 841 std::move(*callback).Run(EventResultToStatus(result), |
| 842 base::Time::FromDoubleT(event_dispatch_time)); |
| 839 context_->background_fetch_fail_event_callbacks.Remove(request_id); | 843 context_->background_fetch_fail_event_callbacks.Remove(request_id); |
| 840 } | 844 } |
| 841 | 845 |
| 842 void ServiceWorkerContextClient::DidHandleBackgroundFetchedEvent( | 846 void ServiceWorkerContextClient::DidHandleBackgroundFetchedEvent( |
| 843 int request_id, | 847 int request_id, |
| 844 blink::WebServiceWorkerEventResult result, | 848 blink::WebServiceWorkerEventResult result, |
| 845 double event_dispatch_time) { | 849 double event_dispatch_time) { |
| 846 const DispatchBackgroundFetchedEventCallback* callback = | 850 DispatchBackgroundFetchedEventCallback* callback = |
| 847 context_->background_fetched_event_callbacks.Lookup(request_id); | 851 context_->background_fetched_event_callbacks.Lookup(request_id); |
| 848 DCHECK(callback); | 852 DCHECK(callback); |
| 849 callback->Run(EventResultToStatus(result), | 853 DCHECK(*callback); |
| 850 base::Time::FromDoubleT(event_dispatch_time)); | 854 std::move(*callback).Run(EventResultToStatus(result), |
| 855 base::Time::FromDoubleT(event_dispatch_time)); |
| 851 context_->background_fetched_event_callbacks.Remove(request_id); | 856 context_->background_fetched_event_callbacks.Remove(request_id); |
| 852 } | 857 } |
| 853 | 858 |
| 854 void ServiceWorkerContextClient::DidHandleExtendableMessageEvent( | 859 void ServiceWorkerContextClient::DidHandleExtendableMessageEvent( |
| 855 int request_id, | 860 int request_id, |
| 856 blink::WebServiceWorkerEventResult result, | 861 blink::WebServiceWorkerEventResult result, |
| 857 double event_dispatch_time) { | 862 double event_dispatch_time) { |
| 858 const DispatchExtendableMessageEventCallback* callback = | 863 DispatchExtendableMessageEventCallback* callback = |
| 859 context_->message_event_callbacks.Lookup(request_id); | 864 context_->message_event_callbacks.Lookup(request_id); |
| 860 DCHECK(callback); | 865 DCHECK(callback); |
| 861 callback->Run(EventResultToStatus(result), | 866 DCHECK(*callback); |
| 862 base::Time::FromDoubleT(event_dispatch_time)); | 867 std::move(*callback).Run(EventResultToStatus(result), |
| 868 base::Time::FromDoubleT(event_dispatch_time)); |
| 863 context_->message_event_callbacks.Remove(request_id); | 869 context_->message_event_callbacks.Remove(request_id); |
| 864 } | 870 } |
| 865 | 871 |
| 866 void ServiceWorkerContextClient::DidHandleInstallEvent( | 872 void ServiceWorkerContextClient::DidHandleInstallEvent( |
| 867 int request_id, | 873 int request_id, |
| 868 blink::WebServiceWorkerEventResult result, | 874 blink::WebServiceWorkerEventResult result, |
| 869 double event_dispatch_time) { | 875 double event_dispatch_time) { |
| 870 Send(new ServiceWorkerHostMsg_InstallEventFinished( | 876 Send(new ServiceWorkerHostMsg_InstallEventFinished( |
| 871 GetRoutingID(), request_id, result, proxy_->HasFetchEventHandler(), | 877 GetRoutingID(), request_id, result, proxy_->HasFetchEventHandler(), |
| 872 base::Time::FromDoubleT(event_dispatch_time))); | 878 base::Time::FromDoubleT(event_dispatch_time))); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 889 GetRoutingID(), fetch_event_id, | 895 GetRoutingID(), fetch_event_id, |
| 890 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, | 896 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, |
| 891 GetServiceWorkerResponseFromWebResponse(web_response), | 897 GetServiceWorkerResponseFromWebResponse(web_response), |
| 892 base::Time::FromDoubleT(event_dispatch_time))); | 898 base::Time::FromDoubleT(event_dispatch_time))); |
| 893 } | 899 } |
| 894 | 900 |
| 895 void ServiceWorkerContextClient::DidHandleFetchEvent( | 901 void ServiceWorkerContextClient::DidHandleFetchEvent( |
| 896 int fetch_event_id, | 902 int fetch_event_id, |
| 897 blink::WebServiceWorkerEventResult result, | 903 blink::WebServiceWorkerEventResult result, |
| 898 double event_dispatch_time) { | 904 double event_dispatch_time) { |
| 899 const FetchCallback* callback = | 905 FetchCallback* callback = |
| 900 context_->fetch_event_callbacks.Lookup(fetch_event_id); | 906 context_->fetch_event_callbacks.Lookup(fetch_event_id); |
| 901 DCHECK(callback); | 907 DCHECK(callback); |
| 902 callback->Run(EventResultToStatus(result), | 908 DCHECK(*callback); |
| 903 base::Time::FromDoubleT(event_dispatch_time)); | 909 std::move(*callback).Run(EventResultToStatus(result), |
| 910 base::Time::FromDoubleT(event_dispatch_time)); |
| 904 context_->fetch_event_callbacks.Remove(fetch_event_id); | 911 context_->fetch_event_callbacks.Remove(fetch_event_id); |
| 905 } | 912 } |
| 906 | 913 |
| 907 void ServiceWorkerContextClient::DidHandleNotificationClickEvent( | 914 void ServiceWorkerContextClient::DidHandleNotificationClickEvent( |
| 908 int request_id, | 915 int request_id, |
| 909 blink::WebServiceWorkerEventResult result, | 916 blink::WebServiceWorkerEventResult result, |
| 910 double event_dispatch_time) { | 917 double event_dispatch_time) { |
| 911 const DispatchNotificationClickEventCallback* callback = | 918 DispatchNotificationClickEventCallback* callback = |
| 912 context_->notification_click_event_callbacks.Lookup(request_id); | 919 context_->notification_click_event_callbacks.Lookup(request_id); |
| 913 DCHECK(callback); | 920 DCHECK(callback); |
| 914 | 921 DCHECK(*callback); |
| 915 callback->Run(EventResultToStatus(result), | 922 std::move(*callback).Run(EventResultToStatus(result), |
| 916 base::Time::FromDoubleT(event_dispatch_time)); | 923 base::Time::FromDoubleT(event_dispatch_time)); |
| 917 | 924 |
| 918 context_->notification_click_event_callbacks.Remove(request_id); | 925 context_->notification_click_event_callbacks.Remove(request_id); |
| 919 } | 926 } |
| 920 | 927 |
| 921 void ServiceWorkerContextClient::DidHandleNotificationCloseEvent( | 928 void ServiceWorkerContextClient::DidHandleNotificationCloseEvent( |
| 922 int request_id, | 929 int request_id, |
| 923 blink::WebServiceWorkerEventResult result, | 930 blink::WebServiceWorkerEventResult result, |
| 924 double event_dispatch_time) { | 931 double event_dispatch_time) { |
| 925 const DispatchNotificationCloseEventCallback* callback = | 932 DispatchNotificationCloseEventCallback* callback = |
| 926 context_->notification_close_event_callbacks.Lookup(request_id); | 933 context_->notification_close_event_callbacks.Lookup(request_id); |
| 927 DCHECK(callback); | 934 DCHECK(callback); |
| 928 | 935 DCHECK(*callback); |
| 929 callback->Run(EventResultToStatus(result), | 936 std::move(*callback).Run(EventResultToStatus(result), |
| 930 base::Time::FromDoubleT(event_dispatch_time)); | 937 base::Time::FromDoubleT(event_dispatch_time)); |
| 931 | 938 |
| 932 context_->notification_close_event_callbacks.Remove(request_id); | 939 context_->notification_close_event_callbacks.Remove(request_id); |
| 933 } | 940 } |
| 934 | 941 |
| 935 void ServiceWorkerContextClient::DidHandlePushEvent( | 942 void ServiceWorkerContextClient::DidHandlePushEvent( |
| 936 int request_id, | 943 int request_id, |
| 937 blink::WebServiceWorkerEventResult result, | 944 blink::WebServiceWorkerEventResult result, |
| 938 double event_dispatch_time) { | 945 double event_dispatch_time) { |
| 939 const DispatchPushEventCallback* callback = | 946 DispatchPushEventCallback* callback = |
| 940 context_->push_event_callbacks.Lookup(request_id); | 947 context_->push_event_callbacks.Lookup(request_id); |
| 941 DCHECK(callback); | 948 DCHECK(callback); |
| 942 callback->Run(EventResultToStatus(result), | 949 DCHECK(*callback); |
| 943 base::Time::FromDoubleT(event_dispatch_time)); | 950 std::move(*callback).Run(EventResultToStatus(result), |
| 951 base::Time::FromDoubleT(event_dispatch_time)); |
| 944 context_->push_event_callbacks.Remove(request_id); | 952 context_->push_event_callbacks.Remove(request_id); |
| 945 } | 953 } |
| 946 | 954 |
| 947 void ServiceWorkerContextClient::DidHandleSyncEvent( | 955 void ServiceWorkerContextClient::DidHandleSyncEvent( |
| 948 int request_id, | 956 int request_id, |
| 949 blink::WebServiceWorkerEventResult result, | 957 blink::WebServiceWorkerEventResult result, |
| 950 double event_dispatch_time) { | 958 double event_dispatch_time) { |
| 951 const SyncCallback* callback = | 959 SyncCallback* callback = context_->sync_event_callbacks.Lookup(request_id); |
| 952 context_->sync_event_callbacks.Lookup(request_id); | |
| 953 DCHECK(callback); | 960 DCHECK(callback); |
| 954 callback->Run(EventResultToStatus(result), | 961 DCHECK(*callback); |
| 955 base::Time::FromDoubleT(event_dispatch_time)); | 962 std::move(*callback).Run(EventResultToStatus(result), |
| 963 base::Time::FromDoubleT(event_dispatch_time)); |
| 956 context_->sync_event_callbacks.Remove(request_id); | 964 context_->sync_event_callbacks.Remove(request_id); |
| 957 } | 965 } |
| 958 | 966 |
| 959 void ServiceWorkerContextClient::RespondToPaymentRequestEvent( | 967 void ServiceWorkerContextClient::RespondToPaymentRequestEvent( |
| 960 int payment_request_id, | 968 int payment_request_id, |
| 961 const blink::WebPaymentAppResponse& web_response, | 969 const blink::WebPaymentAppResponse& web_response, |
| 962 double dispatch_event_time) { | 970 double dispatch_event_time) { |
| 963 const payments::mojom::PaymentAppResponseCallbackPtr& response_callback = | 971 const payments::mojom::PaymentAppResponseCallbackPtr& response_callback = |
| 964 context_->payment_response_callbacks[payment_request_id]; | 972 context_->payment_response_callbacks[payment_request_id]; |
| 965 payments::mojom::PaymentAppResponsePtr response = | 973 payments::mojom::PaymentAppResponsePtr response = |
| 966 payments::mojom::PaymentAppResponse::New(); | 974 payments::mojom::PaymentAppResponse::New(); |
| 967 response->method_name = web_response.method_name.Utf8(); | 975 response->method_name = web_response.method_name.Utf8(); |
| 968 response_callback->OnPaymentAppResponse( | 976 response_callback->OnPaymentAppResponse( |
| 969 std::move(response), base::Time::FromDoubleT(dispatch_event_time)); | 977 std::move(response), base::Time::FromDoubleT(dispatch_event_time)); |
| 970 context_->payment_response_callbacks.erase(payment_request_id); | 978 context_->payment_response_callbacks.erase(payment_request_id); |
| 971 } | 979 } |
| 972 | 980 |
| 973 void ServiceWorkerContextClient::DidHandlePaymentRequestEvent( | 981 void ServiceWorkerContextClient::DidHandlePaymentRequestEvent( |
| 974 int payment_request_id, | 982 int payment_request_id, |
| 975 blink::WebServiceWorkerEventResult result, | 983 blink::WebServiceWorkerEventResult result, |
| 976 double event_dispatch_time) { | 984 double event_dispatch_time) { |
| 977 const DispatchPaymentRequestEventCallback& callback = | 985 DispatchPaymentRequestEventCallback callback = |
| 978 context_->payment_request_event_callbacks[payment_request_id]; | 986 std::move(context_->payment_request_event_callbacks[payment_request_id]); |
| 979 callback.Run(EventResultToStatus(result), | 987 std::move(callback).Run(EventResultToStatus(result), |
| 980 base::Time::FromDoubleT(event_dispatch_time)); | 988 base::Time::FromDoubleT(event_dispatch_time)); |
| 981 context_->payment_request_event_callbacks.erase(payment_request_id); | 989 context_->payment_request_event_callbacks.erase(payment_request_id); |
| 982 } | 990 } |
| 983 | 991 |
| 984 blink::WebServiceWorkerNetworkProvider* | 992 blink::WebServiceWorkerNetworkProvider* |
| 985 ServiceWorkerContextClient::CreateServiceWorkerNetworkProvider() { | 993 ServiceWorkerContextClient::CreateServiceWorkerNetworkProvider() { |
| 986 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); | 994 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); |
| 987 | 995 |
| 988 // Create a content::ServiceWorkerNetworkProvider for this data source so | 996 // Create a content::ServiceWorkerNetworkProvider for this data source so |
| 989 // we can observe its requests. | 997 // we can observe its requests. |
| 990 std::unique_ptr<ServiceWorkerNetworkProvider> provider = | 998 std::unique_ptr<ServiceWorkerNetworkProvider> provider = |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1057 const blink::WebVector<blink::WebURL>& sub_scopes, | 1065 const blink::WebVector<blink::WebURL>& sub_scopes, |
| 1058 const blink::WebVector<blink::WebSecurityOrigin>& origins) { | 1066 const blink::WebVector<blink::WebSecurityOrigin>& origins) { |
| 1059 Send(new ServiceWorkerHostMsg_RegisterForeignFetchScopes( | 1067 Send(new ServiceWorkerHostMsg_RegisterForeignFetchScopes( |
| 1060 GetRoutingID(), std::vector<GURL>(sub_scopes.begin(), sub_scopes.end()), | 1068 GetRoutingID(), std::vector<GURL>(sub_scopes.begin(), sub_scopes.end()), |
| 1061 std::vector<url::Origin>(origins.begin(), origins.end()))); | 1069 std::vector<url::Origin>(origins.begin(), origins.end()))); |
| 1062 } | 1070 } |
| 1063 | 1071 |
| 1064 void ServiceWorkerContextClient::DispatchSyncEvent( | 1072 void ServiceWorkerContextClient::DispatchSyncEvent( |
| 1065 const std::string& tag, | 1073 const std::string& tag, |
| 1066 blink::mojom::BackgroundSyncEventLastChance last_chance, | 1074 blink::mojom::BackgroundSyncEventLastChance last_chance, |
| 1067 const DispatchSyncEventCallback& callback) { | 1075 DispatchSyncEventCallback callback) { |
| 1068 TRACE_EVENT0("ServiceWorker", | 1076 TRACE_EVENT0("ServiceWorker", |
| 1069 "ServiceWorkerContextClient::DispatchSyncEvent"); | 1077 "ServiceWorkerContextClient::DispatchSyncEvent"); |
| 1070 int request_id = context_->sync_event_callbacks.Add( | 1078 int request_id = context_->sync_event_callbacks.Add( |
| 1071 base::MakeUnique<SyncCallback>(callback)); | 1079 base::MakeUnique<SyncCallback>(std::move(callback))); |
| 1072 | 1080 |
| 1073 // TODO(shimazu): Use typemap when this is moved to blink-side. | 1081 // TODO(shimazu): Use typemap when this is moved to blink-side. |
| 1074 blink::WebServiceWorkerContextProxy::LastChanceOption web_last_chance = | 1082 blink::WebServiceWorkerContextProxy::LastChanceOption web_last_chance = |
| 1075 mojo::ConvertTo<blink::WebServiceWorkerContextProxy::LastChanceOption>( | 1083 mojo::ConvertTo<blink::WebServiceWorkerContextProxy::LastChanceOption>( |
| 1076 last_chance); | 1084 last_chance); |
| 1077 | 1085 |
| 1078 // TODO(jkarlin): Make this blink::WebString::FromUTF8Lenient once | 1086 // TODO(jkarlin): Make this blink::WebString::FromUTF8Lenient once |
| 1079 // https://crrev.com/1768063002/ lands. | 1087 // https://crrev.com/1768063002/ lands. |
| 1080 proxy_->DispatchSyncEvent(request_id, blink::WebString::FromUTF8(tag), | 1088 proxy_->DispatchSyncEvent(request_id, blink::WebString::FromUTF8(tag), |
| 1081 web_last_chance); | 1089 web_last_chance); |
| 1082 } | 1090 } |
| 1083 | 1091 |
| 1084 void ServiceWorkerContextClient::DispatchPaymentRequestEvent( | 1092 void ServiceWorkerContextClient::DispatchPaymentRequestEvent( |
| 1085 int payment_request_id, | 1093 int payment_request_id, |
| 1086 payments::mojom::PaymentAppRequestPtr app_request, | 1094 payments::mojom::PaymentAppRequestPtr app_request, |
| 1087 payments::mojom::PaymentAppResponseCallbackPtr response_callback, | 1095 payments::mojom::PaymentAppResponseCallbackPtr response_callback, |
| 1088 const DispatchPaymentRequestEventCallback& callback) { | 1096 DispatchPaymentRequestEventCallback callback) { |
| 1089 TRACE_EVENT0("ServiceWorker", | 1097 TRACE_EVENT0("ServiceWorker", |
| 1090 "ServiceWorkerContextClient::DispatchPaymentRequestEvent"); | 1098 "ServiceWorkerContextClient::DispatchPaymentRequestEvent"); |
| 1091 context_->payment_response_callbacks.insert( | 1099 context_->payment_response_callbacks.insert( |
| 1092 std::make_pair(payment_request_id, std::move(response_callback))); | 1100 std::make_pair(payment_request_id, std::move(response_callback))); |
| 1093 context_->payment_request_event_callbacks.insert( | 1101 context_->payment_request_event_callbacks.insert( |
| 1094 std::make_pair(payment_request_id, callback)); | 1102 std::make_pair(payment_request_id, std::move(callback))); |
| 1095 | 1103 |
| 1096 blink::WebPaymentAppRequest webAppRequest = | 1104 blink::WebPaymentAppRequest webAppRequest = |
| 1097 mojo::ConvertTo<blink::WebPaymentAppRequest>(std::move(app_request)); | 1105 mojo::ConvertTo<blink::WebPaymentAppRequest>(std::move(app_request)); |
| 1098 proxy_->DispatchPaymentRequestEvent(payment_request_id, webAppRequest); | 1106 proxy_->DispatchPaymentRequestEvent(payment_request_id, webAppRequest); |
| 1099 } | 1107 } |
| 1100 | 1108 |
| 1101 void ServiceWorkerContextClient::Send(IPC::Message* message) { | 1109 void ServiceWorkerContextClient::Send(IPC::Message* message) { |
| 1102 sender_->Send(message); | 1110 sender_->Send(message); |
| 1103 } | 1111 } |
| 1104 | 1112 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1121 // Register a registration and its version attributes with the dispatcher | 1129 // Register a registration and its version attributes with the dispatcher |
| 1122 // living on the worker thread. | 1130 // living on the worker thread. |
| 1123 scoped_refptr<WebServiceWorkerRegistrationImpl> registration( | 1131 scoped_refptr<WebServiceWorkerRegistrationImpl> registration( |
| 1124 dispatcher->GetOrCreateRegistration(info, attrs)); | 1132 dispatcher->GetOrCreateRegistration(info, attrs)); |
| 1125 | 1133 |
| 1126 proxy_->SetRegistration( | 1134 proxy_->SetRegistration( |
| 1127 WebServiceWorkerRegistrationImpl::CreateHandle(registration)); | 1135 WebServiceWorkerRegistrationImpl::CreateHandle(registration)); |
| 1128 } | 1136 } |
| 1129 | 1137 |
| 1130 void ServiceWorkerContextClient::DispatchActivateEvent( | 1138 void ServiceWorkerContextClient::DispatchActivateEvent( |
| 1131 const DispatchActivateEventCallback& callback) { | 1139 DispatchActivateEventCallback callback) { |
| 1132 TRACE_EVENT0("ServiceWorker", | 1140 TRACE_EVENT0("ServiceWorker", |
| 1133 "ServiceWorkerContextClient::DispatchActivateEvent"); | 1141 "ServiceWorkerContextClient::DispatchActivateEvent"); |
| 1134 int request_id = context_->activate_event_callbacks.Add( | 1142 int request_id = context_->activate_event_callbacks.Add( |
| 1135 base::MakeUnique<DispatchActivateEventCallback>(callback)); | 1143 base::MakeUnique<DispatchActivateEventCallback>(std::move(callback))); |
| 1136 proxy_->DispatchActivateEvent(request_id); | 1144 proxy_->DispatchActivateEvent(request_id); |
| 1137 } | 1145 } |
| 1138 | 1146 |
| 1139 void ServiceWorkerContextClient::DispatchBackgroundFetchAbortEvent( | 1147 void ServiceWorkerContextClient::DispatchBackgroundFetchAbortEvent( |
| 1140 const std::string& tag, | 1148 const std::string& tag, |
| 1141 const DispatchBackgroundFetchAbortEventCallback& callback) { | 1149 DispatchBackgroundFetchAbortEventCallback callback) { |
| 1142 TRACE_EVENT0("ServiceWorker", | 1150 TRACE_EVENT0("ServiceWorker", |
| 1143 "ServiceWorkerContextClient::DispatchBackgroundFetchAbortEvent"); | 1151 "ServiceWorkerContextClient::DispatchBackgroundFetchAbortEvent"); |
| 1144 int request_id = context_->background_fetch_abort_event_callbacks.Add( | 1152 int request_id = context_->background_fetch_abort_event_callbacks.Add( |
| 1145 base::MakeUnique<DispatchBackgroundFetchAbortEventCallback>(callback)); | 1153 base::MakeUnique<DispatchBackgroundFetchAbortEventCallback>( |
| 1154 std::move(callback))); |
| 1146 | 1155 |
| 1147 proxy_->DispatchBackgroundFetchAbortEvent(request_id, | 1156 proxy_->DispatchBackgroundFetchAbortEvent(request_id, |
| 1148 blink::WebString::FromUTF8(tag)); | 1157 blink::WebString::FromUTF8(tag)); |
| 1149 } | 1158 } |
| 1150 | 1159 |
| 1151 void ServiceWorkerContextClient::DispatchBackgroundFetchClickEvent( | 1160 void ServiceWorkerContextClient::DispatchBackgroundFetchClickEvent( |
| 1152 const std::string& tag, | 1161 const std::string& tag, |
| 1153 mojom::BackgroundFetchState state, | 1162 mojom::BackgroundFetchState state, |
| 1154 const DispatchBackgroundFetchClickEventCallback& callback) { | 1163 DispatchBackgroundFetchClickEventCallback callback) { |
| 1155 TRACE_EVENT0("ServiceWorker", | 1164 TRACE_EVENT0("ServiceWorker", |
| 1156 "ServiceWorkerContextClient::DispatchBackgroundFetchClickEvent"); | 1165 "ServiceWorkerContextClient::DispatchBackgroundFetchClickEvent"); |
| 1157 int request_id = context_->background_fetch_click_event_callbacks.Add( | 1166 int request_id = context_->background_fetch_click_event_callbacks.Add( |
| 1158 base::MakeUnique<DispatchBackgroundFetchClickEventCallback>(callback)); | 1167 base::MakeUnique<DispatchBackgroundFetchClickEventCallback>( |
| 1168 std::move(callback))); |
| 1159 | 1169 |
| 1160 // TODO(peter): Use typemap when this is moved to blink-side. | 1170 // TODO(peter): Use typemap when this is moved to blink-side. |
| 1161 blink::WebServiceWorkerContextProxy::BackgroundFetchState web_state = | 1171 blink::WebServiceWorkerContextProxy::BackgroundFetchState web_state = |
| 1162 mojo::ConvertTo< | 1172 mojo::ConvertTo< |
| 1163 blink::WebServiceWorkerContextProxy::BackgroundFetchState>(state); | 1173 blink::WebServiceWorkerContextProxy::BackgroundFetchState>(state); |
| 1164 | 1174 |
| 1165 proxy_->DispatchBackgroundFetchClickEvent( | 1175 proxy_->DispatchBackgroundFetchClickEvent( |
| 1166 request_id, blink::WebString::FromUTF8(tag), web_state); | 1176 request_id, blink::WebString::FromUTF8(tag), web_state); |
| 1167 } | 1177 } |
| 1168 | 1178 |
| 1169 void ServiceWorkerContextClient::DispatchBackgroundFetchFailEvent( | 1179 void ServiceWorkerContextClient::DispatchBackgroundFetchFailEvent( |
| 1170 const std::string& tag, | 1180 const std::string& tag, |
| 1171 const std::vector<BackgroundFetchSettledFetch>& fetches, | 1181 const std::vector<BackgroundFetchSettledFetch>& fetches, |
| 1172 const DispatchBackgroundFetchFailEventCallback& callback) { | 1182 DispatchBackgroundFetchFailEventCallback callback) { |
| 1173 TRACE_EVENT0("ServiceWorker", | 1183 TRACE_EVENT0("ServiceWorker", |
| 1174 "ServiceWorkerContextClient::DispatchBackgroundFetchFailEvent"); | 1184 "ServiceWorkerContextClient::DispatchBackgroundFetchFailEvent"); |
| 1175 int request_id = context_->background_fetch_fail_event_callbacks.Add( | 1185 int request_id = context_->background_fetch_fail_event_callbacks.Add( |
| 1176 base::MakeUnique<DispatchBackgroundFetchFailEventCallback>(callback)); | 1186 base::MakeUnique<DispatchBackgroundFetchFailEventCallback>( |
| 1187 std::move(callback))); |
| 1177 | 1188 |
| 1178 blink::WebVector<blink::WebBackgroundFetchSettledFetch> web_fetches( | 1189 blink::WebVector<blink::WebBackgroundFetchSettledFetch> web_fetches( |
| 1179 fetches.size()); | 1190 fetches.size()); |
| 1180 for (size_t i = 0; i < fetches.size(); ++i) { | 1191 for (size_t i = 0; i < fetches.size(); ++i) { |
| 1181 ToWebServiceWorkerRequest(fetches[i].request, &web_fetches[i].request); | 1192 ToWebServiceWorkerRequest(fetches[i].request, &web_fetches[i].request); |
| 1182 ToWebServiceWorkerResponse(fetches[i].response, &web_fetches[i].response); | 1193 ToWebServiceWorkerResponse(fetches[i].response, &web_fetches[i].response); |
| 1183 } | 1194 } |
| 1184 | 1195 |
| 1185 proxy_->DispatchBackgroundFetchFailEvent( | 1196 proxy_->DispatchBackgroundFetchFailEvent( |
| 1186 request_id, blink::WebString::FromUTF8(tag), web_fetches); | 1197 request_id, blink::WebString::FromUTF8(tag), web_fetches); |
| 1187 } | 1198 } |
| 1188 | 1199 |
| 1189 void ServiceWorkerContextClient::DispatchBackgroundFetchedEvent( | 1200 void ServiceWorkerContextClient::DispatchBackgroundFetchedEvent( |
| 1190 const std::string& tag, | 1201 const std::string& tag, |
| 1191 const std::vector<BackgroundFetchSettledFetch>& fetches, | 1202 const std::vector<BackgroundFetchSettledFetch>& fetches, |
| 1192 const DispatchBackgroundFetchedEventCallback& callback) { | 1203 DispatchBackgroundFetchedEventCallback callback) { |
| 1193 TRACE_EVENT0("ServiceWorker", | 1204 TRACE_EVENT0("ServiceWorker", |
| 1194 "ServiceWorkerContextClient::DispatchBackgroundFetchedEvent"); | 1205 "ServiceWorkerContextClient::DispatchBackgroundFetchedEvent"); |
| 1195 int request_id = context_->background_fetched_event_callbacks.Add( | 1206 int request_id = context_->background_fetched_event_callbacks.Add( |
| 1196 base::MakeUnique<DispatchBackgroundFetchedEventCallback>(callback)); | 1207 base::MakeUnique<DispatchBackgroundFetchedEventCallback>( |
| 1208 std::move(callback))); |
| 1197 | 1209 |
| 1198 blink::WebVector<blink::WebBackgroundFetchSettledFetch> web_fetches( | 1210 blink::WebVector<blink::WebBackgroundFetchSettledFetch> web_fetches( |
| 1199 fetches.size()); | 1211 fetches.size()); |
| 1200 for (size_t i = 0; i < fetches.size(); ++i) { | 1212 for (size_t i = 0; i < fetches.size(); ++i) { |
| 1201 ToWebServiceWorkerRequest(fetches[i].request, &web_fetches[i].request); | 1213 ToWebServiceWorkerRequest(fetches[i].request, &web_fetches[i].request); |
| 1202 ToWebServiceWorkerResponse(fetches[i].response, &web_fetches[i].response); | 1214 ToWebServiceWorkerResponse(fetches[i].response, &web_fetches[i].response); |
| 1203 } | 1215 } |
| 1204 | 1216 |
| 1205 proxy_->DispatchBackgroundFetchedEvent( | 1217 proxy_->DispatchBackgroundFetchedEvent( |
| 1206 request_id, blink::WebString::FromUTF8(tag), web_fetches); | 1218 request_id, blink::WebString::FromUTF8(tag), web_fetches); |
| 1207 } | 1219 } |
| 1208 | 1220 |
| 1209 void ServiceWorkerContextClient::DispatchExtendableMessageEvent( | 1221 void ServiceWorkerContextClient::DispatchExtendableMessageEvent( |
| 1210 mojom::ExtendableMessageEventPtr event, | 1222 mojom::ExtendableMessageEventPtr event, |
| 1211 const DispatchExtendableMessageEventCallback& callback) { | 1223 DispatchExtendableMessageEventCallback callback) { |
| 1212 TRACE_EVENT0("ServiceWorker", | 1224 TRACE_EVENT0("ServiceWorker", |
| 1213 "ServiceWorkerContextClient::DispatchExtendableMessageEvent"); | 1225 "ServiceWorkerContextClient::DispatchExtendableMessageEvent"); |
| 1214 int request_id = context_->message_event_callbacks.Add( | 1226 int request_id = context_->message_event_callbacks.Add( |
| 1215 base::MakeUnique<DispatchExtendableMessageEventCallback>(callback)); | 1227 base::MakeUnique<DispatchExtendableMessageEventCallback>( |
| 1228 std::move(callback))); |
| 1216 | 1229 |
| 1217 blink::WebMessagePortChannelArray ports = | 1230 blink::WebMessagePortChannelArray ports = |
| 1218 WebMessagePortChannelImpl::CreateFromMessagePipeHandles( | 1231 WebMessagePortChannelImpl::CreateFromMessagePipeHandles( |
| 1219 std::move(event->message_ports)); | 1232 std::move(event->message_ports)); |
| 1220 if (event->source.client_info.IsValid()) { | 1233 if (event->source.client_info.IsValid()) { |
| 1221 blink::WebServiceWorkerClientInfo web_client = | 1234 blink::WebServiceWorkerClientInfo web_client = |
| 1222 ToWebServiceWorkerClientInfo(event->source.client_info); | 1235 ToWebServiceWorkerClientInfo(event->source.client_info); |
| 1223 proxy_->DispatchExtendableMessageEvent( | 1236 proxy_->DispatchExtendableMessageEvent( |
| 1224 request_id, blink::WebString::FromUTF16(event->message), | 1237 request_id, blink::WebString::FromUTF16(event->message), |
| 1225 event->source_origin, std::move(ports), web_client); | 1238 event->source_origin, std::move(ports), web_client); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1244 void ServiceWorkerContextClient::OnInstallEvent(int request_id) { | 1257 void ServiceWorkerContextClient::OnInstallEvent(int request_id) { |
| 1245 TRACE_EVENT0("ServiceWorker", | 1258 TRACE_EVENT0("ServiceWorker", |
| 1246 "ServiceWorkerContextClient::OnInstallEvent"); | 1259 "ServiceWorkerContextClient::OnInstallEvent"); |
| 1247 proxy_->DispatchInstallEvent(request_id); | 1260 proxy_->DispatchInstallEvent(request_id); |
| 1248 } | 1261 } |
| 1249 | 1262 |
| 1250 void ServiceWorkerContextClient::DispatchFetchEvent( | 1263 void ServiceWorkerContextClient::DispatchFetchEvent( |
| 1251 int fetch_event_id, | 1264 int fetch_event_id, |
| 1252 const ServiceWorkerFetchRequest& request, | 1265 const ServiceWorkerFetchRequest& request, |
| 1253 mojom::FetchEventPreloadHandlePtr preload_handle, | 1266 mojom::FetchEventPreloadHandlePtr preload_handle, |
| 1254 const DispatchFetchEventCallback& callback) { | 1267 DispatchFetchEventCallback callback) { |
| 1255 std::unique_ptr<NavigationPreloadRequest> preload_request = | 1268 std::unique_ptr<NavigationPreloadRequest> preload_request = |
| 1256 preload_handle | 1269 preload_handle |
| 1257 ? base::MakeUnique<NavigationPreloadRequest>( | 1270 ? base::MakeUnique<NavigationPreloadRequest>( |
| 1258 fetch_event_id, request.url, std::move(preload_handle)) | 1271 fetch_event_id, request.url, std::move(preload_handle)) |
| 1259 : nullptr; | 1272 : nullptr; |
| 1260 const bool navigation_preload_sent = !!preload_request; | 1273 const bool navigation_preload_sent = !!preload_request; |
| 1261 TRACE_EVENT0("ServiceWorker", | 1274 TRACE_EVENT0("ServiceWorker", |
| 1262 "ServiceWorkerContextClient::DispatchFetchEvent"); | 1275 "ServiceWorkerContextClient::DispatchFetchEvent"); |
| 1263 context_->fetch_event_callbacks.AddWithID( | 1276 context_->fetch_event_callbacks.AddWithID( |
| 1264 base::MakeUnique<FetchCallback>(callback), fetch_event_id); | 1277 base::MakeUnique<FetchCallback>(std::move(callback)), fetch_event_id); |
| 1265 if (preload_request) { | 1278 if (preload_request) { |
| 1266 context_->preload_requests.AddWithID(std::move(preload_request), | 1279 context_->preload_requests.AddWithID(std::move(preload_request), |
| 1267 fetch_event_id); | 1280 fetch_event_id); |
| 1268 } | 1281 } |
| 1269 | 1282 |
| 1270 blink::WebServiceWorkerRequest web_request; | 1283 blink::WebServiceWorkerRequest web_request; |
| 1271 ToWebServiceWorkerRequest(request, &web_request); | 1284 ToWebServiceWorkerRequest(request, &web_request); |
| 1272 | 1285 |
| 1273 if (request.fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) { | 1286 if (request.fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) { |
| 1274 proxy_->DispatchForeignFetchEvent(fetch_event_id, web_request); | 1287 proxy_->DispatchForeignFetchEvent(fetch_event_id, web_request); |
| 1275 } else { | 1288 } else { |
| 1276 proxy_->DispatchFetchEvent(fetch_event_id, web_request, | 1289 proxy_->DispatchFetchEvent(fetch_event_id, web_request, |
| 1277 navigation_preload_sent); | 1290 navigation_preload_sent); |
| 1278 } | 1291 } |
| 1279 } | 1292 } |
| 1280 | 1293 |
| 1281 void ServiceWorkerContextClient::DispatchNotificationClickEvent( | 1294 void ServiceWorkerContextClient::DispatchNotificationClickEvent( |
| 1282 const std::string& notification_id, | 1295 const std::string& notification_id, |
| 1283 const PlatformNotificationData& notification_data, | 1296 const PlatformNotificationData& notification_data, |
| 1284 int action_index, | 1297 int action_index, |
| 1285 const base::Optional<base::string16>& reply, | 1298 const base::Optional<base::string16>& reply, |
| 1286 const DispatchNotificationClickEventCallback& callback) { | 1299 DispatchNotificationClickEventCallback callback) { |
| 1287 TRACE_EVENT0("ServiceWorker", | 1300 TRACE_EVENT0("ServiceWorker", |
| 1288 "ServiceWorkerContextClient::DispatchNotificationClickEvent"); | 1301 "ServiceWorkerContextClient::DispatchNotificationClickEvent"); |
| 1289 | 1302 |
| 1290 int request_id = context_->notification_click_event_callbacks.Add( | 1303 int request_id = context_->notification_click_event_callbacks.Add( |
| 1291 base::MakeUnique<DispatchNotificationClickEventCallback>(callback)); | 1304 base::MakeUnique<DispatchNotificationClickEventCallback>( |
| 1305 std::move(callback))); |
| 1292 | 1306 |
| 1293 blink::WebString web_reply; | 1307 blink::WebString web_reply; |
| 1294 if (reply) | 1308 if (reply) |
| 1295 web_reply = blink::WebString::FromUTF16(reply.value()); | 1309 web_reply = blink::WebString::FromUTF16(reply.value()); |
| 1296 | 1310 |
| 1297 proxy_->DispatchNotificationClickEvent( | 1311 proxy_->DispatchNotificationClickEvent( |
| 1298 request_id, blink::WebString::FromUTF8(notification_id), | 1312 request_id, blink::WebString::FromUTF8(notification_id), |
| 1299 ToWebNotificationData(notification_data), action_index, web_reply); | 1313 ToWebNotificationData(notification_data), action_index, web_reply); |
| 1300 } | 1314 } |
| 1301 | 1315 |
| 1302 void ServiceWorkerContextClient::DispatchNotificationCloseEvent( | 1316 void ServiceWorkerContextClient::DispatchNotificationCloseEvent( |
| 1303 const std::string& notification_id, | 1317 const std::string& notification_id, |
| 1304 const PlatformNotificationData& notification_data, | 1318 const PlatformNotificationData& notification_data, |
| 1305 const DispatchNotificationCloseEventCallback& callback) { | 1319 DispatchNotificationCloseEventCallback callback) { |
| 1306 TRACE_EVENT0("ServiceWorker", | 1320 TRACE_EVENT0("ServiceWorker", |
| 1307 "ServiceWorkerContextClient::DispatchNotificationCloseEvent"); | 1321 "ServiceWorkerContextClient::DispatchNotificationCloseEvent"); |
| 1308 | 1322 |
| 1309 int request_id = context_->notification_close_event_callbacks.Add( | 1323 int request_id = context_->notification_close_event_callbacks.Add( |
| 1310 base::MakeUnique<DispatchNotificationCloseEventCallback>(callback)); | 1324 base::MakeUnique<DispatchNotificationCloseEventCallback>( |
| 1325 std::move(callback))); |
| 1311 | 1326 |
| 1312 proxy_->DispatchNotificationCloseEvent( | 1327 proxy_->DispatchNotificationCloseEvent( |
| 1313 request_id, blink::WebString::FromUTF8(notification_id), | 1328 request_id, blink::WebString::FromUTF8(notification_id), |
| 1314 ToWebNotificationData(notification_data)); | 1329 ToWebNotificationData(notification_data)); |
| 1315 } | 1330 } |
| 1316 | 1331 |
| 1317 void ServiceWorkerContextClient::DispatchPushEvent( | 1332 void ServiceWorkerContextClient::DispatchPushEvent( |
| 1318 const PushEventPayload& payload, | 1333 const PushEventPayload& payload, |
| 1319 const DispatchPushEventCallback& callback) { | 1334 DispatchPushEventCallback callback) { |
| 1320 TRACE_EVENT0("ServiceWorker", | 1335 TRACE_EVENT0("ServiceWorker", |
| 1321 "ServiceWorkerContextClient::DispatchPushEvent"); | 1336 "ServiceWorkerContextClient::DispatchPushEvent"); |
| 1322 int request_id = context_->push_event_callbacks.Add( | 1337 int request_id = context_->push_event_callbacks.Add( |
| 1323 base::MakeUnique<DispatchPushEventCallback>(callback)); | 1338 base::MakeUnique<DispatchPushEventCallback>(std::move(callback))); |
| 1324 | 1339 |
| 1325 // Only set data to be a valid string if the payload had decrypted data. | 1340 // Only set data to be a valid string if the payload had decrypted data. |
| 1326 blink::WebString data; | 1341 blink::WebString data; |
| 1327 if (!payload.is_null) | 1342 if (!payload.is_null) |
| 1328 data.Assign(blink::WebString::FromUTF8(payload.data)); | 1343 data.Assign(blink::WebString::FromUTF8(payload.data)); |
| 1329 proxy_->DispatchPushEvent(request_id, data); | 1344 proxy_->DispatchPushEvent(request_id, data); |
| 1330 } | 1345 } |
| 1331 | 1346 |
| 1332 void ServiceWorkerContextClient::OnDidGetClient( | 1347 void ServiceWorkerContextClient::OnDidGetClient( |
| 1333 int request_id, | 1348 int request_id, |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1506 context_->claim_clients_callbacks.Lookup(request_id); | 1521 context_->claim_clients_callbacks.Lookup(request_id); |
| 1507 if (!callbacks) { | 1522 if (!callbacks) { |
| 1508 NOTREACHED() << "Got stray response: " << request_id; | 1523 NOTREACHED() << "Got stray response: " << request_id; |
| 1509 return; | 1524 return; |
| 1510 } | 1525 } |
| 1511 callbacks->OnError(blink::WebServiceWorkerError( | 1526 callbacks->OnError(blink::WebServiceWorkerError( |
| 1512 error_type, blink::WebString::FromUTF16(message))); | 1527 error_type, blink::WebString::FromUTF16(message))); |
| 1513 context_->claim_clients_callbacks.Remove(request_id); | 1528 context_->claim_clients_callbacks.Remove(request_id); |
| 1514 } | 1529 } |
| 1515 | 1530 |
| 1516 void ServiceWorkerContextClient::Ping(const PingCallback& callback) { | 1531 void ServiceWorkerContextClient::Ping(PingCallback callback) { |
| 1517 callback.Run(); | 1532 std::move(callback).Run(); |
| 1518 } | 1533 } |
| 1519 | 1534 |
| 1520 void ServiceWorkerContextClient::OnNavigationPreloadResponse( | 1535 void ServiceWorkerContextClient::OnNavigationPreloadResponse( |
| 1521 int fetch_event_id, | 1536 int fetch_event_id, |
| 1522 std::unique_ptr<blink::WebURLResponse> response, | 1537 std::unique_ptr<blink::WebURLResponse> response, |
| 1523 std::unique_ptr<blink::WebDataConsumerHandle> data_consumer_handle) { | 1538 std::unique_ptr<blink::WebDataConsumerHandle> data_consumer_handle) { |
| 1524 proxy_->OnNavigationPreloadResponse(fetch_event_id, std::move(response), | 1539 proxy_->OnNavigationPreloadResponse(fetch_event_id, std::move(response), |
| 1525 std::move(data_consumer_handle)); | 1540 std::move(data_consumer_handle)); |
| 1526 } | 1541 } |
| 1527 | 1542 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1538 } | 1553 } |
| 1539 | 1554 |
| 1540 base::WeakPtr<ServiceWorkerContextClient> | 1555 base::WeakPtr<ServiceWorkerContextClient> |
| 1541 ServiceWorkerContextClient::GetWeakPtr() { | 1556 ServiceWorkerContextClient::GetWeakPtr() { |
| 1542 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); | 1557 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); |
| 1543 DCHECK(context_); | 1558 DCHECK(context_); |
| 1544 return context_->weak_factory.GetWeakPtr(); | 1559 return context_->weak_factory.GetWeakPtr(); |
| 1545 } | 1560 } |
| 1546 | 1561 |
| 1547 } // namespace content | 1562 } // namespace content |
| OLD | NEW |