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

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

Powered by Google App Engine
This is Rietveld 408576698