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 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 request.load_flags = original_request->load_flags(); | 423 request.load_flags = original_request->load_flags(); |
424 // Set to SUB_RESOURCE because we shouldn't trigger NavigationResourceThrottle | 424 // Set to SUB_RESOURCE because we shouldn't trigger NavigationResourceThrottle |
425 // for the service worker navigation preload request. | 425 // for the service worker navigation preload request. |
426 request.resource_type = RESOURCE_TYPE_SUB_RESOURCE; | 426 request.resource_type = RESOURCE_TYPE_SUB_RESOURCE; |
427 request.priority = original_request->priority(); | 427 request.priority = original_request->priority(); |
428 request.skip_service_worker = SkipServiceWorker::ALL; | 428 request.skip_service_worker = SkipServiceWorker::ALL; |
429 request.do_not_prompt_for_login = true; | 429 request.do_not_prompt_for_login = true; |
430 request.render_frame_id = original_info->GetRenderFrameID(); | 430 request.render_frame_id = original_info->GetRenderFrameID(); |
431 request.is_main_frame = original_info->IsMainFrame(); | 431 request.is_main_frame = original_info->IsMainFrame(); |
432 request.parent_is_main_frame = original_info->ParentIsMainFrame(); | 432 request.parent_is_main_frame = original_info->ParentIsMainFrame(); |
| 433 request.enable_load_timing = original_info->is_load_timing_enabled(); |
| 434 request.report_raw_headers = original_info->ShouldReportRawHeaders(); |
433 | 435 |
434 DCHECK(net::HttpUtil::IsValidHeaderValue( | 436 DCHECK(net::HttpUtil::IsValidHeaderValue( |
435 version_->navigation_preload_state().header)); | 437 version_->navigation_preload_state().header)); |
436 ServiceWorkerMetrics::RecordNavigationPreloadRequestHeaderSize( | 438 ServiceWorkerMetrics::RecordNavigationPreloadRequestHeaderSize( |
437 version_->navigation_preload_state().header.length()); | 439 version_->navigation_preload_state().header.length()); |
438 request.headers = "Service-Worker-Navigation-Preload: " + | 440 request.headers = "Service-Worker-Navigation-Preload: " + |
439 version_->navigation_preload_state().header; | 441 version_->navigation_preload_state().header; |
440 | 442 |
441 const int request_id = ResourceDispatcherHostImpl::Get()->MakeRequestID(); | 443 const int request_id = ResourceDispatcherHostImpl::Get()->MakeRequestID(); |
442 DCHECK_LT(request_id, -1); | 444 DCHECK_LT(request_id, -1); |
443 | 445 |
444 preload_handle_ = mojom::FetchEventPreloadHandle::New(); | 446 preload_handle_ = mojom::FetchEventPreloadHandle::New(); |
445 mojom::URLLoaderClientPtr url_loader_client_ptr; | 447 mojom::URLLoaderClientPtr url_loader_client_ptr; |
446 preload_handle_->url_loader_client_request = | 448 preload_handle_->url_loader_client_request = |
447 mojo::MakeRequest(&url_loader_client_ptr); | 449 mojo::MakeRequest(&url_loader_client_ptr); |
448 auto url_loader_client = base::MakeUnique<DelegatingURLLoaderClient>( | 450 auto url_loader_client = base::MakeUnique<DelegatingURLLoaderClient>( |
449 std::move(url_loader_client_ptr)); | 451 std::move(url_loader_client_ptr)); |
450 mojom::URLLoaderClientAssociatedPtrInfo url_loader_client_associated_ptr_info; | 452 mojom::URLLoaderClientAssociatedPtrInfo url_loader_client_associated_ptr_info; |
451 url_loader_client->Bind(&url_loader_client_associated_ptr_info, | 453 url_loader_client->Bind(&url_loader_client_associated_ptr_info, |
452 url_loader_factory_.associated_group()); | 454 url_loader_factory_.associated_group()); |
453 mojom::URLLoaderAssociatedPtr url_loader_associated_ptr; | 455 mojom::URLLoaderAssociatedPtr url_loader_associated_ptr; |
454 | 456 |
| 457 preload_handle_->sent_timestamp = base::TimeTicks::Now(); |
| 458 preload_handle_->sent_wall_time = base::Time::Now(); |
| 459 |
455 url_loader_factory_->CreateLoaderAndStart( | 460 url_loader_factory_->CreateLoaderAndStart( |
456 mojo::MakeRequest(&url_loader_associated_ptr, | 461 mojo::MakeRequest(&url_loader_associated_ptr, |
457 url_loader_factory_.associated_group()), | 462 url_loader_factory_.associated_group()), |
458 original_info->GetRouteID(), request_id, request, | 463 original_info->GetRouteID(), request_id, request, |
459 std::move(url_loader_client_associated_ptr_info)); | 464 std::move(url_loader_client_associated_ptr_info)); |
460 | 465 |
461 std::unique_ptr<DelegatingURLLoader> url_loader( | 466 std::unique_ptr<DelegatingURLLoader> url_loader( |
462 new DelegatingURLLoader(std::move(url_loader_associated_ptr))); | 467 new DelegatingURLLoader(std::move(url_loader_associated_ptr))); |
463 preload_handle_->url_loader = url_loader->CreateInterfacePtrAndBind(); | 468 preload_handle_->url_loader = url_loader->CreateInterfacePtrAndBind(); |
464 url_loader_ = std::move(url_loader); | 469 url_loader_ = std::move(url_loader); |
465 url_loader_client_ = std::move(url_loader_client); | 470 url_loader_client_ = std::move(url_loader_client); |
466 return true; | 471 return true; |
467 } | 472 } |
468 | 473 |
469 ServiceWorkerMetrics::EventType ServiceWorkerFetchDispatcher::GetEventType() | 474 ServiceWorkerMetrics::EventType ServiceWorkerFetchDispatcher::GetEventType() |
470 const { | 475 const { |
471 if (request_->fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) | 476 if (request_->fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) |
472 return ServiceWorkerMetrics::EventType::FOREIGN_FETCH; | 477 return ServiceWorkerMetrics::EventType::FOREIGN_FETCH; |
473 return ResourceTypeToEventType(resource_type_); | 478 return ResourceTypeToEventType(resource_type_); |
474 } | 479 } |
475 | 480 |
476 } // namespace content | 481 } // namespace content |
OLD | NEW |