OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/loader/chrome_resource_dispatcher_host_delegate.h" | 5 #include "chrome/browser/loader/chrome_resource_dispatcher_host_delegate.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 UMA_HISTOGRAM_LONG_TIMES("Net.NTP.Local.RequestTime2.Success", | 344 UMA_HISTOGRAM_LONG_TIMES("Net.NTP.Local.RequestTime2.Success", |
345 request_loading_time); | 345 request_loading_time); |
346 } else if (net_error == net::ERR_ABORTED) { | 346 } else if (net_error == net::ERR_ABORTED) { |
347 UMA_HISTOGRAM_LONG_TIMES("Net.NTP.Local.RequestTime2.ErrAborted", | 347 UMA_HISTOGRAM_LONG_TIMES("Net.NTP.Local.RequestTime2.ErrAborted", |
348 request_loading_time); | 348 request_loading_time); |
349 } | 349 } |
350 } | 350 } |
351 } | 351 } |
352 | 352 |
353 void NotifyUIThreadOfRequestComplete( | 353 void NotifyUIThreadOfRequestComplete( |
354 const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter, | 354 const content::ResourceRequestInfo::RenderFrameHostGetter& |
| 355 render_frame_host_getter, |
355 const GURL& url, | 356 const GURL& url, |
356 const content::GlobalRequestID& request_id, | 357 const content::GlobalRequestID& request_id, |
| 358 int frame_tree_node_id, |
357 ResourceType resource_type, | 359 ResourceType resource_type, |
358 bool was_cached, | 360 bool was_cached, |
359 bool used_data_reduction_proxy, | 361 bool used_data_reduction_proxy, |
360 int net_error, | 362 int net_error, |
361 int64_t total_received_bytes, | 363 int64_t total_received_bytes, |
362 int64_t raw_body_bytes, | 364 int64_t raw_body_bytes, |
363 int64_t original_content_length, | 365 int64_t original_content_length, |
364 base::TimeTicks request_creation_time, | 366 base::TimeTicks request_creation_time, |
365 base::TimeDelta request_loading_time) { | 367 base::TimeDelta request_loading_time) { |
366 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 368 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
367 content::WebContents* web_contents = web_contents_getter.Run(); | 369 content::RenderFrameHost* render_frame_host = render_frame_host_getter.Run(); |
| 370 if (!render_frame_host) |
| 371 return; |
| 372 content::WebContents* web_contents = |
| 373 content::WebContents::FromRenderFrameHost(render_frame_host); |
368 if (!web_contents) | 374 if (!web_contents) |
369 return; | 375 return; |
| 376 |
370 if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME) { | 377 if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME) { |
371 LogMainFrameMetricsOnUIThread(url, net_error, request_loading_time, | 378 LogMainFrameMetricsOnUIThread(url, net_error, request_loading_time, |
372 web_contents); | 379 web_contents); |
373 } | 380 } |
374 if (!was_cached) { | 381 if (!was_cached) { |
375 UpdatePrerenderNetworkBytesCallback(web_contents, total_received_bytes); | 382 UpdatePrerenderNetworkBytesCallback(web_contents, total_received_bytes); |
376 #if defined(OS_ANDROID) | 383 #if defined(OS_ANDROID) |
377 offline_pages::BackgroundLoaderOffliner* background_loader = | 384 offline_pages::BackgroundLoaderOffliner* background_loader = |
378 offline_pages::BackgroundLoaderOffliner::FromWebContents(web_contents); | 385 offline_pages::BackgroundLoaderOffliner::FromWebContents(web_contents); |
379 | 386 |
380 if (background_loader) | 387 if (background_loader) |
381 background_loader->OnNetworkBytesChanged(total_received_bytes); | 388 background_loader->OnNetworkBytesChanged(total_received_bytes); |
382 #endif // OS_ANDROID | 389 #endif // OS_ANDROID |
383 } | 390 } |
384 page_load_metrics::MetricsWebContentsObserver* metrics_observer = | 391 page_load_metrics::MetricsWebContentsObserver* metrics_observer = |
385 page_load_metrics::MetricsWebContentsObserver::FromWebContents( | 392 page_load_metrics::MetricsWebContentsObserver::FromWebContents( |
386 web_contents); | 393 web_contents); |
387 if (metrics_observer) { | 394 if (metrics_observer) { |
388 metrics_observer->OnRequestComplete( | 395 metrics_observer->OnRequestComplete( |
389 request_id, resource_type, was_cached, used_data_reduction_proxy, | 396 url, render_frame_host->GetFrameTreeNodeId(), request_id, resource_type, |
390 raw_body_bytes, original_content_length, request_creation_time); | 397 was_cached, used_data_reduction_proxy, raw_body_bytes, |
| 398 original_content_length, request_creation_time); |
391 } | 399 } |
392 } | 400 } |
393 | 401 |
394 } // namespace | 402 } // namespace |
395 | 403 |
396 ChromeResourceDispatcherHostDelegate::ChromeResourceDispatcherHostDelegate() | 404 ChromeResourceDispatcherHostDelegate::ChromeResourceDispatcherHostDelegate() |
397 : download_request_limiter_(g_browser_process->download_request_limiter()), | 405 : download_request_limiter_(g_browser_process->download_request_limiter()), |
398 safe_browsing_(g_browser_process->safe_browsing_service()) | 406 safe_browsing_(g_browser_process->safe_browsing_service()) |
399 #if BUILDFLAG(ENABLE_EXTENSIONS) | 407 #if BUILDFLAG(ENABLE_EXTENSIONS) |
400 , user_script_listener_(new extensions::UserScriptListener()) | 408 , user_script_listener_(new extensions::UserScriptListener()) |
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
850 data_reduction_proxy::DataReductionProxyData::GetData(*url_request); | 858 data_reduction_proxy::DataReductionProxyData::GetData(*url_request); |
851 bool used_data_reduction_proxy = data && data->used_data_reduction_proxy(); | 859 bool used_data_reduction_proxy = data && data->used_data_reduction_proxy(); |
852 int64_t original_content_length = | 860 int64_t original_content_length = |
853 used_data_reduction_proxy | 861 used_data_reduction_proxy |
854 ? data_reduction_proxy::util::CalculateEffectiveOCL(*url_request) | 862 ? data_reduction_proxy::util::CalculateEffectiveOCL(*url_request) |
855 : url_request->GetRawBodyBytes(); | 863 : url_request->GetRawBodyBytes(); |
856 | 864 |
857 BrowserThread::PostTask( | 865 BrowserThread::PostTask( |
858 BrowserThread::UI, FROM_HERE, | 866 BrowserThread::UI, FROM_HERE, |
859 base::Bind(&NotifyUIThreadOfRequestComplete, | 867 base::Bind(&NotifyUIThreadOfRequestComplete, |
860 info->GetWebContentsGetterForRequest(), url_request->url(), | 868 info->GetRenderFrameHostGetterForRequest(), url_request->url(), |
861 info->GetGlobalRequestID(), info->GetResourceType(), | 869 info->GetGlobalRequestID(), info->GetFrameTreeNodeId(), |
862 url_request->was_cached(), used_data_reduction_proxy, | 870 info->GetResourceType(), url_request->was_cached(), |
863 net_error, url_request->GetTotalReceivedBytes(), | 871 used_data_reduction_proxy, net_error, |
| 872 url_request->GetTotalReceivedBytes(), |
864 url_request->GetRawBodyBytes(), original_content_length, | 873 url_request->GetRawBodyBytes(), original_content_length, |
865 url_request->creation_time(), | 874 url_request->creation_time(), |
866 base::TimeTicks::Now() - url_request->creation_time())); | 875 base::TimeTicks::Now() - url_request->creation_time())); |
867 } | 876 } |
868 | 877 |
869 content::PreviewsState ChromeResourceDispatcherHostDelegate::GetPreviewsState( | 878 content::PreviewsState ChromeResourceDispatcherHostDelegate::GetPreviewsState( |
870 const net::URLRequest& url_request, | 879 const net::URLRequest& url_request, |
871 content::ResourceContext* resource_context) { | 880 content::ResourceContext* resource_context) { |
872 ProfileIOData* io_data = ProfileIOData::FromResourceContext(resource_context); | 881 ProfileIOData* io_data = ProfileIOData::FromResourceContext(resource_context); |
873 data_reduction_proxy::DataReductionProxyIOData* data_reduction_proxy_io_data = | 882 data_reduction_proxy::DataReductionProxyIOData* data_reduction_proxy_io_data = |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
938 base::Bind(&ChromeResourceDispatcherHostDelegate::OnAbortedFrameLoad, | 947 base::Bind(&ChromeResourceDispatcherHostDelegate::OnAbortedFrameLoad, |
939 base::Unretained(this), url, request_loading_time)); | 948 base::Unretained(this), url, request_loading_time)); |
940 return; | 949 return; |
941 } | 950 } |
942 | 951 |
943 std::string metric_name = (request_loading_time.InMilliseconds() < 100 ? | 952 std::string metric_name = (request_loading_time.InMilliseconds() < 100 ? |
944 "Net.ErrAborted.Fast" : "Net.ErrAborted.Slow"); | 953 "Net.ErrAborted.Fast" : "Net.ErrAborted.Slow"); |
945 rappor::SampleDomainAndRegistryFromGURL( | 954 rappor::SampleDomainAndRegistryFromGURL( |
946 g_browser_process->rappor_service(), metric_name, url); | 955 g_browser_process->rappor_service(), metric_name, url); |
947 } | 956 } |
OLD | NEW |