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

Side by Side Diff: content/browser/service_worker/service_worker_fetch_dispatcher.cc

Issue 2654993006: Show service worker navigation preload requests in DevTools Network tab. (Closed)
Patch Set: Created 3 years, 11 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/browser/service_worker/service_worker_fetch_dispatcher.h" 5 #include "content/browser/service_worker/service_worker_fetch_dispatcher.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/time/time.h" 12 #include "base/time/time.h"
13 #include "base/trace_event/trace_event.h" 13 #include "base/trace_event/trace_event.h"
14 #include "content/browser/devtools/service_worker_devtools_agent_host.h"
15 #include "content/browser/devtools/service_worker_devtools_manager.h"
14 #include "content/browser/loader/resource_dispatcher_host_impl.h" 16 #include "content/browser/loader/resource_dispatcher_host_impl.h"
15 #include "content/browser/loader/resource_request_info_impl.h" 17 #include "content/browser/loader/resource_request_info_impl.h"
16 #include "content/browser/loader/resource_requester_info.h" 18 #include "content/browser/loader/resource_requester_info.h"
17 #include "content/browser/loader/url_loader_factory_impl.h" 19 #include "content/browser/loader/url_loader_factory_impl.h"
18 #include "content/browser/service_worker/embedded_worker_status.h" 20 #include "content/browser/service_worker/embedded_worker_status.h"
19 #include "content/browser/service_worker/service_worker_metrics.h" 21 #include "content/browser/service_worker/service_worker_metrics.h"
20 #include "content/browser/service_worker/service_worker_version.h" 22 #include "content/browser/service_worker/service_worker_version.h"
21 #include "content/common/service_worker/service_worker_event_dispatcher.mojom.h" 23 #include "content/common/service_worker/service_worker_event_dispatcher.mojom.h"
22 #include "content/common/service_worker/service_worker_messages.h" 24 #include "content/common/service_worker/service_worker_messages.h"
23 #include "content/common/service_worker/service_worker_status_code.h" 25 #include "content/common/service_worker/service_worker_status_code.h"
24 #include "content/common/service_worker/service_worker_types.h" 26 #include "content/common/service_worker/service_worker_types.h"
25 #include "content/common/service_worker/service_worker_utils.h" 27 #include "content/common/service_worker/service_worker_utils.h"
28 #include "content/public/browser/browser_thread.h"
26 #include "content/public/common/browser_side_navigation_policy.h" 29 #include "content/public/common/browser_side_navigation_policy.h"
27 #include "mojo/public/cpp/bindings/associated_binding.h" 30 #include "mojo/public/cpp/bindings/associated_binding.h"
28 #include "mojo/public/cpp/bindings/binding.h" 31 #include "mojo/public/cpp/bindings/binding.h"
29 #include "net/http/http_util.h" 32 #include "net/http/http_util.h"
30 #include "net/log/net_log.h" 33 #include "net/log/net_log.h"
31 #include "net/log/net_log_capture_mode.h" 34 #include "net/log/net_log_capture_mode.h"
32 #include "net/log/net_log_event_type.h" 35 #include "net/log/net_log_event_type.h"
33 #include "net/url_request/url_request.h" 36 #include "net/url_request/url_request.h"
34 37
35 namespace content { 38 namespace content {
(...skipping 25 matching lines...) Expand all
61 // Cancel loading as stated in url_loader.mojom. 64 // Cancel loading as stated in url_loader.mojom.
62 loader_ = nullptr; 65 loader_ = nullptr;
63 } 66 }
64 67
65 mojo::Binding<mojom::URLLoader> binding_; 68 mojo::Binding<mojom::URLLoader> binding_;
66 mojom::URLLoaderAssociatedPtr loader_; 69 mojom::URLLoaderAssociatedPtr loader_;
67 70
68 DISALLOW_COPY_AND_ASSIGN(DelegatingURLLoader); 71 DISALLOW_COPY_AND_ASSIGN(DelegatingURLLoader);
69 }; 72 };
70 73
74 ServiceWorkerDevToolsAgentHost* GetAgentHost(
75 const std::pair<int, int>& worker_id) {
76 return ServiceWorkerDevToolsManager::GetInstance()
77 ->GetDevToolsAgentHostForWorker(worker_id.first, worker_id.second);
78 }
79
80 void NotifyNavigationPreloadRequestSentOnUI(
81 const ResourceRequest& request,
82 const std::pair<int, int>& worker_id,
83 const std::string& request_id) {
84 DCHECK_CURRENTLY_ON(BrowserThread::UI);
85 if (ServiceWorkerDevToolsAgentHost* agent_host = GetAgentHost(worker_id))
86 agent_host->NavigationPreloadRequestSent(request_id, request);
87 }
88
89 void NotifyNavigationPreloadResponseReceivedOnUI(
90 const GURL& url,
91 const ResourceResponseHead& head,
92 const std::pair<int, int>& worker_id,
93 const std::string& request_id) {
94 DCHECK_CURRENTLY_ON(BrowserThread::UI);
95 if (ServiceWorkerDevToolsAgentHost* agent_host = GetAgentHost(worker_id))
96 agent_host->NavigationPreloadResponseReceived(request_id, url, head);
97 }
98
99 void NotifyNavigationPreloadCompletedOnUI(
100 const ResourceRequestCompletionStatus& completion_status,
101 const std::pair<int, int>& worker_id,
102 const std::string& request_id) {
103 DCHECK_CURRENTLY_ON(BrowserThread::UI);
104 if (ServiceWorkerDevToolsAgentHost* agent_host = GetAgentHost(worker_id))
105 agent_host->NavigationPreloadCompleted(request_id, completion_status);
106 }
107
71 // This class wraps a mojo::InterfacePtr<URLLoaderClient>. It also is a 108 // This class wraps a mojo::InterfacePtr<URLLoaderClient>. It also is a
72 // URLLoaderClient implementation and delegates URLLoaderClient calls to the 109 // URLLoaderClient implementation and delegates URLLoaderClient calls to the
73 // wrapped client. 110 // wrapped client.
74 class DelegatingURLLoaderClient final : public mojom::URLLoaderClient { 111 class DelegatingURLLoaderClient final : public mojom::URLLoaderClient {
75 public: 112 public:
113 using WorkerId = std::pair<int, int>;
76 explicit DelegatingURLLoaderClient(mojom::URLLoaderClientPtr client, 114 explicit DelegatingURLLoaderClient(mojom::URLLoaderClientPtr client,
77 base::OnceClosure on_response) 115 base::OnceClosure on_response,
116 const ResourceRequest& request)
78 : binding_(this), 117 : binding_(this),
79 client_(std::move(client)), 118 client_(std::move(client)),
80 on_response_(std::move(on_response)) {} 119 on_response_(std::move(on_response)),
120 url_(request.url) {
121 AddDevToolsCallback(
122 base::Bind(&NotifyNavigationPreloadRequestSentOnUI, request));
123 }
81 ~DelegatingURLLoaderClient() override { 124 ~DelegatingURLLoaderClient() override {
82 if (!completed_) { 125 if (!completed_) {
83 // Let the service worker know that the request has been canceled. 126 // Let the service worker know that the request has been canceled.
84 ResourceRequestCompletionStatus status; 127 ResourceRequestCompletionStatus status;
85 status.error_code = net::ERR_ABORTED; 128 status.error_code = net::ERR_ABORTED;
86 client_->OnComplete(status); 129 client_->OnComplete(status);
87 } 130 }
88 } 131 }
89 132
133 void MayBeReportToDevTools(WorkerId worker_id, int fetch_event_id) {
134 worker_id_ = worker_id;
135 devtools_request_id_ = base::StringPrintf(
136 "preload-%d-%d-%d", worker_id.first, worker_id.second, fetch_event_id);
137 MayBeRunDevToolsCallbacks();
138 }
139
90 void OnDataDownloaded(int64_t data_length, int64_t encoded_length) override { 140 void OnDataDownloaded(int64_t data_length, int64_t encoded_length) override {
91 client_->OnDataDownloaded(data_length, encoded_length); 141 client_->OnDataDownloaded(data_length, encoded_length);
92 } 142 }
93 void OnUploadProgress(int64_t current_position, 143 void OnUploadProgress(int64_t current_position,
94 int64_t total_size, 144 int64_t total_size,
95 const base::Closure& ack_callback) override { 145 const base::Closure& ack_callback) override {
96 client_->OnUploadProgress(current_position, total_size, ack_callback); 146 client_->OnUploadProgress(current_position, total_size, ack_callback);
97 } 147 }
98 void OnReceiveCachedMetadata(const std::vector<uint8_t>& data) override { 148 void OnReceiveCachedMetadata(const std::vector<uint8_t>& data) override {
99 client_->OnReceiveCachedMetadata(data); 149 client_->OnReceiveCachedMetadata(data);
100 } 150 }
101 void OnTransferSizeUpdated(int32_t transfer_size_diff) override { 151 void OnTransferSizeUpdated(int32_t transfer_size_diff) override {
102 client_->OnTransferSizeUpdated(transfer_size_diff); 152 client_->OnTransferSizeUpdated(transfer_size_diff);
103 } 153 }
104 void OnReceiveResponse( 154 void OnReceiveResponse(
105 const ResourceResponseHead& head, 155 const ResourceResponseHead& head,
106 mojom::DownloadedTempFileAssociatedPtrInfo downloaded_file) override { 156 mojom::DownloadedTempFileAssociatedPtrInfo downloaded_file) override {
107 client_->OnReceiveResponse(head, std::move(downloaded_file)); 157 client_->OnReceiveResponse(head, std::move(downloaded_file));
108 DCHECK(on_response_); 158 DCHECK(on_response_);
109 std::move(on_response_).Run(); 159 std::move(on_response_).Run();
160 AddDevToolsCallback(
161 base::Bind(&NotifyNavigationPreloadResponseReceivedOnUI, url_, head));
110 } 162 }
111 void OnReceiveRedirect(const net::RedirectInfo& redirect_info, 163 void OnReceiveRedirect(const net::RedirectInfo& redirect_info,
112 const ResourceResponseHead& head) override { 164 const ResourceResponseHead& head) override {
113 client_->OnReceiveRedirect(redirect_info, head); 165 client_->OnReceiveRedirect(redirect_info, head);
114 } 166 }
115 void OnStartLoadingResponseBody( 167 void OnStartLoadingResponseBody(
116 mojo::ScopedDataPipeConsumerHandle body) override { 168 mojo::ScopedDataPipeConsumerHandle body) override {
117 client_->OnStartLoadingResponseBody(std::move(body)); 169 client_->OnStartLoadingResponseBody(std::move(body));
118 } 170 }
119 void OnComplete( 171 void OnComplete(
120 const ResourceRequestCompletionStatus& completion_status) override { 172 const ResourceRequestCompletionStatus& completion_status) override {
121 client_->OnComplete(completion_status); 173 client_->OnComplete(completion_status);
122 completed_ = true; 174 completed_ = true;
175 AddDevToolsCallback(
176 base::Bind(&NotifyNavigationPreloadCompletedOnUI, completion_status));
123 } 177 }
124 178
125 void Bind(mojom::URLLoaderClientAssociatedPtrInfo* ptr_info, 179 void Bind(mojom::URLLoaderClientAssociatedPtrInfo* ptr_info,
126 mojo::AssociatedGroup* associated_group) { 180 mojo::AssociatedGroup* associated_group) {
127 binding_.Bind(ptr_info, associated_group); 181 binding_.Bind(ptr_info, associated_group);
128 } 182 }
129 183
130 private: 184 private:
185 void MayBeRunDevToolsCallbacks() {
186 if (!worker_id_)
187 return;
188 while (!devtools_callbacks.empty()) {
189 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
190 base::Bind(std::move(devtools_callbacks.front()),
191 *worker_id_, devtools_request_id_));
192 devtools_callbacks.pop();
193 }
194 }
195 void AddDevToolsCallback(
196 base::Callback<void(const WorkerId&, const std::string&)> callback) {
197 devtools_callbacks.push(callback);
198 MayBeRunDevToolsCallbacks();
199 }
200
131 mojo::AssociatedBinding<mojom::URLLoaderClient> binding_; 201 mojo::AssociatedBinding<mojom::URLLoaderClient> binding_;
132 mojom::URLLoaderClientPtr client_; 202 mojom::URLLoaderClientPtr client_;
133 base::OnceClosure on_response_; 203 base::OnceClosure on_response_;
134 bool completed_ = false; 204 bool completed_ = false;
205 const GURL url_;
135 206
207 base::Optional<std::pair<int, int>> worker_id_;
208 std::string devtools_request_id_;
209 std::queue<base::Callback<void(const WorkerId&, const std::string&)>>
210 devtools_callbacks;
136 DISALLOW_COPY_AND_ASSIGN(DelegatingURLLoaderClient); 211 DISALLOW_COPY_AND_ASSIGN(DelegatingURLLoaderClient);
137 }; 212 };
138 213
139 using EventType = ServiceWorkerMetrics::EventType; 214 using EventType = ServiceWorkerMetrics::EventType;
140 EventType ResourceTypeToEventType(ResourceType resource_type) { 215 EventType ResourceTypeToEventType(ResourceType resource_type) {
141 switch (resource_type) { 216 switch (resource_type) {
142 case RESOURCE_TYPE_MAIN_FRAME: 217 case RESOURCE_TYPE_MAIN_FRAME:
143 return EventType::FETCH_MAIN_FRAME; 218 return EventType::FETCH_MAIN_FRAME;
144 case RESOURCE_TYPE_SUB_FRAME: 219 case RESOURCE_TYPE_SUB_FRAME:
145 return EventType::FETCH_SUB_FRAME; 220 return EventType::FETCH_SUB_FRAME;
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 DISALLOW_COPY_AND_ASSIGN(ResponseCallback); 294 DISALLOW_COPY_AND_ASSIGN(ResponseCallback);
220 }; 295 };
221 296
222 // This class keeps the URL loader related assets alive while the FetchEvent is 297 // This class keeps the URL loader related assets alive while the FetchEvent is
223 // ongoing in the service worker. 298 // ongoing in the service worker.
224 class ServiceWorkerFetchDispatcher::URLLoaderAssets 299 class ServiceWorkerFetchDispatcher::URLLoaderAssets
225 : public base::RefCounted<ServiceWorkerFetchDispatcher::URLLoaderAssets> { 300 : public base::RefCounted<ServiceWorkerFetchDispatcher::URLLoaderAssets> {
226 public: 301 public:
227 URLLoaderAssets(mojom::URLLoaderFactoryPtr url_loader_factory, 302 URLLoaderAssets(mojom::URLLoaderFactoryPtr url_loader_factory,
228 std::unique_ptr<mojom::URLLoader> url_loader, 303 std::unique_ptr<mojom::URLLoader> url_loader,
229 std::unique_ptr<mojom::URLLoaderClient> url_loader_client) 304 std::unique_ptr<DelegatingURLLoaderClient> url_loader_client)
230 : url_loader_factory_(std::move(url_loader_factory)), 305 : url_loader_factory_(std::move(url_loader_factory)),
231 url_loader_(std::move(url_loader)), 306 url_loader_(std::move(url_loader)),
232 url_loader_client_(std::move(url_loader_client)) {} 307 url_loader_client_(std::move(url_loader_client)) {}
233 308
309 void MayBeReportToDevTools(std::pair<int, int> worker_id,
310 int fetch_event_id) {
311 url_loader_client_->MayBeReportToDevTools(worker_id, fetch_event_id);
312 }
313
234 private: 314 private:
235 friend class base::RefCounted<URLLoaderAssets>; 315 friend class base::RefCounted<URLLoaderAssets>;
236 virtual ~URLLoaderAssets() {} 316 virtual ~URLLoaderAssets() {}
237 317
238 mojom::URLLoaderFactoryPtr url_loader_factory_; 318 mojom::URLLoaderFactoryPtr url_loader_factory_;
239 std::unique_ptr<mojom::URLLoader> url_loader_; 319 std::unique_ptr<mojom::URLLoader> url_loader_;
240 std::unique_ptr<mojom::URLLoaderClient> url_loader_client_; 320 std::unique_ptr<DelegatingURLLoaderClient> url_loader_client_;
241 321
242 DISALLOW_COPY_AND_ASSIGN(URLLoaderAssets); 322 DISALLOW_COPY_AND_ASSIGN(URLLoaderAssets);
243 }; 323 };
244 324
245 ServiceWorkerFetchDispatcher::ServiceWorkerFetchDispatcher( 325 ServiceWorkerFetchDispatcher::ServiceWorkerFetchDispatcher(
246 std::unique_ptr<ServiceWorkerFetchRequest> request, 326 std::unique_ptr<ServiceWorkerFetchRequest> request,
247 ServiceWorkerVersion* version, 327 ServiceWorkerVersion* version,
248 ResourceType resource_type, 328 ResourceType resource_type,
249 const base::Optional<base::TimeDelta>& timeout, 329 const base::Optional<base::TimeDelta>& timeout,
250 const net::NetLogWithSource& net_log, 330 const net::NetLogWithSource& net_log,
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); 437 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback));
358 } 438 }
359 439
360 ResponseCallback* response_callback = 440 ResponseCallback* response_callback =
361 new ResponseCallback(weak_factory_.GetWeakPtr(), version_.get()); 441 new ResponseCallback(weak_factory_.GetWeakPtr(), version_.get());
362 version_->RegisterRequestCallback<ServiceWorkerHostMsg_FetchEventResponse>( 442 version_->RegisterRequestCallback<ServiceWorkerHostMsg_FetchEventResponse>(
363 fetch_event_id, 443 fetch_event_id,
364 base::Bind(&ServiceWorkerFetchDispatcher::ResponseCallback::Run, 444 base::Bind(&ServiceWorkerFetchDispatcher::ResponseCallback::Run,
365 base::Owned(response_callback))); 445 base::Owned(response_callback)));
366 446
447 if (url_loader_assets_) {
448 url_loader_assets_->MayBeReportToDevTools(
449 std::make_pair(
450 version_->embedded_worker()->process_id(),
451 version_->embedded_worker()->worker_devtools_agent_route_id()),
452 fetch_event_id);
453 }
454
367 // |event_dispatcher| is owned by |version_|. So it is safe to pass the 455 // |event_dispatcher| is owned by |version_|. So it is safe to pass the
368 // unretained raw pointer of |version_| to OnFetchEventFinished callback. 456 // unretained raw pointer of |version_| to OnFetchEventFinished callback.
369 // Pass |url_loader_assets_| to the callback to keep the URL loader related 457 // Pass |url_loader_assets_| to the callback to keep the URL loader related
370 // assets alive while the FetchEvent is ongoing in the service worker. 458 // assets alive while the FetchEvent is ongoing in the service worker.
371 version_->event_dispatcher()->DispatchFetchEvent( 459 version_->event_dispatcher()->DispatchFetchEvent(
372 fetch_event_id, *request_, std::move(preload_handle_), 460 fetch_event_id, *request_, std::move(preload_handle_),
373 base::Bind(&ServiceWorkerFetchDispatcher::OnFetchEventFinished, 461 base::Bind(&ServiceWorkerFetchDispatcher::OnFetchEventFinished,
374 base::Unretained(version_.get()), event_finish_id, 462 base::Unretained(version_.get()), event_finish_id,
375 url_loader_assets_)); 463 url_loader_assets_));
376 } 464 }
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 request.load_flags = original_request->load_flags(); 553 request.load_flags = original_request->load_flags();
466 // Set to SUB_RESOURCE because we shouldn't trigger NavigationResourceThrottle 554 // Set to SUB_RESOURCE because we shouldn't trigger NavigationResourceThrottle
467 // for the service worker navigation preload request. 555 // for the service worker navigation preload request.
468 request.resource_type = RESOURCE_TYPE_SUB_RESOURCE; 556 request.resource_type = RESOURCE_TYPE_SUB_RESOURCE;
469 request.priority = original_request->priority(); 557 request.priority = original_request->priority();
470 request.skip_service_worker = SkipServiceWorker::ALL; 558 request.skip_service_worker = SkipServiceWorker::ALL;
471 request.do_not_prompt_for_login = true; 559 request.do_not_prompt_for_login = true;
472 request.render_frame_id = original_info->GetRenderFrameID(); 560 request.render_frame_id = original_info->GetRenderFrameID();
473 request.is_main_frame = original_info->IsMainFrame(); 561 request.is_main_frame = original_info->IsMainFrame();
474 request.parent_is_main_frame = original_info->ParentIsMainFrame(); 562 request.parent_is_main_frame = original_info->ParentIsMainFrame();
563 request.enable_load_timing = original_info->is_load_timing_enabled();
564 request.report_raw_headers = original_info->ShouldReportRawHeaders();
475 565
476 DCHECK(net::HttpUtil::IsValidHeaderValue( 566 DCHECK(net::HttpUtil::IsValidHeaderValue(
477 version_->navigation_preload_state().header)); 567 version_->navigation_preload_state().header));
478 ServiceWorkerMetrics::RecordNavigationPreloadRequestHeaderSize( 568 ServiceWorkerMetrics::RecordNavigationPreloadRequestHeaderSize(
479 version_->navigation_preload_state().header.length()); 569 version_->navigation_preload_state().header.length());
480 request.headers = "Service-Worker-Navigation-Preload: " + 570 request.headers = "Service-Worker-Navigation-Preload: " +
481 version_->navigation_preload_state().header + "\r\n" + 571 version_->navigation_preload_state().header + "\r\n" +
482 original_request->extra_request_headers().ToString(); 572 original_request->extra_request_headers().ToString();
483 573
484 const int request_id = ResourceDispatcherHostImpl::Get()->MakeRequestID(); 574 const int request_id = ResourceDispatcherHostImpl::Get()->MakeRequestID();
485 DCHECK_LT(request_id, -1); 575 DCHECK_LT(request_id, -1);
486 576
487 preload_handle_ = mojom::FetchEventPreloadHandle::New(); 577 preload_handle_ = mojom::FetchEventPreloadHandle::New();
488 mojom::URLLoaderClientPtr url_loader_client_ptr; 578 mojom::URLLoaderClientPtr url_loader_client_ptr;
489 preload_handle_->url_loader_client_request = 579 preload_handle_->url_loader_client_request =
490 mojo::MakeRequest(&url_loader_client_ptr); 580 mojo::MakeRequest(&url_loader_client_ptr);
491 auto url_loader_client = base::MakeUnique<DelegatingURLLoaderClient>( 581 auto url_loader_client = base::MakeUnique<DelegatingURLLoaderClient>(
492 std::move(url_loader_client_ptr), std::move(on_response)); 582 std::move(url_loader_client_ptr), std::move(on_response), request);
493 mojom::URLLoaderClientAssociatedPtrInfo url_loader_client_associated_ptr_info; 583 mojom::URLLoaderClientAssociatedPtrInfo url_loader_client_associated_ptr_info;
494 url_loader_client->Bind(&url_loader_client_associated_ptr_info, 584 url_loader_client->Bind(&url_loader_client_associated_ptr_info,
495 url_loader_factory.associated_group()); 585 url_loader_factory.associated_group());
496 mojom::URLLoaderAssociatedPtr url_loader_associated_ptr; 586 mojom::URLLoaderAssociatedPtr url_loader_associated_ptr;
497 587
498 url_loader_factory->CreateLoaderAndStart( 588 url_loader_factory->CreateLoaderAndStart(
499 mojo::MakeRequest(&url_loader_associated_ptr, 589 mojo::MakeRequest(&url_loader_associated_ptr,
500 url_loader_factory.associated_group()), 590 url_loader_factory.associated_group()),
501 original_info->GetRouteID(), request_id, request, 591 original_info->GetRouteID(), request_id, request,
502 std::move(url_loader_client_associated_ptr_info)); 592 std::move(url_loader_client_associated_ptr_info));
(...skipping 20 matching lines...) Expand all
523 ServiceWorkerVersion* version, 613 ServiceWorkerVersion* version,
524 int event_finish_id, 614 int event_finish_id,
525 scoped_refptr<URLLoaderAssets> url_loader_assets, 615 scoped_refptr<URLLoaderAssets> url_loader_assets,
526 ServiceWorkerStatusCode status, 616 ServiceWorkerStatusCode status,
527 base::Time dispatch_event_time) { 617 base::Time dispatch_event_time) {
528 version->FinishRequest(event_finish_id, status != SERVICE_WORKER_ERROR_ABORT, 618 version->FinishRequest(event_finish_id, status != SERVICE_WORKER_ERROR_ABORT,
529 dispatch_event_time); 619 dispatch_event_time);
530 } 620 }
531 621
532 } // namespace content 622 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698