Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(474)

Unified Diff: chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc

Issue 2218583002: [page_load_metrics] Log cache warmth ratios at parse stop (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: thestig@ review Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
diff --git a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
index 11bc778c13a284f484290a603645fbfcfafd4c24..53d4e668e0e4c9deecc21e4aad32cbbe508dbd93 100644
--- a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
+++ b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
@@ -23,6 +23,7 @@
#include "chrome/browser/download/download_resource_throttle.h"
#include "chrome/browser/mod_pagespeed/mod_pagespeed_metrics.h"
#include "chrome/browser/net/resource_prefetch_predictor_observer.h"
+#include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h"
#include "chrome/browser/plugins/plugin_prefs.h"
#include "chrome/browser/prerender/prerender_manager.h"
#include "chrome/browser/prerender/prerender_manager_factory.h"
@@ -160,11 +161,9 @@ prerender::PrerenderManager* GetPrerenderManager(
return prerender::PrerenderManagerFactory::GetForProfile(profile);
}
-void UpdatePrerenderNetworkBytesCallback(
- const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
- int64_t bytes) {
+void UpdatePrerenderNetworkBytesCallback(content::WebContents* web_contents,
+ int64_t bytes) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- content::WebContents* web_contents = web_contents_getter.Run();
// PrerenderContents::FromWebContents handles the NULL case.
prerender::PrerenderContents* prerender_contents =
prerender::PrerenderContents::FromWebContents(web_contents);
@@ -281,17 +280,13 @@ void AppendComponentUpdaterThrottles(
}
#endif // !defined(DISABLE_NACL)
-// This function is called in RequestComplete to log metrics about main frame
-// resources.
-void LogMainFrameMetricsOnUIThread(
- const GURL& url,
- int net_error,
- base::TimeDelta request_loading_time,
- const content::ResourceRequestInfo::WebContentsGetter&
- web_contents_getter) {
- content::WebContents* web_contents = web_contents_getter.Run();
- if (!web_contents)
- return;
+// This function is called in NotifyUIThreadOfRequestComplete to log metrics
+// about main frame resources.
+void LogMainFrameMetricsOnUIThread(const GURL& url,
+ int net_error,
+ base::TimeDelta request_loading_time,
+ content::WebContents* web_contents) {
+ DCHECK(web_contents);
Profile* profile =
Profile::FromBrowserContext(web_contents->GetBrowserContext());
@@ -343,6 +338,32 @@ void LogMainFrameMetricsOnUIThread(
}
}
+void NotifyUIThreadOfRequestComplete(
+ const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
+ const GURL& url,
+ content::ResourceType resource_type,
+ bool was_cached,
+ int net_error,
+ int64_t total_received_bytes,
+ base::TimeDelta request_loading_time) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ content::WebContents* web_contents = web_contents_getter.Run();
+ if (!web_contents)
+ return;
+ if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME) {
+ LogMainFrameMetricsOnUIThread(url, net_error, request_loading_time,
+ web_contents);
+ }
+ if (!was_cached)
+ UpdatePrerenderNetworkBytesCallback(web_contents, total_received_bytes);
+ page_load_metrics::MetricsWebContentsObserver* metrics_observer =
+ page_load_metrics::MetricsWebContentsObserver::FromWebContents(
+ web_contents);
+ if (metrics_observer) {
+ metrics_observer->OnRequestComplete(resource_type, was_cached, net_error);
+ }
+}
+
} // namespace
ChromeResourceDispatcherHostDelegate::ChromeResourceDispatcherHostDelegate()
@@ -790,25 +811,18 @@ void ChromeResourceDispatcherHostDelegate::OnRequestRedirected(
// Notification that a request has completed.
void ChromeResourceDispatcherHostDelegate::RequestComplete(
net::URLRequest* url_request) {
- // Jump on the UI thread and inform the prerender about the bytes.
+ if (!url_request)
+ return;
const ResourceRequestInfo* info =
ResourceRequestInfo::ForRequest(url_request);
- if (url_request && !url_request->was_cached()) {
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- base::Bind(&UpdatePrerenderNetworkBytesCallback,
- info->GetWebContentsGetterForRequest(),
- url_request->GetTotalReceivedBytes()));
- }
-
- if (url_request &&
- info->GetResourceType() == content::RESOURCE_TYPE_MAIN_FRAME) {
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&LogMainFrameMetricsOnUIThread, url_request->url(),
- url_request->status().error(),
- base::TimeTicks::Now() - url_request->creation_time(),
- info->GetWebContentsGetterForRequest()));
- }
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(&NotifyUIThreadOfRequestComplete,
+ info->GetWebContentsGetterForRequest(), url_request->url(),
+ info->GetResourceType(), url_request->was_cached(),
+ url_request->status().error(),
+ url_request->GetTotalReceivedBytes(),
+ base::TimeTicks::Now() - url_request->creation_time()));
}
bool ChromeResourceDispatcherHostDelegate::ShouldEnableLoFiMode(
« no previous file with comments | « chrome/browser/page_load_metrics/page_load_metrics_observer.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698