Chromium Code Reviews| 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 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 438 request.load_flags = original_request->load_flags(); | 438 request.load_flags = original_request->load_flags(); |
| 439 // Set to SUB_RESOURCE because we shouldn't trigger NavigationResourceThrottle | 439 // Set to SUB_RESOURCE because we shouldn't trigger NavigationResourceThrottle |
| 440 // for the service worker navigation preload request. | 440 // for the service worker navigation preload request. |
| 441 request.resource_type = RESOURCE_TYPE_SUB_RESOURCE; | 441 request.resource_type = RESOURCE_TYPE_SUB_RESOURCE; |
| 442 request.priority = original_request->priority(); | 442 request.priority = original_request->priority(); |
| 443 request.skip_service_worker = SkipServiceWorker::ALL; | 443 request.skip_service_worker = SkipServiceWorker::ALL; |
| 444 request.do_not_prompt_for_login = true; | 444 request.do_not_prompt_for_login = true; |
| 445 request.render_frame_id = original_info->GetRenderFrameID(); | 445 request.render_frame_id = original_info->GetRenderFrameID(); |
| 446 request.is_main_frame = original_info->IsMainFrame(); | 446 request.is_main_frame = original_info->IsMainFrame(); |
| 447 request.parent_is_main_frame = original_info->ParentIsMainFrame(); | 447 request.parent_is_main_frame = original_info->ParentIsMainFrame(); |
| 448 request.enable_load_timing = original_info->is_load_timing_enabled(); | |
| 449 request.report_raw_headers = original_info->ShouldReportRawHeaders(); | |
| 448 | 450 |
| 449 DCHECK(net::HttpUtil::IsValidHeaderValue( | 451 DCHECK(net::HttpUtil::IsValidHeaderValue( |
| 450 version_->navigation_preload_state().header)); | 452 version_->navigation_preload_state().header)); |
| 451 ServiceWorkerMetrics::RecordNavigationPreloadRequestHeaderSize( | 453 ServiceWorkerMetrics::RecordNavigationPreloadRequestHeaderSize( |
| 452 version_->navigation_preload_state().header.length()); | 454 version_->navigation_preload_state().header.length()); |
| 453 request.headers = "Service-Worker-Navigation-Preload: " + | 455 request.headers = "Service-Worker-Navigation-Preload: " + |
| 454 version_->navigation_preload_state().header; | 456 version_->navigation_preload_state().header; |
| 455 | 457 |
| 456 const int request_id = ResourceDispatcherHostImpl::Get()->MakeRequestID(); | 458 const int request_id = ResourceDispatcherHostImpl::Get()->MakeRequestID(); |
| 457 DCHECK_LT(request_id, -1); | 459 DCHECK_LT(request_id, -1); |
| 458 | 460 |
| 459 preload_handle_ = mojom::FetchEventPreloadHandle::New(); | 461 preload_handle_ = mojom::FetchEventPreloadHandle::New(); |
| 460 mojom::URLLoaderClientPtr url_loader_client_ptr; | 462 mojom::URLLoaderClientPtr url_loader_client_ptr; |
| 461 preload_handle_->url_loader_client_request = | 463 preload_handle_->url_loader_client_request = |
| 462 mojo::MakeRequest(&url_loader_client_ptr); | 464 mojo::MakeRequest(&url_loader_client_ptr); |
| 463 auto url_loader_client = base::MakeUnique<DelegatingURLLoaderClient>( | 465 auto url_loader_client = base::MakeUnique<DelegatingURLLoaderClient>( |
| 464 std::move(url_loader_client_ptr)); | 466 std::move(url_loader_client_ptr)); |
| 465 mojom::URLLoaderClientAssociatedPtrInfo url_loader_client_associated_ptr_info; | 467 mojom::URLLoaderClientAssociatedPtrInfo url_loader_client_associated_ptr_info; |
| 466 url_loader_client->Bind(&url_loader_client_associated_ptr_info, | 468 url_loader_client->Bind(&url_loader_client_associated_ptr_info, |
| 467 url_loader_factory_.associated_group()); | 469 url_loader_factory_.associated_group()); |
| 468 mojom::URLLoaderAssociatedPtr url_loader_associated_ptr; | 470 mojom::URLLoaderAssociatedPtr url_loader_associated_ptr; |
| 469 | 471 |
| 472 preload_handle_->sent_timestamp = | |
| 473 base::TimeTicks::Now().ToInternalValue() / | |
| 474 static_cast<double>(base::Time::kMicrosecondsPerSecond); | |
|
falken
2017/01/17 14:38:36
Is this converting microseconds to seconds? ToInte
horo
2017/01/18 14:25:02
Humm...I think there is no other way.
There is the
| |
| 475 preload_handle_->sent_wall_time = base::Time::Now().ToDoubleT(); | |
|
falken
2017/01/17 14:38:36
Could we use Mojo time types instead of these, and
horo
2017/01/18 14:25:02
Done.
| |
| 476 | |
| 470 url_loader_factory_->CreateLoaderAndStart( | 477 url_loader_factory_->CreateLoaderAndStart( |
| 471 mojo::MakeRequest(&url_loader_associated_ptr, | 478 mojo::MakeRequest(&url_loader_associated_ptr, |
| 472 url_loader_factory_.associated_group()), | 479 url_loader_factory_.associated_group()), |
| 473 original_info->GetRouteID(), request_id, request, | 480 original_info->GetRouteID(), request_id, request, |
| 474 std::move(url_loader_client_associated_ptr_info)); | 481 std::move(url_loader_client_associated_ptr_info)); |
| 475 | 482 |
| 476 std::unique_ptr<DelegatingURLLoader> url_loader( | 483 std::unique_ptr<DelegatingURLLoader> url_loader( |
| 477 new DelegatingURLLoader(std::move(url_loader_associated_ptr))); | 484 new DelegatingURLLoader(std::move(url_loader_associated_ptr))); |
| 478 preload_handle_->url_loader = url_loader->CreateInterfacePtrAndBind(); | 485 preload_handle_->url_loader = url_loader->CreateInterfacePtrAndBind(); |
| 479 url_loader_ = std::move(url_loader); | 486 url_loader_ = std::move(url_loader); |
| 480 url_loader_client_ = std::move(url_loader_client); | 487 url_loader_client_ = std::move(url_loader_client); |
| 481 } | 488 } |
| 482 | 489 |
| 483 ServiceWorkerMetrics::EventType ServiceWorkerFetchDispatcher::GetEventType() | 490 ServiceWorkerMetrics::EventType ServiceWorkerFetchDispatcher::GetEventType() |
| 484 const { | 491 const { |
| 485 if (request_->fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) | 492 if (request_->fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) |
| 486 return ServiceWorkerMetrics::EventType::FOREIGN_FETCH; | 493 return ServiceWorkerMetrics::EventType::FOREIGN_FETCH; |
| 487 return ResourceTypeToEventType(resource_type_); | 494 return ResourceTypeToEventType(resource_type_); |
| 488 } | 495 } |
| 489 | 496 |
| 490 } // namespace content | 497 } // namespace content |
| OLD | NEW |