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

Unified Diff: chrome/browser/prerender/prerender_tab_helper.cc

Issue 2423383002: [Prerender] first contentful paint histograms. (Closed)
Patch Set: comments Created 4 years, 1 month 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/prerender/prerender_tab_helper.cc
diff --git a/chrome/browser/prerender/prerender_tab_helper.cc b/chrome/browser/prerender/prerender_tab_helper.cc
index 096705dc8ab5c57a1f271d56271684e192e30a71..1aae2ea609343c5e18f3a7a7c6bb8c5bf4d76c70 100644
--- a/chrome/browser/prerender/prerender_tab_helper.cc
+++ b/chrome/browser/prerender/prerender_tab_helper.cc
@@ -26,16 +26,7 @@ PrerenderTabHelper::PrerenderTabHelper(content::WebContents* web_contents)
origin_(ORIGIN_NONE),
next_load_is_control_prerender_(false),
next_load_origin_(ORIGIN_NONE),
- weak_factory_(this) {
- // Determine if this is a prerender.
- PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
- if (prerender_manager &&
- prerender_manager->IsWebContentsPrerendering(web_contents, &origin_)) {
- navigation_type_ = NAVIGATION_TYPE_PRERENDERED;
- } else {
- navigation_type_ = NAVIGATION_TYPE_NORMAL;
- }
-}
+ weak_factory_(this) {}
PrerenderTabHelper::~PrerenderTabHelper() {
}
@@ -106,12 +97,22 @@ void PrerenderTabHelper::DidStartProvisionalLoadForFrame(
const GURL& validated_url,
bool is_error_page,
bool is_iframe_srcdoc) {
+ // Determine the navigation type.
+ PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
+ if (prerender_manager &&
+ prerender_manager->IsWebContentsPrerendering(web_contents(), &origin_)) {
+ navigation_type_ = NAVIGATION_TYPE_PRERENDERED;
+ } else {
+ navigation_type_ = NAVIGATION_TYPE_NORMAL;
+ }
+
if (render_frame_host->GetParent())
return;
// Record PPLT state for the beginning of a new navigation.
pplt_load_start_ = GetTimeTicksFromPrerenderManager();
actual_load_start_ = base::TimeTicks();
+ last_load_ = GetTimeTicksFromPrerenderManager();
Bryan McQuade 2016/11/18 15:46:42 the reference start time that all page load metric
mattcary 2016/11/21 11:05:00 Done, although there seems no nice way to test due
if (next_load_is_control_prerender_) {
DCHECK_EQ(NAVIGATION_TYPE_NORMAL, navigation_type_);
@@ -156,10 +157,10 @@ void PrerenderTabHelper::PrerenderSwappedIn() {
// Ensure we are not prerendering any more.
DCHECK_EQ(NAVIGATION_TYPE_PRERENDERED, navigation_type_);
DCHECK(!IsPrerendering());
+ last_swap_ = GetTimeTicksFromPrerenderManager();
if (pplt_load_start_.is_null()) {
// If we have already finished loading, report a 0 PPLT.
RecordPerceivedPageLoadTime(base::TimeDelta(), 1.0);
- DCHECK_EQ(NAVIGATION_TYPE_NORMAL, navigation_type_);
} else {
// If we have not finished loading yet, record the actual load start, and
// rebase the start time to now.
@@ -173,6 +174,17 @@ void PrerenderTabHelper::WouldHavePrerenderedNextLoad(Origin origin) {
next_load_origin_ = origin;
}
+bool PrerenderTabHelper::LoadToPerceivedDelta(base::TimeDelta* delta) {
+ if (!last_load_.is_null() && !last_swap_.is_null() &&
+ last_swap_ >= last_load_) {
+ if (delta) {
+ *delta = last_swap_ - last_load_;
+ }
+ return true;
+ }
+ return false;
+}
+
void PrerenderTabHelper::RecordPerceivedPageLoadTime(
base::TimeDelta perceived_page_load_time,
double fraction_plt_elapsed_at_swap_in) {
@@ -188,10 +200,6 @@ void PrerenderTabHelper::RecordPerceivedPageLoadTime(
prerender_manager->RecordPerceivedPageLoadTime(
origin_, navigation_type_, perceived_page_load_time,
fraction_plt_elapsed_at_swap_in, url_);
-
- // Reset state for the next navigation.
- navigation_type_ = NAVIGATION_TYPE_NORMAL;
- origin_ = ORIGIN_NONE;
}
} // namespace prerender

Powered by Google App Engine
This is Rietveld 408576698