| Index: chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
|
| diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
|
| index ef5d5c416c517d104df1545a7a32ef83e320887a..d76460bedc3da90816e3c529069cf540cfec0778 100644
|
| --- a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
|
| +++ b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
|
| @@ -345,6 +345,26 @@ void LogMainFrameMetricsOnUIThread(const GURL& url,
|
| }
|
| }
|
|
|
| +void NotifyUIThreadOfRequestStarted(
|
| + const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
|
| + const content::GlobalRequestID& request_id,
|
| + ResourceType resource_type,
|
| + base::TimeTicks request_creation_time) {
|
| + content::WebContents* web_contents = web_contents_getter.Run();
|
| +
|
| + if (!web_contents)
|
| + return;
|
| +
|
| + page_load_metrics::MetricsWebContentsObserver* metrics_observer =
|
| + page_load_metrics::MetricsWebContentsObserver::FromWebContents(
|
| + web_contents);
|
| +
|
| + if (metrics_observer) {
|
| + metrics_observer->OnRequestStarted(request_id, resource_type,
|
| + request_creation_time);
|
| + }
|
| +}
|
| +
|
| void NotifyUIThreadOfRequestComplete(
|
| const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
|
| const GURL& url,
|
| @@ -444,6 +464,15 @@ void ChromeResourceDispatcherHostDelegate::RequestBeginning(
|
|
|
| const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request);
|
|
|
| + // TODO(petewil): Unify the safe browsing request and the metrics observer
|
| + // request if possible so we only have to cross to the main thread once.
|
| + BrowserThread::PostTask(
|
| + BrowserThread::UI, FROM_HERE,
|
| + base::Bind(&NotifyUIThreadOfRequestStarted,
|
| + info->GetWebContentsGetterForRequest(),
|
| + info->GetGlobalRequestID(), info->GetResourceType(),
|
| + request->creation_time()));
|
| +
|
| // The lowering of request priority causes issues with scheduling, since
|
| // content::ResourceScheduler uses it to delay and throttle requests. This is
|
| // disabled only on Android, as the prerenders are not likely to compete with
|
|
|