OLD | NEW |
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" |
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
453 request.load_flags = original_request->load_flags(); | 453 request.load_flags = original_request->load_flags(); |
454 // Set to SUB_RESOURCE because we shouldn't trigger NavigationResourceThrottle | 454 // Set to SUB_RESOURCE because we shouldn't trigger NavigationResourceThrottle |
455 // for the service worker navigation preload request. | 455 // for the service worker navigation preload request. |
456 request.resource_type = RESOURCE_TYPE_SUB_RESOURCE; | 456 request.resource_type = RESOURCE_TYPE_SUB_RESOURCE; |
457 request.priority = original_request->priority(); | 457 request.priority = original_request->priority(); |
458 request.skip_service_worker = SkipServiceWorker::ALL; | 458 request.skip_service_worker = SkipServiceWorker::ALL; |
459 request.do_not_prompt_for_login = true; | 459 request.do_not_prompt_for_login = true; |
460 request.render_frame_id = original_info->GetRenderFrameID(); | 460 request.render_frame_id = original_info->GetRenderFrameID(); |
461 request.is_main_frame = original_info->IsMainFrame(); | 461 request.is_main_frame = original_info->IsMainFrame(); |
462 request.parent_is_main_frame = original_info->ParentIsMainFrame(); | 462 request.parent_is_main_frame = original_info->ParentIsMainFrame(); |
| 463 request.enable_load_timing = original_info->is_load_timing_enabled(); |
| 464 request.report_raw_headers = original_info->ShouldReportRawHeaders(); |
463 | 465 |
464 DCHECK(net::HttpUtil::IsValidHeaderValue( | 466 DCHECK(net::HttpUtil::IsValidHeaderValue( |
465 version_->navigation_preload_state().header)); | 467 version_->navigation_preload_state().header)); |
466 ServiceWorkerMetrics::RecordNavigationPreloadRequestHeaderSize( | 468 ServiceWorkerMetrics::RecordNavigationPreloadRequestHeaderSize( |
467 version_->navigation_preload_state().header.length()); | 469 version_->navigation_preload_state().header.length()); |
468 request.headers = "Service-Worker-Navigation-Preload: " + | 470 request.headers = "Service-Worker-Navigation-Preload: " + |
469 version_->navigation_preload_state().header; | 471 version_->navigation_preload_state().header; |
470 | 472 |
471 const int request_id = ResourceDispatcherHostImpl::Get()->MakeRequestID(); | 473 const int request_id = ResourceDispatcherHostImpl::Get()->MakeRequestID(); |
472 DCHECK_LT(request_id, -1); | 474 DCHECK_LT(request_id, -1); |
(...skipping 12 matching lines...) Expand all Loading... |
485 url_loader_factory->CreateLoaderAndStart( | 487 url_loader_factory->CreateLoaderAndStart( |
486 mojo::MakeRequest(&url_loader_associated_ptr, | 488 mojo::MakeRequest(&url_loader_associated_ptr, |
487 url_loader_factory.associated_group()), | 489 url_loader_factory.associated_group()), |
488 original_info->GetRouteID(), request_id, request, | 490 original_info->GetRouteID(), request_id, request, |
489 std::move(url_loader_client_associated_ptr_info)); | 491 std::move(url_loader_client_associated_ptr_info)); |
490 | 492 |
491 std::unique_ptr<DelegatingURLLoader> url_loader( | 493 std::unique_ptr<DelegatingURLLoader> url_loader( |
492 base::MakeUnique<DelegatingURLLoader>( | 494 base::MakeUnique<DelegatingURLLoader>( |
493 std::move(url_loader_associated_ptr))); | 495 std::move(url_loader_associated_ptr))); |
494 preload_handle_->url_loader = url_loader->CreateInterfacePtrAndBind(); | 496 preload_handle_->url_loader = url_loader->CreateInterfacePtrAndBind(); |
| 497 preload_handle_->sent_timestamp = base::TimeTicks::Now(); |
| 498 preload_handle_->sent_wall_time = base::Time::Now(); |
495 url_loader_assets_ = | 499 url_loader_assets_ = |
496 new URLLoaderAssets(std::move(url_loader_factory), std::move(url_loader), | 500 new URLLoaderAssets(std::move(url_loader_factory), std::move(url_loader), |
497 std::move(url_loader_client)); | 501 std::move(url_loader_client)); |
498 return true; | 502 return true; |
499 } | 503 } |
500 | 504 |
501 ServiceWorkerMetrics::EventType ServiceWorkerFetchDispatcher::GetEventType() | 505 ServiceWorkerMetrics::EventType ServiceWorkerFetchDispatcher::GetEventType() |
502 const { | 506 const { |
503 if (request_->fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) | 507 if (request_->fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) |
504 return ServiceWorkerMetrics::EventType::FOREIGN_FETCH; | 508 return ServiceWorkerMetrics::EventType::FOREIGN_FETCH; |
505 return ResourceTypeToEventType(resource_type_); | 509 return ResourceTypeToEventType(resource_type_); |
506 } | 510 } |
507 | 511 |
508 // static | 512 // static |
509 void ServiceWorkerFetchDispatcher::OnFetchEventFinished( | 513 void ServiceWorkerFetchDispatcher::OnFetchEventFinished( |
510 ServiceWorkerVersion* version, | 514 ServiceWorkerVersion* version, |
511 int event_finish_id, | 515 int event_finish_id, |
512 scoped_refptr<URLLoaderAssets> url_loader_assets, | 516 scoped_refptr<URLLoaderAssets> url_loader_assets, |
513 ServiceWorkerStatusCode status, | 517 ServiceWorkerStatusCode status, |
514 base::Time dispatch_event_time) { | 518 base::Time dispatch_event_time) { |
515 version->FinishRequest(event_finish_id, status != SERVICE_WORKER_ERROR_ABORT, | 519 version->FinishRequest(event_finish_id, status != SERVICE_WORKER_ERROR_ABORT, |
516 dispatch_event_time); | 520 dispatch_event_time); |
517 } | 521 } |
518 | 522 |
519 } // namespace content | 523 } // namespace content |
OLD | NEW |