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

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

Issue 2824193002: Enable use_once_callback for //content/common/*.mojom (Closed)
Patch Set: push_messaging fix Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/service_worker/service_worker_context_client.h" 5 #include "content/renderer/service_worker/service_worker_context_client.h"
6 6
7 #include <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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698