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

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: incorporated pfeldman's comment 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("preload-%d", fetch_event_id);
136 MayBeRunDevToolsCallbacks();
137 }
138
90 void OnDataDownloaded(int64_t data_length, int64_t encoded_length) override { 139 void OnDataDownloaded(int64_t data_length, int64_t encoded_length) override {
91 client_->OnDataDownloaded(data_length, encoded_length); 140 client_->OnDataDownloaded(data_length, encoded_length);
92 } 141 }
93 void OnUploadProgress(int64_t current_position, 142 void OnUploadProgress(int64_t current_position,
94 int64_t total_size, 143 int64_t total_size,
95 const base::Closure& ack_callback) override { 144 const base::Closure& ack_callback) override {
96 client_->OnUploadProgress(current_position, total_size, ack_callback); 145 client_->OnUploadProgress(current_position, total_size, ack_callback);
97 } 146 }
98 void OnReceiveCachedMetadata(const std::vector<uint8_t>& data) override { 147 void OnReceiveCachedMetadata(const std::vector<uint8_t>& data) override {
99 client_->OnReceiveCachedMetadata(data); 148 client_->OnReceiveCachedMetadata(data);
100 } 149 }
101 void OnTransferSizeUpdated(int32_t transfer_size_diff) override { 150 void OnTransferSizeUpdated(int32_t transfer_size_diff) override {
102 client_->OnTransferSizeUpdated(transfer_size_diff); 151 client_->OnTransferSizeUpdated(transfer_size_diff);
103 } 152 }
104 void OnReceiveResponse( 153 void OnReceiveResponse(
105 const ResourceResponseHead& head, 154 const ResourceResponseHead& head,
106 mojom::DownloadedTempFileAssociatedPtrInfo downloaded_file) override { 155 mojom::DownloadedTempFileAssociatedPtrInfo downloaded_file) override {
107 client_->OnReceiveResponse(head, std::move(downloaded_file)); 156 client_->OnReceiveResponse(head, std::move(downloaded_file));
108 DCHECK(on_response_); 157 DCHECK(on_response_);
109 std::move(on_response_).Run(); 158 std::move(on_response_).Run();
159 AddDevToolsCallback(
160 base::Bind(&NotifyNavigationPreloadResponseReceivedOnUI, url_, head));
110 } 161 }
111 void OnReceiveRedirect(const net::RedirectInfo& redirect_info, 162 void OnReceiveRedirect(const net::RedirectInfo& redirect_info,
112 const ResourceResponseHead& head) override { 163 const ResourceResponseHead& head) override {
113 client_->OnReceiveRedirect(redirect_info, head); 164 client_->OnReceiveRedirect(redirect_info, head);
114 } 165 }
115 void OnStartLoadingResponseBody( 166 void OnStartLoadingResponseBody(
116 mojo::ScopedDataPipeConsumerHandle body) override { 167 mojo::ScopedDataPipeConsumerHandle body) override {
117 client_->OnStartLoadingResponseBody(std::move(body)); 168 client_->OnStartLoadingResponseBody(std::move(body));
118 } 169 }
119 void OnComplete( 170 void OnComplete(
120 const ResourceRequestCompletionStatus& completion_status) override { 171 const ResourceRequestCompletionStatus& completion_status) override {
121 client_->OnComplete(completion_status); 172 client_->OnComplete(completion_status);
122 completed_ = true; 173 completed_ = true;
174 AddDevToolsCallback(
175 base::Bind(&NotifyNavigationPreloadCompletedOnUI, completion_status));
123 } 176 }
124 177
125 void Bind(mojom::URLLoaderClientAssociatedPtrInfo* ptr_info, 178 void Bind(mojom::URLLoaderClientAssociatedPtrInfo* ptr_info,
126 mojo::AssociatedGroup* associated_group) { 179 mojo::AssociatedGroup* associated_group) {
127 binding_.Bind(ptr_info, associated_group); 180 binding_.Bind(ptr_info, associated_group);
128 } 181 }
129 182
130 private: 183 private:
184 void MayBeRunDevToolsCallbacks() {
185 if (!worker_id_)
186 return;
187 while (!devtools_callbacks.empty()) {
188 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
189 base::Bind(std::move(devtools_callbacks.front()),
190 *worker_id_, devtools_request_id_));
191 devtools_callbacks.pop();
192 }
193 }
194 void AddDevToolsCallback(
195 base::Callback<void(const WorkerId&, const std::string&)> callback) {
196 devtools_callbacks.push(callback);
197 MayBeRunDevToolsCallbacks();
198 }
199
131 mojo::AssociatedBinding<mojom::URLLoaderClient> binding_; 200 mojo::AssociatedBinding<mojom::URLLoaderClient> binding_;
132 mojom::URLLoaderClientPtr client_; 201 mojom::URLLoaderClientPtr client_;
133 base::OnceClosure on_response_; 202 base::OnceClosure on_response_;
134 bool completed_ = false; 203 bool completed_ = false;
204 const GURL url_;
135 205
206 base::Optional<std::pair<int, int>> worker_id_;
207 std::string devtools_request_id_;
208 std::queue<base::Callback<void(const WorkerId&, const std::string&)>>
209 devtools_callbacks;
136 DISALLOW_COPY_AND_ASSIGN(DelegatingURLLoaderClient); 210 DISALLOW_COPY_AND_ASSIGN(DelegatingURLLoaderClient);
137 }; 211 };
138 212
139 using EventType = ServiceWorkerMetrics::EventType; 213 using EventType = ServiceWorkerMetrics::EventType;
140 EventType ResourceTypeToEventType(ResourceType resource_type) { 214 EventType ResourceTypeToEventType(ResourceType resource_type) {
141 switch (resource_type) { 215 switch (resource_type) {
142 case RESOURCE_TYPE_MAIN_FRAME: 216 case RESOURCE_TYPE_MAIN_FRAME:
143 return EventType::FETCH_MAIN_FRAME; 217 return EventType::FETCH_MAIN_FRAME;
144 case RESOURCE_TYPE_SUB_FRAME: 218 case RESOURCE_TYPE_SUB_FRAME:
145 return EventType::FETCH_SUB_FRAME; 219 return EventType::FETCH_SUB_FRAME;
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 DISALLOW_COPY_AND_ASSIGN(ResponseCallback); 293 DISALLOW_COPY_AND_ASSIGN(ResponseCallback);
220 }; 294 };
221 295
222 // This class keeps the URL loader related assets alive while the FetchEvent is 296 // This class keeps the URL loader related assets alive while the FetchEvent is
223 // ongoing in the service worker. 297 // ongoing in the service worker.
224 class ServiceWorkerFetchDispatcher::URLLoaderAssets 298 class ServiceWorkerFetchDispatcher::URLLoaderAssets
225 : public base::RefCounted<ServiceWorkerFetchDispatcher::URLLoaderAssets> { 299 : public base::RefCounted<ServiceWorkerFetchDispatcher::URLLoaderAssets> {
226 public: 300 public:
227 URLLoaderAssets(mojom::URLLoaderFactoryPtr url_loader_factory, 301 URLLoaderAssets(mojom::URLLoaderFactoryPtr url_loader_factory,
228 std::unique_ptr<mojom::URLLoader> url_loader, 302 std::unique_ptr<mojom::URLLoader> url_loader,
229 std::unique_ptr<mojom::URLLoaderClient> url_loader_client) 303 std::unique_ptr<DelegatingURLLoaderClient> url_loader_client)
230 : url_loader_factory_(std::move(url_loader_factory)), 304 : url_loader_factory_(std::move(url_loader_factory)),
231 url_loader_(std::move(url_loader)), 305 url_loader_(std::move(url_loader)),
232 url_loader_client_(std::move(url_loader_client)) {} 306 url_loader_client_(std::move(url_loader_client)) {}
233 307
308 void MayBeReportToDevTools(std::pair<int, int> worker_id,
309 int fetch_event_id) {
310 url_loader_client_->MayBeReportToDevTools(worker_id, fetch_event_id);
311 }
312
234 private: 313 private:
235 friend class base::RefCounted<URLLoaderAssets>; 314 friend class base::RefCounted<URLLoaderAssets>;
236 virtual ~URLLoaderAssets() {} 315 virtual ~URLLoaderAssets() {}
237 316
238 mojom::URLLoaderFactoryPtr url_loader_factory_; 317 mojom::URLLoaderFactoryPtr url_loader_factory_;
239 std::unique_ptr<mojom::URLLoader> url_loader_; 318 std::unique_ptr<mojom::URLLoader> url_loader_;
240 std::unique_ptr<mojom::URLLoaderClient> url_loader_client_; 319 std::unique_ptr<DelegatingURLLoaderClient> url_loader_client_;
241 320
242 DISALLOW_COPY_AND_ASSIGN(URLLoaderAssets); 321 DISALLOW_COPY_AND_ASSIGN(URLLoaderAssets);
243 }; 322 };
244 323
245 ServiceWorkerFetchDispatcher::ServiceWorkerFetchDispatcher( 324 ServiceWorkerFetchDispatcher::ServiceWorkerFetchDispatcher(
246 std::unique_ptr<ServiceWorkerFetchRequest> request, 325 std::unique_ptr<ServiceWorkerFetchRequest> request,
247 ServiceWorkerVersion* version, 326 ServiceWorkerVersion* version,
248 ResourceType resource_type, 327 ResourceType resource_type,
249 const base::Optional<base::TimeDelta>& timeout, 328 const base::Optional<base::TimeDelta>& timeout,
250 const net::NetLogWithSource& net_log, 329 const net::NetLogWithSource& net_log,
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); 436 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback));
358 } 437 }
359 438
360 ResponseCallback* response_callback = 439 ResponseCallback* response_callback =
361 new ResponseCallback(weak_factory_.GetWeakPtr(), version_.get()); 440 new ResponseCallback(weak_factory_.GetWeakPtr(), version_.get());
362 version_->RegisterRequestCallback<ServiceWorkerHostMsg_FetchEventResponse>( 441 version_->RegisterRequestCallback<ServiceWorkerHostMsg_FetchEventResponse>(
363 fetch_event_id, 442 fetch_event_id,
364 base::Bind(&ServiceWorkerFetchDispatcher::ResponseCallback::Run, 443 base::Bind(&ServiceWorkerFetchDispatcher::ResponseCallback::Run,
365 base::Owned(response_callback))); 444 base::Owned(response_callback)));
366 445
446 if (url_loader_assets_) {
447 url_loader_assets_->MayBeReportToDevTools(
448 std::make_pair(
449 version_->embedded_worker()->process_id(),
450 version_->embedded_worker()->worker_devtools_agent_route_id()),
451 fetch_event_id);
452 }
453
367 // |event_dispatcher| is owned by |version_|. So it is safe to pass the 454 // |event_dispatcher| is owned by |version_|. So it is safe to pass the
368 // unretained raw pointer of |version_| to OnFetchEventFinished callback. 455 // unretained raw pointer of |version_| to OnFetchEventFinished callback.
369 // Pass |url_loader_assets_| to the callback to keep the URL loader related 456 // 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. 457 // assets alive while the FetchEvent is ongoing in the service worker.
371 version_->event_dispatcher()->DispatchFetchEvent( 458 version_->event_dispatcher()->DispatchFetchEvent(
372 fetch_event_id, *request_, std::move(preload_handle_), 459 fetch_event_id, *request_, std::move(preload_handle_),
373 base::Bind(&ServiceWorkerFetchDispatcher::OnFetchEventFinished, 460 base::Bind(&ServiceWorkerFetchDispatcher::OnFetchEventFinished,
374 base::Unretained(version_.get()), event_finish_id, 461 base::Unretained(version_.get()), event_finish_id,
375 url_loader_assets_)); 462 url_loader_assets_));
376 } 463 }
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 request.load_flags = original_request->load_flags(); 552 request.load_flags = original_request->load_flags();
466 // Set to SUB_RESOURCE because we shouldn't trigger NavigationResourceThrottle 553 // Set to SUB_RESOURCE because we shouldn't trigger NavigationResourceThrottle
467 // for the service worker navigation preload request. 554 // for the service worker navigation preload request.
468 request.resource_type = RESOURCE_TYPE_SUB_RESOURCE; 555 request.resource_type = RESOURCE_TYPE_SUB_RESOURCE;
469 request.priority = original_request->priority(); 556 request.priority = original_request->priority();
470 request.skip_service_worker = SkipServiceWorker::ALL; 557 request.skip_service_worker = SkipServiceWorker::ALL;
471 request.do_not_prompt_for_login = true; 558 request.do_not_prompt_for_login = true;
472 request.render_frame_id = original_info->GetRenderFrameID(); 559 request.render_frame_id = original_info->GetRenderFrameID();
473 request.is_main_frame = original_info->IsMainFrame(); 560 request.is_main_frame = original_info->IsMainFrame();
474 request.parent_is_main_frame = original_info->ParentIsMainFrame(); 561 request.parent_is_main_frame = original_info->ParentIsMainFrame();
562 request.enable_load_timing = original_info->is_load_timing_enabled();
563 request.report_raw_headers = original_info->ShouldReportRawHeaders();
475 564
476 DCHECK(net::HttpUtil::IsValidHeaderValue( 565 DCHECK(net::HttpUtil::IsValidHeaderValue(
477 version_->navigation_preload_state().header)); 566 version_->navigation_preload_state().header));
478 ServiceWorkerMetrics::RecordNavigationPreloadRequestHeaderSize( 567 ServiceWorkerMetrics::RecordNavigationPreloadRequestHeaderSize(
479 version_->navigation_preload_state().header.length()); 568 version_->navigation_preload_state().header.length());
480 request.headers = "Service-Worker-Navigation-Preload: " + 569 request.headers = "Service-Worker-Navigation-Preload: " +
481 version_->navigation_preload_state().header + "\r\n" + 570 version_->navigation_preload_state().header + "\r\n" +
482 original_request->extra_request_headers().ToString(); 571 original_request->extra_request_headers().ToString();
483 572
484 const int request_id = ResourceDispatcherHostImpl::Get()->MakeRequestID(); 573 const int request_id = ResourceDispatcherHostImpl::Get()->MakeRequestID();
485 DCHECK_LT(request_id, -1); 574 DCHECK_LT(request_id, -1);
486 575
487 preload_handle_ = mojom::FetchEventPreloadHandle::New(); 576 preload_handle_ = mojom::FetchEventPreloadHandle::New();
488 mojom::URLLoaderClientPtr url_loader_client_ptr; 577 mojom::URLLoaderClientPtr url_loader_client_ptr;
489 preload_handle_->url_loader_client_request = 578 preload_handle_->url_loader_client_request =
490 mojo::MakeRequest(&url_loader_client_ptr); 579 mojo::MakeRequest(&url_loader_client_ptr);
491 auto url_loader_client = base::MakeUnique<DelegatingURLLoaderClient>( 580 auto url_loader_client = base::MakeUnique<DelegatingURLLoaderClient>(
492 std::move(url_loader_client_ptr), std::move(on_response)); 581 std::move(url_loader_client_ptr), std::move(on_response), request);
493 mojom::URLLoaderClientAssociatedPtrInfo url_loader_client_associated_ptr_info; 582 mojom::URLLoaderClientAssociatedPtrInfo url_loader_client_associated_ptr_info;
494 url_loader_client->Bind(&url_loader_client_associated_ptr_info, 583 url_loader_client->Bind(&url_loader_client_associated_ptr_info,
495 url_loader_factory.associated_group()); 584 url_loader_factory.associated_group());
496 mojom::URLLoaderAssociatedPtr url_loader_associated_ptr; 585 mojom::URLLoaderAssociatedPtr url_loader_associated_ptr;
497 586
498 url_loader_factory->CreateLoaderAndStart( 587 url_loader_factory->CreateLoaderAndStart(
499 mojo::MakeRequest(&url_loader_associated_ptr, 588 mojo::MakeRequest(&url_loader_associated_ptr,
500 url_loader_factory.associated_group()), 589 url_loader_factory.associated_group()),
501 original_info->GetRouteID(), request_id, request, 590 original_info->GetRouteID(), request_id, request,
502 std::move(url_loader_client_associated_ptr_info)); 591 std::move(url_loader_client_associated_ptr_info));
(...skipping 20 matching lines...) Expand all
523 ServiceWorkerVersion* version, 612 ServiceWorkerVersion* version,
524 int event_finish_id, 613 int event_finish_id,
525 scoped_refptr<URLLoaderAssets> url_loader_assets, 614 scoped_refptr<URLLoaderAssets> url_loader_assets,
526 ServiceWorkerStatusCode status, 615 ServiceWorkerStatusCode status,
527 base::Time dispatch_event_time) { 616 base::Time dispatch_event_time) {
528 version->FinishRequest(event_finish_id, status != SERVICE_WORKER_ERROR_ABORT, 617 version->FinishRequest(event_finish_id, status != SERVICE_WORKER_ERROR_ABORT,
529 dispatch_event_time); 618 dispatch_event_time);
530 } 619 }
531 620
532 } // namespace content 621 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698