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 |