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

Side by Side Diff: chrome/browser/prerender/prerender_tab_helper.cc

Issue 2738783002: Prerender: Remove PerceivedPLT histograms (Closed)
Patch Set: remove other unused methods Created 3 years, 9 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 unified diff | Download patch
OLDNEW
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/prerender/prerender_tab_helper.h" 5 #include "chrome/browser/prerender/prerender_tab_helper.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/metrics/histogram_macros.h" 8 #include "base/metrics/histogram_macros.h"
9 #include "base/time/time.h" 9 #include "base/time/time.h"
10 #include "chrome/browser/prerender/prerender_histograms.h" 10 #include "chrome/browser/prerender/prerender_histograms.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 48
49 url_ = navigation_handle->GetURL(); 49 url_ = navigation_handle->GetURL();
50 PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); 50 PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
51 if (!prerender_manager) 51 if (!prerender_manager)
52 return; 52 return;
53 if (prerender_manager->IsWebContentsPrerendering(web_contents(), NULL)) 53 if (prerender_manager->IsWebContentsPrerendering(web_contents(), NULL))
54 return; 54 return;
55 prerender_manager->RecordNavigation(url_); 55 prerender_manager->RecordNavigation(url_);
56 } 56 }
57 57
58 void PrerenderTabHelper::DidStopLoading() {
59 // Compute the PPLT metric and report it in a histogram, if needed. If the
60 // page is still prerendering, record the not swapped in page load time
61 // instead.
62 if (!pplt_load_start_.is_null()) {
63 base::TimeTicks now = GetTimeTicksFromPrerenderManager();
64 if (IsPrerendering()) {
65 PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
66 if (prerender_manager) {
67 prerender_manager->RecordPageLoadTimeNotSwappedIn(
68 origin_, now - pplt_load_start_, url_);
69 } else {
70 NOTREACHED();
71 }
72 } else {
73 double fraction_elapsed_at_swapin = -1.0;
74 if (!actual_load_start_.is_null()) {
75 double plt = (now - actual_load_start_).InMillisecondsF();
76 if (plt > 0.0) {
77 fraction_elapsed_at_swapin = 1.0 -
78 (now - pplt_load_start_).InMillisecondsF() / plt;
79 } else {
80 fraction_elapsed_at_swapin = 1.0;
81 }
82 DCHECK_GE(fraction_elapsed_at_swapin, 0.0);
83 DCHECK_LE(fraction_elapsed_at_swapin, 1.0);
84 }
85
86 RecordPerceivedPageLoadTime(
87 now - pplt_load_start_, fraction_elapsed_at_swapin);
88 }
89 }
90
91 // Reset the PPLT metric.
92 pplt_load_start_ = base::TimeTicks();
93 actual_load_start_ = base::TimeTicks();
94 }
95
96 void PrerenderTabHelper::DidStartNavigation( 58 void PrerenderTabHelper::DidStartNavigation(
97 content::NavigationHandle* navigation_handle) { 59 content::NavigationHandle* navigation_handle) {
98 if (navigation_handle->IsSameDocument()) 60 if (navigation_handle->IsSameDocument())
99 return; 61 return;
100 62
101 // Determine the navigation type. 63 // Determine the navigation type.
102 PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); 64 PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
103 if (prerender_manager && 65 if (prerender_manager &&
104 prerender_manager->IsWebContentsPrerendering(web_contents(), &origin_)) { 66 prerender_manager->IsWebContentsPrerendering(web_contents(), &origin_)) {
105 navigation_type_ = NAVIGATION_TYPE_PRERENDERED; 67 navigation_type_ = NAVIGATION_TYPE_PRERENDERED;
106 } else { 68 } else {
107 navigation_type_ = NAVIGATION_TYPE_NORMAL; 69 navigation_type_ = NAVIGATION_TYPE_NORMAL;
108 } 70 }
109 71
110 if (!navigation_handle->IsInMainFrame()) 72 if (!navigation_handle->IsInMainFrame())
111 return; 73 return;
112 74
113 // Record PPLT state for the beginning of a new navigation.
114 pplt_load_start_ = GetTimeTicksFromPrerenderManager();
115 actual_load_start_ = base::TimeTicks();
116
117 MainFrameUrlDidChange(navigation_handle->GetURL()); 75 MainFrameUrlDidChange(navigation_handle->GetURL());
118 } 76 }
119 77
120 void PrerenderTabHelper::MainFrameUrlDidChange(const GURL& url) { 78 void PrerenderTabHelper::MainFrameUrlDidChange(const GURL& url) {
121 url_ = url; 79 url_ = url;
122 } 80 }
123 81
124 PrerenderManager* PrerenderTabHelper::MaybeGetPrerenderManager() const { 82 PrerenderManager* PrerenderTabHelper::MaybeGetPrerenderManager() const {
125 return PrerenderManagerFactory::GetForBrowserContext( 83 return PrerenderManagerFactory::GetForBrowserContext(
126 web_contents()->GetBrowserContext()); 84 web_contents()->GetBrowserContext());
(...skipping 13 matching lines...) Expand all
140 98
141 bool PrerenderTabHelper::IsPrerendering() { 99 bool PrerenderTabHelper::IsPrerendering() {
142 PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); 100 PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
143 if (!prerender_manager) 101 if (!prerender_manager)
144 return false; 102 return false;
145 return prerender_manager->IsWebContentsPrerendering(web_contents(), NULL); 103 return prerender_manager->IsWebContentsPrerendering(web_contents(), NULL);
146 } 104 }
147 105
148 void PrerenderTabHelper::PrerenderSwappedIn() { 106 void PrerenderTabHelper::PrerenderSwappedIn() {
149 // Ensure we are not prerendering any more. 107 // Ensure we are not prerendering any more.
150 DCHECK_EQ(NAVIGATION_TYPE_PRERENDERED, navigation_type_); 108 DCHECK_EQ(NAVIGATION_TYPE_PRERENDERED, navigation_type_);
mattcary 2017/03/27 14:57:50 This is the only place navigation_type_ is used AF
pasko 2017/03/27 16:50:40 oh yes, thanks! I wanted to nuke that too. Forgot.
151 DCHECK(!IsPrerendering()); 109 DCHECK(!IsPrerendering());
152 swap_ticks_ = GetTimeTicksFromPrerenderManager(); 110 swap_ticks_ = GetTimeTicksFromPrerenderManager();
153 if (pplt_load_start_.is_null()) {
154 // If we have already finished loading, report a 0 PPLT.
155 RecordPerceivedPageLoadTime(base::TimeDelta(), 1.0);
156 } else {
157 // If we have not finished loading yet, record the actual load start, and
158 // rebase the start time to now.
159 actual_load_start_ = pplt_load_start_;
160 pplt_load_start_ = GetTimeTicksFromPrerenderManager();
161 }
162 }
163
164 void PrerenderTabHelper::RecordPerceivedPageLoadTime(
165 base::TimeDelta perceived_page_load_time,
166 double fraction_plt_elapsed_at_swap_in) {
167 DCHECK(!IsPrerendering());
168 PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
169 if (!prerender_manager)
170 return;
171
172 prerender_manager->RecordPerceivedPageLoadTime(
173 origin_, navigation_type_, perceived_page_load_time,
174 fraction_plt_elapsed_at_swap_in, url_);
175 } 111 }
176 112
177 } // namespace prerender 113 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_tab_helper.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698