| 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 |