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

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

Issue 2746783002: [ServiceWorker] Mojofy InstallEvent of Service Worker (Closed)
Patch Set: Just delete a useless line 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 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 std::vector<blink::WebString> cors_exposed_header_names; 237 std::vector<blink::WebString> cors_exposed_header_names;
238 for (const auto& name : response.cors_exposed_header_names) 238 for (const auto& name : response.cors_exposed_header_names)
239 cors_exposed_header_names.push_back(blink::WebString::FromUTF8(name)); 239 cors_exposed_header_names.push_back(blink::WebString::FromUTF8(name));
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, class... TArgs>
248 void AbortPendingEventCallbacks(T& callbacks) { 248 void AbortPendingEventCallbacks(T& callbacks, TArgs... args) {
249 for (typename T::iterator it(&callbacks); !it.IsAtEnd(); it.Advance()) { 249 for (typename T::iterator it(&callbacks); !it.IsAtEnd(); it.Advance()) {
250 std::move(*it.GetCurrentValue()) 250 std::move(*it.GetCurrentValue())
251 .Run(SERVICE_WORKER_ERROR_ABORT, base::Time::Now()); 251 .Run(SERVICE_WORKER_ERROR_ABORT, args..., base::Time::Now());
252 } 252 }
253 } 253 }
254 254
255 template <typename Key, typename Callback> 255 template <typename Key, typename Callback>
256 void AbortPendingEventCallbacks(std::map<Key, Callback>& callbacks) { 256 void AbortPendingEventCallbacks(std::map<Key, Callback>& callbacks) {
257 for (auto& item : callbacks) 257 for (auto& item : callbacks)
258 std::move(item.second).Run(SERVICE_WORKER_ERROR_ABORT, base::Time::Now()); 258 std::move(item.second).Run(SERVICE_WORKER_ERROR_ABORT, base::Time::Now());
259 } 259 }
260 260
261 } // namespace 261 } // namespace
262 262
263 // 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
264 // worker thread. 264 // worker thread.
265 struct ServiceWorkerContextClient::WorkerContextData { 265 struct ServiceWorkerContextClient::WorkerContextData {
266 using SimpleEventCallback = 266 using SimpleEventCallback =
267 base::OnceCallback<void(ServiceWorkerStatusCode, base::Time)>; 267 base::OnceCallback<void(ServiceWorkerStatusCode, base::Time)>;
268 using ClientsCallbacksMap = 268 using ClientsCallbacksMap =
269 IDMap<std::unique_ptr<blink::WebServiceWorkerClientsCallbacks>>; 269 IDMap<std::unique_ptr<blink::WebServiceWorkerClientsCallbacks>>;
270 using ClaimClientsCallbacksMap = 270 using ClaimClientsCallbacksMap =
271 IDMap<std::unique_ptr<blink::WebServiceWorkerClientsClaimCallbacks>>; 271 IDMap<std::unique_ptr<blink::WebServiceWorkerClientsClaimCallbacks>>;
272 using ClientCallbacksMap = 272 using ClientCallbacksMap =
273 IDMap<std::unique_ptr<blink::WebServiceWorkerClientCallbacks>>; 273 IDMap<std::unique_ptr<blink::WebServiceWorkerClientCallbacks>>;
274 using SkipWaitingCallbacksMap = 274 using SkipWaitingCallbacksMap =
275 IDMap<std::unique_ptr<blink::WebServiceWorkerSkipWaitingCallbacks>>; 275 IDMap<std::unique_ptr<blink::WebServiceWorkerSkipWaitingCallbacks>>;
276 using InstallEventCallbacksMap =
277 IDMap<std::unique_ptr<DispatchInstallEventCallback>>;
276 using ActivateEventCallbacksMap = 278 using ActivateEventCallbacksMap =
277 IDMap<std::unique_ptr<DispatchActivateEventCallback>>; 279 IDMap<std::unique_ptr<DispatchActivateEventCallback>>;
278 using BackgroundFetchAbortEventCallbacksMap = 280 using BackgroundFetchAbortEventCallbacksMap =
279 IDMap<std::unique_ptr<DispatchBackgroundFetchAbortEventCallback>>; 281 IDMap<std::unique_ptr<DispatchBackgroundFetchAbortEventCallback>>;
280 using BackgroundFetchClickEventCallbacksMap = 282 using BackgroundFetchClickEventCallbacksMap =
281 IDMap<std::unique_ptr<DispatchBackgroundFetchClickEventCallback>>; 283 IDMap<std::unique_ptr<DispatchBackgroundFetchClickEventCallback>>;
282 using BackgroundFetchFailEventCallbacksMap = 284 using BackgroundFetchFailEventCallbacksMap =
283 IDMap<std::unique_ptr<DispatchBackgroundFetchFailEventCallback>>; 285 IDMap<std::unique_ptr<DispatchBackgroundFetchFailEventCallback>>;
284 using BackgroundFetchedEventCallbacksMap = 286 using BackgroundFetchedEventCallbacksMap =
285 IDMap<std::unique_ptr<DispatchBackgroundFetchedEventCallback>>; 287 IDMap<std::unique_ptr<DispatchBackgroundFetchedEventCallback>>;
286 using SyncEventCallbacksMap = IDMap<std::unique_ptr<SyncCallback>>; 288 using SyncEventCallbacksMap = IDMap<std::unique_ptr<SyncCallback>>;
287 using NotificationClickEventCallbacksMap = 289 using NotificationClickEventCallbacksMap =
288 IDMap<std::unique_ptr<DispatchNotificationClickEventCallback>>; 290 IDMap<std::unique_ptr<DispatchNotificationClickEventCallback>>;
289 using NotificationCloseEventCallbacksMap = 291 using NotificationCloseEventCallbacksMap =
290 IDMap<std::unique_ptr<DispatchNotificationCloseEventCallback>>; 292 IDMap<std::unique_ptr<DispatchNotificationCloseEventCallback>>;
291 using PushEventCallbacksMap = 293 using PushEventCallbacksMap =
292 IDMap<std::unique_ptr<DispatchPushEventCallback>>; 294 IDMap<std::unique_ptr<DispatchPushEventCallback>>;
293 using ExtendableMessageEventCallbacksMap = 295 using ExtendableMessageEventCallbacksMap =
294 IDMap<std::unique_ptr<DispatchExtendableMessageEventCallback>>; 296 IDMap<std::unique_ptr<DispatchExtendableMessageEventCallback>>;
295 using NavigationPreloadRequestsMap = IDMap< 297 using NavigationPreloadRequestsMap = IDMap<
296 std::unique_ptr<ServiceWorkerContextClient::NavigationPreloadRequest>>; 298 std::unique_ptr<ServiceWorkerContextClient::NavigationPreloadRequest>>;
299 using InstallEventMethodsMap =
300 std::map<int, mojom::ServiceWorkerInstallEventMethodsAssociatedPtr>;
297 301
298 explicit WorkerContextData(ServiceWorkerContextClient* owner) 302 explicit WorkerContextData(ServiceWorkerContextClient* owner)
299 : event_dispatcher_binding(owner), 303 : event_dispatcher_binding(owner),
300 weak_factory(owner), 304 weak_factory(owner),
301 proxy_weak_factory(owner->proxy_) {} 305 proxy_weak_factory(owner->proxy_) {}
302 306
303 ~WorkerContextData() { 307 ~WorkerContextData() {
304 DCHECK(thread_checker.CalledOnValidThread()); 308 DCHECK(thread_checker.CalledOnValidThread());
305 } 309 }
306 310
307 mojo::Binding<mojom::ServiceWorkerEventDispatcher> event_dispatcher_binding; 311 mojo::Binding<mojom::ServiceWorkerEventDispatcher> event_dispatcher_binding;
308 312
309 // Pending callbacks for GetClientDocuments(). 313 // Pending callbacks for GetClientDocuments().
310 ClientsCallbacksMap clients_callbacks; 314 ClientsCallbacksMap clients_callbacks;
311 315
312 // Pending callbacks for OpenWindow() and FocusClient(). 316 // Pending callbacks for OpenWindow() and FocusClient().
313 ClientCallbacksMap client_callbacks; 317 ClientCallbacksMap client_callbacks;
314 318
315 // Pending callbacks for SkipWaiting(). 319 // Pending callbacks for SkipWaiting().
316 SkipWaitingCallbacksMap skip_waiting_callbacks; 320 SkipWaitingCallbacksMap skip_waiting_callbacks;
317 321
318 // Pending callbacks for ClaimClients(). 322 // Pending callbacks for ClaimClients().
319 ClaimClientsCallbacksMap claim_clients_callbacks; 323 ClaimClientsCallbacksMap claim_clients_callbacks;
320 324
325 // Pending callbacks for Install Events.
326 InstallEventCallbacksMap install_event_callbacks;
327
321 // Pending callbacks for Activate Events. 328 // Pending callbacks for Activate Events.
322 ActivateEventCallbacksMap activate_event_callbacks; 329 ActivateEventCallbacksMap activate_event_callbacks;
323 330
324 // Pending callbacks for Background Fetch Abort Events. 331 // Pending callbacks for Background Fetch Abort Events.
325 BackgroundFetchAbortEventCallbacksMap background_fetch_abort_event_callbacks; 332 BackgroundFetchAbortEventCallbacksMap background_fetch_abort_event_callbacks;
326 333
327 // Pending callbacks for Background Fetch Click Events. 334 // Pending callbacks for Background Fetch Click Events.
328 BackgroundFetchClickEventCallbacksMap background_fetch_click_event_callbacks; 335 BackgroundFetchClickEventCallbacksMap background_fetch_click_event_callbacks;
329 336
330 // Pending callbacks for Background Fetch Fail Events. 337 // Pending callbacks for Background Fetch Fail Events.
(...skipping 30 matching lines...) Expand all
361 std::map<int /* fetch_event_id */, 368 std::map<int /* fetch_event_id */,
362 mojom::ServiceWorkerFetchResponseCallbackPtr> 369 mojom::ServiceWorkerFetchResponseCallbackPtr>
363 fetch_response_callbacks; 370 fetch_response_callbacks;
364 371
365 // Pending callbacks for Extendable Message Events. 372 // Pending callbacks for Extendable Message Events.
366 ExtendableMessageEventCallbacksMap message_event_callbacks; 373 ExtendableMessageEventCallbacksMap message_event_callbacks;
367 374
368 // Pending navigation preload requests. 375 // Pending navigation preload requests.
369 NavigationPreloadRequestsMap preload_requests; 376 NavigationPreloadRequestsMap preload_requests;
370 377
378 // Maps every install event id with its corresponding
379 // mojom::ServiceWorkerInstallEventMethodsAssociatedPt.
380 InstallEventMethodsMap install_methods_map;
381
371 base::ThreadChecker thread_checker; 382 base::ThreadChecker thread_checker;
372 base::WeakPtrFactory<ServiceWorkerContextClient> weak_factory; 383 base::WeakPtrFactory<ServiceWorkerContextClient> weak_factory;
373 base::WeakPtrFactory<blink::WebServiceWorkerContextProxy> proxy_weak_factory; 384 base::WeakPtrFactory<blink::WebServiceWorkerContextProxy> proxy_weak_factory;
374 }; 385 };
375 386
376 class ServiceWorkerContextClient::NavigationPreloadRequest final 387 class ServiceWorkerContextClient::NavigationPreloadRequest final
377 : public mojom::URLLoaderClient { 388 : public mojom::URLLoaderClient {
378 public: 389 public:
379 NavigationPreloadRequest(int fetch_event_id, 390 NavigationPreloadRequest(int fetch_event_id,
380 const GURL& url, 391 const GURL& url,
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 567
557 ServiceWorkerContextClient::~ServiceWorkerContextClient() {} 568 ServiceWorkerContextClient::~ServiceWorkerContextClient() {}
558 569
559 void ServiceWorkerContextClient::OnMessageReceived( 570 void ServiceWorkerContextClient::OnMessageReceived(
560 int thread_id, 571 int thread_id,
561 int embedded_worker_id, 572 int embedded_worker_id,
562 const IPC::Message& message) { 573 const IPC::Message& message) {
563 CHECK_EQ(embedded_worker_id_, embedded_worker_id); 574 CHECK_EQ(embedded_worker_id_, embedded_worker_id);
564 bool handled = true; 575 bool handled = true;
565 IPC_BEGIN_MESSAGE_MAP(ServiceWorkerContextClient, message) 576 IPC_BEGIN_MESSAGE_MAP(ServiceWorkerContextClient, message)
566 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEvent)
567 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetClient, OnDidGetClient) 577 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetClient, OnDidGetClient)
568 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetClients, OnDidGetClients) 578 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetClients, OnDidGetClients)
569 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_OpenWindowResponse, 579 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_OpenWindowResponse,
570 OnOpenWindowResponse) 580 OnOpenWindowResponse)
571 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_OpenWindowError, 581 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_OpenWindowError,
572 OnOpenWindowError) 582 OnOpenWindowError)
573 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_FocusClientResponse, 583 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_FocusClientResponse,
574 OnFocusClientResponse) 584 OnFocusClientResponse)
575 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_NavigateClientResponse, 585 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_NavigateClientResponse,
576 OnNavigateClientResponse) 586 OnNavigateClientResponse)
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 } 729 }
720 730
721 void ServiceWorkerContextClient::WillDestroyWorkerContext( 731 void ServiceWorkerContextClient::WillDestroyWorkerContext(
722 v8::Local<v8::Context> context) { 732 v8::Local<v8::Context> context) {
723 // At this point WillStopCurrentWorkerThread is already called, so 733 // At this point WillStopCurrentWorkerThread is already called, so
724 // worker_task_runner_->RunsTasksOnCurrentThread() returns false 734 // worker_task_runner_->RunsTasksOnCurrentThread() returns false
725 // (while we're still on the worker thread). 735 // (while we're still on the worker thread).
726 proxy_ = NULL; 736 proxy_ = NULL;
727 737
728 // Aborts all the pending events callbacks. 738 // Aborts all the pending events callbacks.
739 AbortPendingEventCallbacks(context_->install_event_callbacks,
740 false /* has_fetch_handler */);
729 AbortPendingEventCallbacks(context_->activate_event_callbacks); 741 AbortPendingEventCallbacks(context_->activate_event_callbacks);
730 AbortPendingEventCallbacks(context_->background_fetch_abort_event_callbacks); 742 AbortPendingEventCallbacks(context_->background_fetch_abort_event_callbacks);
731 AbortPendingEventCallbacks(context_->background_fetch_click_event_callbacks); 743 AbortPendingEventCallbacks(context_->background_fetch_click_event_callbacks);
732 AbortPendingEventCallbacks(context_->background_fetch_fail_event_callbacks); 744 AbortPendingEventCallbacks(context_->background_fetch_fail_event_callbacks);
733 AbortPendingEventCallbacks(context_->background_fetched_event_callbacks); 745 AbortPendingEventCallbacks(context_->background_fetched_event_callbacks);
734 AbortPendingEventCallbacks(context_->sync_event_callbacks); 746 AbortPendingEventCallbacks(context_->sync_event_callbacks);
735 AbortPendingEventCallbacks(context_->notification_click_event_callbacks); 747 AbortPendingEventCallbacks(context_->notification_click_event_callbacks);
736 AbortPendingEventCallbacks(context_->notification_close_event_callbacks); 748 AbortPendingEventCallbacks(context_->notification_close_event_callbacks);
737 AbortPendingEventCallbacks(context_->push_event_callbacks); 749 AbortPendingEventCallbacks(context_->push_event_callbacks);
738 AbortPendingEventCallbacks(context_->fetch_event_callbacks); 750 AbortPendingEventCallbacks(context_->fetch_event_callbacks);
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
891 DispatchExtendableMessageEventCallback* callback = 903 DispatchExtendableMessageEventCallback* callback =
892 context_->message_event_callbacks.Lookup(request_id); 904 context_->message_event_callbacks.Lookup(request_id);
893 DCHECK(callback); 905 DCHECK(callback);
894 DCHECK(*callback); 906 DCHECK(*callback);
895 std::move(*callback).Run(EventResultToStatus(result), 907 std::move(*callback).Run(EventResultToStatus(result),
896 base::Time::FromDoubleT(event_dispatch_time)); 908 base::Time::FromDoubleT(event_dispatch_time));
897 context_->message_event_callbacks.Remove(request_id); 909 context_->message_event_callbacks.Remove(request_id);
898 } 910 }
899 911
900 void ServiceWorkerContextClient::DidHandleInstallEvent( 912 void ServiceWorkerContextClient::DidHandleInstallEvent(
901 int request_id, 913 int event_id,
902 blink::WebServiceWorkerEventResult result, 914 blink::WebServiceWorkerEventResult result,
903 double event_dispatch_time) { 915 double event_dispatch_time) {
904 Send(new ServiceWorkerHostMsg_InstallEventFinished( 916 DispatchInstallEventCallback* callback =
905 GetRoutingID(), request_id, result, proxy_->HasFetchEventHandler(), 917 context_->install_event_callbacks.Lookup(event_id);
906 base::Time::FromDoubleT(event_dispatch_time))); 918 DCHECK(callback);
919 DCHECK(*callback);
920 std::move(*callback).Run(EventResultToStatus(result),
921 proxy_->HasFetchEventHandler(),
922 base::Time::FromDoubleT(event_dispatch_time));
923 context_->install_event_callbacks.Remove(event_id);
924 context_->install_methods_map.erase(event_id);
907 } 925 }
908 926
909 void ServiceWorkerContextClient::RespondToFetchEventWithNoResponse( 927 void ServiceWorkerContextClient::RespondToFetchEventWithNoResponse(
910 int fetch_event_id, 928 int fetch_event_id,
911 double event_dispatch_time) { 929 double event_dispatch_time) {
912 const mojom::ServiceWorkerFetchResponseCallbackPtr& response_callback = 930 const mojom::ServiceWorkerFetchResponseCallbackPtr& response_callback =
913 context_->fetch_response_callbacks[fetch_event_id]; 931 context_->fetch_response_callbacks[fetch_event_id];
914 DCHECK(response_callback.is_bound()); 932 DCHECK(response_callback.is_bound());
915 response_callback->OnFallback(base::Time::FromDoubleT(event_dispatch_time)); 933 response_callback->OnFallback(base::Time::FromDoubleT(event_dispatch_time));
916 context_->fetch_response_callbacks.erase(fetch_event_id); 934 context_->fetch_response_callbacks.erase(fetch_event_id);
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
1119 } 1137 }
1120 1138
1121 void ServiceWorkerContextClient::Claim( 1139 void ServiceWorkerContextClient::Claim(
1122 std::unique_ptr<blink::WebServiceWorkerClientsClaimCallbacks> callbacks) { 1140 std::unique_ptr<blink::WebServiceWorkerClientsClaimCallbacks> callbacks) {
1123 DCHECK(callbacks); 1141 DCHECK(callbacks);
1124 int request_id = context_->claim_clients_callbacks.Add(std::move(callbacks)); 1142 int request_id = context_->claim_clients_callbacks.Add(std::move(callbacks));
1125 Send(new ServiceWorkerHostMsg_ClaimClients(GetRoutingID(), request_id)); 1143 Send(new ServiceWorkerHostMsg_ClaimClients(GetRoutingID(), request_id));
1126 } 1144 }
1127 1145
1128 void ServiceWorkerContextClient::RegisterForeignFetchScopes( 1146 void ServiceWorkerContextClient::RegisterForeignFetchScopes(
1147 int install_event_id,
1129 const blink::WebVector<blink::WebURL>& sub_scopes, 1148 const blink::WebVector<blink::WebURL>& sub_scopes,
1130 const blink::WebVector<blink::WebSecurityOrigin>& origins) { 1149 const blink::WebVector<blink::WebSecurityOrigin>& origins) {
1131 Send(new ServiceWorkerHostMsg_RegisterForeignFetchScopes( 1150 DCHECK(context_->install_methods_map[install_event_id].is_bound());
1132 GetRoutingID(), std::vector<GURL>(sub_scopes.begin(), sub_scopes.end()), 1151 context_->install_methods_map[install_event_id]->RegisterForeignFetchScopes(
1133 std::vector<url::Origin>(origins.begin(), origins.end()))); 1152 std::vector<GURL>(sub_scopes.begin(), sub_scopes.end()),
1153 std::vector<url::Origin>(origins.begin(), origins.end()));
1134 } 1154 }
1135 1155
1136 void ServiceWorkerContextClient::DispatchSyncEvent( 1156 void ServiceWorkerContextClient::DispatchSyncEvent(
1137 const std::string& tag, 1157 const std::string& tag,
1138 blink::mojom::BackgroundSyncEventLastChance last_chance, 1158 blink::mojom::BackgroundSyncEventLastChance last_chance,
1139 DispatchSyncEventCallback callback) { 1159 DispatchSyncEventCallback callback) {
1140 TRACE_EVENT0("ServiceWorker", 1160 TRACE_EVENT0("ServiceWorker",
1141 "ServiceWorkerContextClient::DispatchSyncEvent"); 1161 "ServiceWorkerContextClient::DispatchSyncEvent");
1142 int request_id = context_->sync_event_callbacks.Add( 1162 int request_id = context_->sync_event_callbacks.Add(
1143 base::MakeUnique<SyncCallback>(std::move(callback))); 1163 base::MakeUnique<SyncCallback>(std::move(callback)));
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
1275 fetches.size()); 1295 fetches.size());
1276 for (size_t i = 0; i < fetches.size(); ++i) { 1296 for (size_t i = 0; i < fetches.size(); ++i) {
1277 ToWebServiceWorkerRequest(fetches[i].request, &web_fetches[i].request); 1297 ToWebServiceWorkerRequest(fetches[i].request, &web_fetches[i].request);
1278 ToWebServiceWorkerResponse(fetches[i].response, &web_fetches[i].response); 1298 ToWebServiceWorkerResponse(fetches[i].response, &web_fetches[i].response);
1279 } 1299 }
1280 1300
1281 proxy_->DispatchBackgroundFetchedEvent( 1301 proxy_->DispatchBackgroundFetchedEvent(
1282 request_id, blink::WebString::FromUTF8(tag), web_fetches); 1302 request_id, blink::WebString::FromUTF8(tag), web_fetches);
1283 } 1303 }
1284 1304
1305 void ServiceWorkerContextClient::DispatchInstallEvent(
1306 mojom::ServiceWorkerInstallEventMethodsAssociatedPtrInfo client,
1307 DispatchInstallEventCallback callback) {
1308 TRACE_EVENT0("ServiceWorker",
1309 "ServiceWorkerContextClient::DispatchInstallEvent");
1310
1311 int event_id = context_->install_event_callbacks.Add(
1312 base::MakeUnique<DispatchInstallEventCallback>(std::move(callback)));
1313
1314 DCHECK(!context_->install_methods_map.count(event_id));
1315 mojom::ServiceWorkerInstallEventMethodsAssociatedPtr install_methods;
1316 install_methods.Bind(std::move(client));
1317 context_->install_methods_map[event_id] = std::move(install_methods);
1318
1319 proxy_->DispatchInstallEvent(event_id);
1320 }
1321
1285 void ServiceWorkerContextClient::DispatchExtendableMessageEvent( 1322 void ServiceWorkerContextClient::DispatchExtendableMessageEvent(
1286 mojom::ExtendableMessageEventPtr event, 1323 mojom::ExtendableMessageEventPtr event,
1287 DispatchExtendableMessageEventCallback callback) { 1324 DispatchExtendableMessageEventCallback callback) {
1288 TRACE_EVENT0("ServiceWorker", 1325 TRACE_EVENT0("ServiceWorker",
1289 "ServiceWorkerContextClient::DispatchExtendableMessageEvent"); 1326 "ServiceWorkerContextClient::DispatchExtendableMessageEvent");
1290 int request_id = context_->message_event_callbacks.Add( 1327 int request_id = context_->message_event_callbacks.Add(
1291 base::MakeUnique<DispatchExtendableMessageEventCallback>( 1328 base::MakeUnique<DispatchExtendableMessageEventCallback>(
1292 std::move(callback))); 1329 std::move(callback)));
1293 1330
1294 blink::WebMessagePortChannelArray ports = 1331 blink::WebMessagePortChannelArray ports =
(...skipping 16 matching lines...) Expand all
1311 ServiceWorkerDispatcher::GetOrCreateThreadSpecificInstance( 1348 ServiceWorkerDispatcher::GetOrCreateThreadSpecificInstance(
1312 sender_.get(), main_thread_task_runner_.get()); 1349 sender_.get(), main_thread_task_runner_.get());
1313 scoped_refptr<WebServiceWorkerImpl> worker = 1350 scoped_refptr<WebServiceWorkerImpl> worker =
1314 dispatcher->GetOrCreateServiceWorker(std::move(handle)); 1351 dispatcher->GetOrCreateServiceWorker(std::move(handle));
1315 proxy_->DispatchExtendableMessageEvent( 1352 proxy_->DispatchExtendableMessageEvent(
1316 request_id, blink::WebString::FromUTF16(event->message), 1353 request_id, blink::WebString::FromUTF16(event->message),
1317 event->source_origin, std::move(ports), 1354 event->source_origin, std::move(ports),
1318 WebServiceWorkerImpl::CreateHandle(worker)); 1355 WebServiceWorkerImpl::CreateHandle(worker));
1319 } 1356 }
1320 1357
1321 void ServiceWorkerContextClient::OnInstallEvent(int request_id) {
1322 TRACE_EVENT0("ServiceWorker",
1323 "ServiceWorkerContextClient::OnInstallEvent");
1324 proxy_->DispatchInstallEvent(request_id);
1325 }
1326
1327 void ServiceWorkerContextClient::DispatchFetchEvent( 1358 void ServiceWorkerContextClient::DispatchFetchEvent(
1328 int fetch_event_id, 1359 int fetch_event_id,
1329 const ServiceWorkerFetchRequest& request, 1360 const ServiceWorkerFetchRequest& request,
1330 mojom::FetchEventPreloadHandlePtr preload_handle, 1361 mojom::FetchEventPreloadHandlePtr preload_handle,
1331 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback, 1362 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback,
1332 DispatchFetchEventCallback callback) { 1363 DispatchFetchEventCallback callback) {
1333 std::unique_ptr<NavigationPreloadRequest> preload_request = 1364 std::unique_ptr<NavigationPreloadRequest> preload_request =
1334 preload_handle 1365 preload_handle
1335 ? base::MakeUnique<NavigationPreloadRequest>( 1366 ? base::MakeUnique<NavigationPreloadRequest>(
1336 fetch_event_id, request.url, std::move(preload_handle)) 1367 fetch_event_id, request.url, std::move(preload_handle))
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
1620 } 1651 }
1621 1652
1622 base::WeakPtr<ServiceWorkerContextClient> 1653 base::WeakPtr<ServiceWorkerContextClient>
1623 ServiceWorkerContextClient::GetWeakPtr() { 1654 ServiceWorkerContextClient::GetWeakPtr() {
1624 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); 1655 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread());
1625 DCHECK(context_); 1656 DCHECK(context_);
1626 return context_->weak_factory.GetWeakPtr(); 1657 return context_->weak_factory.GetWeakPtr();
1627 } 1658 }
1628 1659
1629 } // namespace content 1660 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698