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

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

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

Powered by Google App Engine
This is Rietveld 408576698