OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/service_worker/service_worker_context_client.h" | 5 #include "content/renderer/service_worker/service_worker_context_client.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
11 #include "base/logging.h" | 11 #include "base/logging.h" |
12 #include "base/metrics/histogram_macros.h" | 12 #include "base/metrics/histogram_macros.h" |
13 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
14 #include "base/threading/thread_checker.h" | 14 #include "base/threading/thread_checker.h" |
15 #include "base/threading/thread_local.h" | 15 #include "base/threading/thread_local.h" |
16 #include "base/threading/thread_task_runner_handle.h" | 16 #include "base/threading/thread_task_runner_handle.h" |
17 #include "base/time/time.h" | 17 #include "base/time/time.h" |
18 #include "base/trace_event/trace_event.h" | 18 #include "base/trace_event/trace_event.h" |
19 #include "content/child/notifications/notification_data_conversions.h" | 19 #include "content/child/notifications/notification_data_conversions.h" |
20 #include "content/child/request_extra_data.h" | 20 #include "content/child/request_extra_data.h" |
21 #include "content/child/service_worker/service_worker_dispatcher.h" | 21 #include "content/child/service_worker/service_worker_dispatcher.h" |
22 #include "content/child/service_worker/service_worker_handle_reference.h" | 22 #include "content/child/service_worker/service_worker_handle_reference.h" |
23 #include "content/child/service_worker/service_worker_network_provider.h" | 23 #include "content/child/service_worker/service_worker_network_provider.h" |
24 #include "content/child/service_worker/service_worker_provider_context.h" | 24 #include "content/child/service_worker/service_worker_provider_context.h" |
25 #include "content/child/service_worker/service_worker_registration_handle_refere nce.h" | 25 #include "content/child/service_worker/service_worker_registration_handle_refere nce.h" |
26 #include "content/child/service_worker/web_service_worker_impl.h" | 26 #include "content/child/service_worker/web_service_worker_impl.h" |
27 #include "content/child/service_worker/web_service_worker_provider_impl.h" | 27 #include "content/child/service_worker/web_service_worker_provider_impl.h" |
28 #include "content/child/service_worker/web_service_worker_registration_impl.h" | 28 #include "content/child/service_worker/web_service_worker_registration_impl.h" |
29 #include "content/child/thread_safe_sender.h" | 29 #include "content/child/thread_safe_sender.h" |
30 #include "content/child/web_data_consumer_handle_impl.h" | |
30 #include "content/child/webmessageportchannel_impl.h" | 31 #include "content/child/webmessageportchannel_impl.h" |
31 #include "content/common/devtools_messages.h" | 32 #include "content/common/devtools_messages.h" |
32 #include "content/common/message_port_messages.h" | 33 #include "content/common/message_port_messages.h" |
33 #include "content/common/service_worker/embedded_worker_messages.h" | 34 #include "content/common/service_worker/embedded_worker_messages.h" |
34 #include "content/common/service_worker/fetch_event_dispatcher.mojom.h" | 35 #include "content/common/service_worker/fetch_event_dispatcher.mojom.h" |
35 #include "content/common/service_worker/service_worker_messages.h" | 36 #include "content/common/service_worker/service_worker_messages.h" |
36 #include "content/common/service_worker/service_worker_status_code.h" | 37 #include "content/common/service_worker/service_worker_status_code.h" |
37 #include "content/common/service_worker/service_worker_utils.h" | 38 #include "content/common/service_worker/service_worker_utils.h" |
38 #include "content/public/common/push_event_payload.h" | 39 #include "content/public/common/push_event_payload.h" |
39 #include "content/public/common/referrer.h" | 40 #include "content/public/common/referrer.h" |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
182 using SkipWaitingCallbacksMap = | 183 using SkipWaitingCallbacksMap = |
183 IDMap<blink::WebServiceWorkerSkipWaitingCallbacks, IDMapOwnPointer>; | 184 IDMap<blink::WebServiceWorkerSkipWaitingCallbacks, IDMapOwnPointer>; |
184 using SyncEventCallbacksMap = | 185 using SyncEventCallbacksMap = |
185 IDMap<const base::Callback<void(blink::mojom::ServiceWorkerEventStatus, | 186 IDMap<const base::Callback<void(blink::mojom::ServiceWorkerEventStatus, |
186 base::Time /* dispatch_event_time */)>, | 187 base::Time /* dispatch_event_time */)>, |
187 IDMapOwnPointer>; | 188 IDMapOwnPointer>; |
188 using FetchEventCallbacksMap = | 189 using FetchEventCallbacksMap = |
189 IDMap<const base::Callback<void(ServiceWorkerStatusCode, | 190 IDMap<const base::Callback<void(ServiceWorkerStatusCode, |
190 base::Time /* dispatch_event_time */)>, | 191 base::Time /* dispatch_event_time */)>, |
191 IDMapOwnPointer>; | 192 IDMapOwnPointer>; |
193 using PreloadRequestsMap = | |
194 IDMap<ServiceWorkerContextClient::PreloadRequest, IDMapOwnPointer>; | |
192 | 195 |
193 explicit WorkerContextData(ServiceWorkerContextClient* owner) | 196 explicit WorkerContextData(ServiceWorkerContextClient* owner) |
194 : weak_factory(owner), proxy_weak_factory(owner->proxy_) {} | 197 : weak_factory(owner), proxy_weak_factory(owner->proxy_) {} |
195 | 198 |
196 ~WorkerContextData() { | 199 ~WorkerContextData() { |
197 DCHECK(thread_checker.CalledOnValidThread()); | 200 DCHECK(thread_checker.CalledOnValidThread()); |
198 } | 201 } |
199 | 202 |
200 // Pending callbacks for GetClientDocuments(). | 203 // Pending callbacks for GetClientDocuments(). |
201 ClientsCallbacksMap clients_callbacks; | 204 ClientsCallbacksMap clients_callbacks; |
202 | 205 |
203 // Pending callbacks for OpenWindow() and FocusClient(). | 206 // Pending callbacks for OpenWindow() and FocusClient(). |
204 ClientCallbacksMap client_callbacks; | 207 ClientCallbacksMap client_callbacks; |
205 | 208 |
206 // Pending callbacks for SkipWaiting(). | 209 // Pending callbacks for SkipWaiting(). |
207 SkipWaitingCallbacksMap skip_waiting_callbacks; | 210 SkipWaitingCallbacksMap skip_waiting_callbacks; |
208 | 211 |
209 // Pending callbacks for ClaimClients(). | 212 // Pending callbacks for ClaimClients(). |
210 ClaimClientsCallbacksMap claim_clients_callbacks; | 213 ClaimClientsCallbacksMap claim_clients_callbacks; |
211 | 214 |
212 // Pending callbacks for Background Sync Events. | 215 // Pending callbacks for Background Sync Events. |
213 SyncEventCallbacksMap sync_event_callbacks; | 216 SyncEventCallbacksMap sync_event_callbacks; |
214 | 217 |
215 // Pending callbacks for Fetch Events. | 218 // Pending callbacks for Fetch Events. |
216 FetchEventCallbacksMap fetch_event_callbacks; | 219 FetchEventCallbacksMap fetch_event_callbacks; |
217 | 220 |
221 // Pending navigation preload requests. | |
222 PreloadRequestsMap preload_requests; | |
223 | |
218 service_manager::InterfaceRegistry interface_registry; | 224 service_manager::InterfaceRegistry interface_registry; |
219 // This is not used when mojo for the service workers is enabled. At that | 225 // This is not used when mojo for the service workers is enabled. At that |
220 // time, remote interfaces are stored in EmbeddedWorkerInstanceClientImpl. | 226 // time, remote interfaces are stored in EmbeddedWorkerInstanceClientImpl. |
221 service_manager::InterfaceProvider remote_interfaces; | 227 service_manager::InterfaceProvider remote_interfaces; |
222 | 228 |
223 base::ThreadChecker thread_checker; | 229 base::ThreadChecker thread_checker; |
224 base::WeakPtrFactory<ServiceWorkerContextClient> weak_factory; | 230 base::WeakPtrFactory<ServiceWorkerContextClient> weak_factory; |
225 base::WeakPtrFactory<blink::WebServiceWorkerContextProxy> proxy_weak_factory; | 231 base::WeakPtrFactory<blink::WebServiceWorkerContextProxy> proxy_weak_factory; |
226 }; | 232 }; |
227 | 233 |
234 class ServiceWorkerContextClient::PreloadRequest final | |
falken
2016/10/19 06:00:13
nit: I slightly prefer writing out NavigationPrelo
horo
2016/10/19 07:11:45
Done.
| |
235 : public mojom::URLLoaderClient { | |
236 public: | |
237 PreloadRequest(const GURL& url, | |
238 mojom::FetchEventPreloadHandlePtr preload_handle) | |
239 : url_loader_(std::move(preload_handle->url_loader)), | |
240 binding_(this, std::move(preload_handle->url_loader_client_request)), | |
241 response_(base::MakeUnique<blink::WebServiceWorkerResponse>()) { | |
242 response_->setURL(url); | |
243 } | |
244 | |
245 ~PreloadRequest() override { | |
246 if (callback_) { | |
247 callback_->onError(blink::WebServiceWorkerError( | |
248 blink::WebServiceWorkerError::ErrorTypeAbort, | |
249 blink::WebString::fromUTF8( | |
250 "Service Worker navigation preload aborted. Need to guard with " | |
251 "respondWith or waitUntil."))); | |
252 } | |
253 } | |
254 | |
255 void RegisterCallback( | |
256 blink::WebServiceWorkerPreloadResponseCallbacks* callback) { | |
257 callback_.reset(callback); | |
258 } | |
259 | |
260 void OnReceiveResponse(const ResourceResponseHead& response_head) override { | |
261 DCHECK(response_); | |
262 DCHECK(response_head.headers); | |
263 response_->setStatus(response_head.headers->response_code()); | |
264 response_->setStatusText( | |
265 blink::WebString::fromUTF8(response_head.headers->GetStatusText())); | |
266 response_->setResponseType(blink::WebServiceWorkerResponseTypeBasic); | |
267 size_t iter = 0; | |
268 std::string header_name; | |
269 std::string header_value; | |
270 while (response_head.headers->EnumerateHeaderLines(&iter, &header_name, | |
271 &header_value)) { | |
272 response_->appendHeader(blink::WebString::fromUTF8(header_name), | |
273 blink::WebString::fromUTF8(header_value)); | |
274 } | |
275 response_->setResponseTime(response_head.response_time.ToInternalValue()); | |
276 } | |
277 | |
278 void OnStartLoadingResponseBody( | |
279 mojo::ScopedDataPipeConsumerHandle body) override { | |
280 std::unique_ptr<blink::WebServiceWorkerPreloadResponseCallbacks> callback( | |
281 std::move(callback_)); | |
282 DCHECK(callback); | |
283 blink::WebServiceWorkerPreloadResponseCallbacksResult result; | |
284 result.handle = | |
285 base::MakeUnique<WebDataConsumerHandleImpl>(std::move(body)); | |
286 result.response = std::move(response_); | |
287 callback->onSuccess(&result); | |
288 } | |
289 | |
290 void OnComplete(const ResourceRequestCompletionStatus& status) override { | |
291 if (!callback_) | |
292 return; | |
293 DCHECK_NE(0, status.error_code); | |
294 std::unique_ptr<blink::WebServiceWorkerPreloadResponseCallbacks> callback( | |
295 std::move(callback_)); | |
296 callback->onError(blink::WebServiceWorkerError( | |
297 blink::WebServiceWorkerError::ErrorTypeNetwork, | |
298 blink::WebString::fromUTF8( | |
299 "Service Worker navigation preload network error."))); | |
300 } | |
301 | |
302 private: | |
303 mojom::URLLoaderPtr url_loader_; | |
304 mojo::Binding<mojom::URLLoaderClient> binding_; | |
305 std::unique_ptr<blink::WebServiceWorkerResponse> response_; | |
306 std::unique_ptr<blink::WebServiceWorkerPreloadResponseCallbacks> callback_; | |
307 }; | |
308 | |
228 class ServiceWorkerContextClient::FetchEventDispatcherImpl | 309 class ServiceWorkerContextClient::FetchEventDispatcherImpl |
229 : public NON_EXPORTED_BASE(mojom::FetchEventDispatcher) { | 310 : public NON_EXPORTED_BASE(mojom::FetchEventDispatcher) { |
230 public: | 311 public: |
231 static void Create(mojom::FetchEventDispatcherRequest request) { | 312 static void Create(mojom::FetchEventDispatcherRequest request) { |
232 mojo::MakeStrongBinding(base::MakeUnique<FetchEventDispatcherImpl>(), | 313 mojo::MakeStrongBinding(base::MakeUnique<FetchEventDispatcherImpl>(), |
233 std::move(request)); | 314 std::move(request)); |
234 } | 315 } |
235 | 316 |
236 FetchEventDispatcherImpl() {} | 317 FetchEventDispatcherImpl() {} |
237 | 318 |
238 ~FetchEventDispatcherImpl() override {} | 319 ~FetchEventDispatcherImpl() override {} |
239 | 320 |
240 void DispatchFetchEvent(int fetch_event_id, | 321 void DispatchFetchEvent(int fetch_event_id, |
241 const ServiceWorkerFetchRequest& request, | 322 const ServiceWorkerFetchRequest& request, |
242 mojom::FetchEventPreloadHandlePtr preload_handle, | 323 mojom::FetchEventPreloadHandlePtr preload_handle, |
243 const DispatchFetchEventCallback& callback) override { | 324 const DispatchFetchEventCallback& callback) override { |
244 ServiceWorkerContextClient* client = | 325 ServiceWorkerContextClient* client = |
245 ServiceWorkerContextClient::ThreadSpecificInstance(); | 326 ServiceWorkerContextClient::ThreadSpecificInstance(); |
246 if (!client) { | 327 if (!client) { |
247 callback.Run(SERVICE_WORKER_ERROR_ABORT, base::Time::Now()); | 328 callback.Run(SERVICE_WORKER_ERROR_ABORT, base::Time::Now()); |
248 return; | 329 return; |
249 } | 330 } |
250 if (preload_handle) { | 331 client->DispatchFetchEvent(fetch_event_id, request, |
251 // TODO(horo): Implement this to pass |preload_handle| to FetchEvent. | 332 preload_handle |
252 NOTIMPLEMENTED(); | 333 ? base::MakeUnique<PreloadRequest>( |
253 return; | 334 request.url, std::move(preload_handle)) |
254 } | 335 : nullptr, |
255 client->DispatchFetchEvent(fetch_event_id, request, callback); | 336 callback); |
256 } | 337 } |
257 | 338 |
258 private: | 339 private: |
259 DISALLOW_COPY_AND_ASSIGN(FetchEventDispatcherImpl); | 340 DISALLOW_COPY_AND_ASSIGN(FetchEventDispatcherImpl); |
260 }; | 341 }; |
261 | 342 |
262 ServiceWorkerContextClient* | 343 ServiceWorkerContextClient* |
263 ServiceWorkerContextClient::ThreadSpecificInstance() { | 344 ServiceWorkerContextClient::ThreadSpecificInstance() { |
264 return g_worker_client_tls.Pointer()->Get(); | 345 return g_worker_client_tls.Pointer()->Get(); |
265 } | 346 } |
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
628 Send(new ServiceWorkerHostMsg_FetchEventResponse( | 709 Send(new ServiceWorkerHostMsg_FetchEventResponse( |
629 GetRoutingID(), fetch_event_id, | 710 GetRoutingID(), fetch_event_id, |
630 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, response, | 711 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, response, |
631 base::Time::FromDoubleT(event_dispatch_time))); | 712 base::Time::FromDoubleT(event_dispatch_time))); |
632 } | 713 } |
633 | 714 |
634 void ServiceWorkerContextClient::didHandleFetchEvent( | 715 void ServiceWorkerContextClient::didHandleFetchEvent( |
635 int fetch_event_id, | 716 int fetch_event_id, |
636 blink::WebServiceWorkerEventResult result, | 717 blink::WebServiceWorkerEventResult result, |
637 double event_dispatch_time) { | 718 double event_dispatch_time) { |
719 if (context_->preload_requests.Lookup(fetch_event_id)) { | |
720 // Deletes PreloadRequest. If the network request is ongoing, it will be | |
721 // canceled by deleting the mojom::URLLoaderPtr in the PreloadRequest. | |
722 context_->preload_requests.Remove(fetch_event_id); | |
723 } | |
638 const FetchCallback* callback = | 724 const FetchCallback* callback = |
639 context_->fetch_event_callbacks.Lookup(fetch_event_id); | 725 context_->fetch_event_callbacks.Lookup(fetch_event_id); |
640 if (!callback) | 726 if (!callback) |
641 return; | 727 return; |
642 | 728 |
643 callback->Run(result == blink::WebServiceWorkerEventResultCompleted | 729 callback->Run(result == blink::WebServiceWorkerEventResultCompleted |
644 ? SERVICE_WORKER_OK | 730 ? SERVICE_WORKER_OK |
645 : SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, | 731 : SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, |
646 base::Time::FromDoubleT(event_dispatch_time)); | 732 base::Time::FromDoubleT(event_dispatch_time)); |
647 context_->fetch_event_callbacks.Remove(fetch_event_id); | 733 context_->fetch_event_callbacks.Remove(fetch_event_id); |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
790 } | 876 } |
791 | 877 |
792 void ServiceWorkerContextClient::registerForeignFetchScopes( | 878 void ServiceWorkerContextClient::registerForeignFetchScopes( |
793 const blink::WebVector<blink::WebURL>& sub_scopes, | 879 const blink::WebVector<blink::WebURL>& sub_scopes, |
794 const blink::WebVector<blink::WebSecurityOrigin>& origins) { | 880 const blink::WebVector<blink::WebSecurityOrigin>& origins) { |
795 Send(new ServiceWorkerHostMsg_RegisterForeignFetchScopes( | 881 Send(new ServiceWorkerHostMsg_RegisterForeignFetchScopes( |
796 GetRoutingID(), std::vector<GURL>(sub_scopes.begin(), sub_scopes.end()), | 882 GetRoutingID(), std::vector<GURL>(sub_scopes.begin(), sub_scopes.end()), |
797 std::vector<url::Origin>(origins.begin(), origins.end()))); | 883 std::vector<url::Origin>(origins.begin(), origins.end()))); |
798 } | 884 } |
799 | 885 |
886 void ServiceWorkerContextClient::registerPreloadResponseCallback( | |
887 int eventID, | |
888 blink::WebServiceWorkerPreloadResponseCallbacks* callback) { | |
889 ServiceWorkerContextClient::PreloadRequest* preload_request = | |
890 context_->preload_requests.Lookup(eventID); | |
891 preload_request->RegisterCallback(callback); | |
892 } | |
893 | |
800 void ServiceWorkerContextClient::DispatchSyncEvent( | 894 void ServiceWorkerContextClient::DispatchSyncEvent( |
801 const std::string& tag, | 895 const std::string& tag, |
802 blink::WebServiceWorkerContextProxy::LastChanceOption last_chance, | 896 blink::WebServiceWorkerContextProxy::LastChanceOption last_chance, |
803 const SyncCallback& callback) { | 897 const SyncCallback& callback) { |
804 TRACE_EVENT0("ServiceWorker", | 898 TRACE_EVENT0("ServiceWorker", |
805 "ServiceWorkerContextClient::DispatchSyncEvent"); | 899 "ServiceWorkerContextClient::DispatchSyncEvent"); |
806 int request_id = | 900 int request_id = |
807 context_->sync_event_callbacks.Add(new SyncCallback(callback)); | 901 context_->sync_event_callbacks.Add(new SyncCallback(callback)); |
808 | 902 |
809 // TODO(jkarlin): Make this blink::WebString::FromUTF8Lenient once | 903 // TODO(jkarlin): Make this blink::WebString::FromUTF8Lenient once |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
880 | 974 |
881 void ServiceWorkerContextClient::OnInstallEvent(int request_id) { | 975 void ServiceWorkerContextClient::OnInstallEvent(int request_id) { |
882 TRACE_EVENT0("ServiceWorker", | 976 TRACE_EVENT0("ServiceWorker", |
883 "ServiceWorkerContextClient::OnInstallEvent"); | 977 "ServiceWorkerContextClient::OnInstallEvent"); |
884 proxy_->dispatchInstallEvent(request_id); | 978 proxy_->dispatchInstallEvent(request_id); |
885 } | 979 } |
886 | 980 |
887 void ServiceWorkerContextClient::DispatchFetchEvent( | 981 void ServiceWorkerContextClient::DispatchFetchEvent( |
888 int fetch_event_id, | 982 int fetch_event_id, |
889 const ServiceWorkerFetchRequest& request, | 983 const ServiceWorkerFetchRequest& request, |
984 std::unique_ptr<PreloadRequest> preload_request, | |
890 const FetchCallback& callback) { | 985 const FetchCallback& callback) { |
986 const bool navigation_preload_sent = !!preload_request; | |
891 blink::WebServiceWorkerRequest webRequest; | 987 blink::WebServiceWorkerRequest webRequest; |
892 TRACE_EVENT0("ServiceWorker", | 988 TRACE_EVENT0("ServiceWorker", |
893 "ServiceWorkerContextClient::DispatchFetchEvent"); | 989 "ServiceWorkerContextClient::DispatchFetchEvent"); |
894 context_->fetch_event_callbacks.AddWithID(new FetchCallback(callback), | 990 context_->fetch_event_callbacks.AddWithID(new FetchCallback(callback), |
895 fetch_event_id); | 991 fetch_event_id); |
992 if (preload_request) { | |
993 context_->preload_requests.AddWithID(std::move(preload_request), | |
994 fetch_event_id); | |
995 } | |
896 | 996 |
897 webRequest.setURL(blink::WebURL(request.url)); | 997 webRequest.setURL(blink::WebURL(request.url)); |
898 webRequest.setMethod(blink::WebString::fromUTF8(request.method)); | 998 webRequest.setMethod(blink::WebString::fromUTF8(request.method)); |
899 for (ServiceWorkerHeaderMap::const_iterator it = request.headers.begin(); | 999 for (ServiceWorkerHeaderMap::const_iterator it = request.headers.begin(); |
900 it != request.headers.end(); | 1000 it != request.headers.end(); |
901 ++it) { | 1001 ++it) { |
902 webRequest.setHeader(blink::WebString::fromUTF8(it->first), | 1002 webRequest.setHeader(blink::WebString::fromUTF8(it->first), |
903 blink::WebString::fromUTF8(it->second)); | 1003 blink::WebString::fromUTF8(it->second)); |
904 } | 1004 } |
905 if (!request.blob_uuid.empty()) { | 1005 if (!request.blob_uuid.empty()) { |
906 webRequest.setBlob(blink::WebString::fromUTF8(request.blob_uuid), | 1006 webRequest.setBlob(blink::WebString::fromUTF8(request.blob_uuid), |
907 request.blob_size); | 1007 request.blob_size); |
908 } | 1008 } |
909 webRequest.setReferrer( | 1009 webRequest.setReferrer( |
910 blink::WebString::fromUTF8(request.referrer.url.spec()), | 1010 blink::WebString::fromUTF8(request.referrer.url.spec()), |
911 request.referrer.policy); | 1011 request.referrer.policy); |
912 webRequest.setMode(GetBlinkFetchRequestMode(request.mode)); | 1012 webRequest.setMode(GetBlinkFetchRequestMode(request.mode)); |
913 webRequest.setIsMainResourceLoad(request.is_main_resource_load); | 1013 webRequest.setIsMainResourceLoad(request.is_main_resource_load); |
914 webRequest.setCredentialsMode( | 1014 webRequest.setCredentialsMode( |
915 GetBlinkFetchCredentialsMode(request.credentials_mode)); | 1015 GetBlinkFetchCredentialsMode(request.credentials_mode)); |
916 webRequest.setRedirectMode(GetBlinkFetchRedirectMode(request.redirect_mode)); | 1016 webRequest.setRedirectMode(GetBlinkFetchRedirectMode(request.redirect_mode)); |
917 webRequest.setRequestContext( | 1017 webRequest.setRequestContext( |
918 GetBlinkRequestContext(request.request_context_type)); | 1018 GetBlinkRequestContext(request.request_context_type)); |
919 webRequest.setFrameType(GetBlinkFrameType(request.frame_type)); | 1019 webRequest.setFrameType(GetBlinkFrameType(request.frame_type)); |
920 webRequest.setClientId(blink::WebString::fromUTF8(request.client_id)); | 1020 webRequest.setClientId(blink::WebString::fromUTF8(request.client_id)); |
921 webRequest.setIsReload(request.is_reload); | 1021 webRequest.setIsReload(request.is_reload); |
922 if (request.fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) { | 1022 if (request.fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) { |
923 proxy_->dispatchForeignFetchEvent(fetch_event_id, webRequest); | 1023 proxy_->dispatchForeignFetchEvent(fetch_event_id, webRequest); |
924 } else { | 1024 } else { |
925 proxy_->dispatchFetchEvent(fetch_event_id, webRequest); | 1025 proxy_->dispatchFetchEvent(fetch_event_id, webRequest, |
1026 navigation_preload_sent); | |
926 } | 1027 } |
927 } | 1028 } |
928 | 1029 |
929 void ServiceWorkerContextClient::OnNotificationClickEvent( | 1030 void ServiceWorkerContextClient::OnNotificationClickEvent( |
930 int request_id, | 1031 int request_id, |
931 const std::string& notification_id, | 1032 const std::string& notification_id, |
932 const PlatformNotificationData& notification_data, | 1033 const PlatformNotificationData& notification_data, |
933 int action_index, | 1034 int action_index, |
934 const base::NullableString16& reply) { | 1035 const base::NullableString16& reply) { |
935 TRACE_EVENT0("ServiceWorker", | 1036 TRACE_EVENT0("ServiceWorker", |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1150 } | 1251 } |
1151 | 1252 |
1152 base::WeakPtr<ServiceWorkerContextClient> | 1253 base::WeakPtr<ServiceWorkerContextClient> |
1153 ServiceWorkerContextClient::GetWeakPtr() { | 1254 ServiceWorkerContextClient::GetWeakPtr() { |
1154 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); | 1255 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); |
1155 DCHECK(context_); | 1256 DCHECK(context_); |
1156 return context_->weak_factory.GetWeakPtr(); | 1257 return context_->weak_factory.GetWeakPtr(); |
1157 } | 1258 } |
1158 | 1259 |
1159 } // namespace content | 1260 } // namespace content |
OLD | NEW |