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

Side by Side Diff: chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc

Issue 2699933003: Generalize abort tracking to page end state tracking (Closed)
Patch Set: fix histogram typo Created 3 years, 10 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/page_load_metrics/observers/aborts_page_load_metrics_ob server.h" 5 #include "chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_ob server.h"
6 6
7 #include "chrome/browser/page_load_metrics/page_load_metrics_util.h" 7 #include "chrome/browser/page_load_metrics/page_load_metrics_util.h"
8 8
9 using page_load_metrics::UserAbortType; 9 using page_load_metrics::PageAbortReason;
10 10
11 namespace internal { 11 namespace internal {
12 12
13 const char kHistogramAbortClientRedirectBeforeCommit[] =
14 "PageLoad.Experimental.AbortTiming.ClientRedirect.BeforeCommit";
15 const char kHistogramAbortForwardBackBeforeCommit[] = 13 const char kHistogramAbortForwardBackBeforeCommit[] =
16 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation.BeforeCommit"; 14 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation.BeforeCommit";
17 const char kHistogramAbortReloadBeforeCommit[] = 15 const char kHistogramAbortReloadBeforeCommit[] =
18 "PageLoad.Experimental.AbortTiming.Reload.BeforeCommit"; 16 "PageLoad.Experimental.AbortTiming.Reload.BeforeCommit";
19 const char kHistogramAbortNewNavigationBeforeCommit[] = 17 const char kHistogramAbortNewNavigationBeforeCommit[] =
20 "PageLoad.Experimental.AbortTiming.NewNavigation.BeforeCommit"; 18 "PageLoad.Experimental.AbortTiming.NewNavigation.BeforeCommit";
21 const char kHistogramAbortStopBeforeCommit[] = 19 const char kHistogramAbortStopBeforeCommit[] =
22 "PageLoad.Experimental.AbortTiming.Stop.BeforeCommit"; 20 "PageLoad.Experimental.AbortTiming.Stop.BeforeCommit";
23 const char kHistogramAbortCloseBeforeCommit[] = 21 const char kHistogramAbortCloseBeforeCommit[] =
24 "PageLoad.Experimental.AbortTiming.Close.BeforeCommit"; 22 "PageLoad.Experimental.AbortTiming.Close.BeforeCommit";
25 const char kHistogramAbortBackgroundBeforeCommit[] = 23 const char kHistogramAbortBackgroundBeforeCommit[] =
26 "PageLoad.Experimental.AbortTiming.Background.BeforeCommit"; 24 "PageLoad.Experimental.AbortTiming.Background.BeforeCommit";
27 const char kHistogramAbortOtherBeforeCommit[] = 25 const char kHistogramAbortOtherBeforeCommit[] =
28 "PageLoad.Experimental.AbortTiming.Other.BeforeCommit"; 26 "PageLoad.Experimental.AbortTiming.Other.BeforeCommit";
29 27
30 const char kHistogramAbortClientRedirectBeforePaint[] =
31 "PageLoad.Experimental.AbortTiming.ClientRedirect.AfterCommit.BeforePaint";
32 const char kHistogramAbortForwardBackBeforePaint[] = 28 const char kHistogramAbortForwardBackBeforePaint[] =
33 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation.AfterCommit." 29 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation.AfterCommit."
34 "BeforePaint"; 30 "BeforePaint";
35 const char kHistogramAbortReloadBeforePaint[] = 31 const char kHistogramAbortReloadBeforePaint[] =
36 "PageLoad.Experimental.AbortTiming.Reload.AfterCommit.BeforePaint"; 32 "PageLoad.Experimental.AbortTiming.Reload.AfterCommit.BeforePaint";
37 const char kHistogramAbortNewNavigationBeforePaint[] = 33 const char kHistogramAbortNewNavigationBeforePaint[] =
38 "PageLoad.Experimental.AbortTiming.NewNavigation.AfterCommit.BeforePaint"; 34 "PageLoad.Experimental.AbortTiming.NewNavigation.AfterCommit.BeforePaint";
39 const char kHistogramAbortStopBeforePaint[] = 35 const char kHistogramAbortStopBeforePaint[] =
40 "PageLoad.Experimental.AbortTiming.Stop.AfterCommit.BeforePaint"; 36 "PageLoad.Experimental.AbortTiming.Stop.AfterCommit.BeforePaint";
41 const char kHistogramAbortCloseBeforePaint[] = 37 const char kHistogramAbortCloseBeforePaint[] =
42 "PageLoad.Experimental.AbortTiming.Close.AfterCommit.BeforePaint"; 38 "PageLoad.Experimental.AbortTiming.Close.AfterCommit.BeforePaint";
43 const char kHistogramAbortBackgroundBeforePaint[] = 39 const char kHistogramAbortBackgroundBeforePaint[] =
44 "PageLoad.Experimental.AbortTiming.Background.AfterCommit.BeforePaint"; 40 "PageLoad.Experimental.AbortTiming.Background.AfterCommit.BeforePaint";
45 41
46 const char kHistogramAbortClientRedirectDuringParse[] =
47 "PageLoad.Experimental.AbortTiming.ClientRedirect.DuringParse";
48 const char kHistogramAbortForwardBackDuringParse[] = 42 const char kHistogramAbortForwardBackDuringParse[] =
49 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation.DuringParse"; 43 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation.DuringParse";
50 const char kHistogramAbortReloadDuringParse[] = 44 const char kHistogramAbortReloadDuringParse[] =
51 "PageLoad.Experimental.AbortTiming.Reload.DuringParse"; 45 "PageLoad.Experimental.AbortTiming.Reload.DuringParse";
52 const char kHistogramAbortNewNavigationDuringParse[] = 46 const char kHistogramAbortNewNavigationDuringParse[] =
53 "PageLoad.Experimental.AbortTiming.NewNavigation.DuringParse"; 47 "PageLoad.Experimental.AbortTiming.NewNavigation.DuringParse";
54 const char kHistogramAbortStopDuringParse[] = 48 const char kHistogramAbortStopDuringParse[] =
55 "PageLoad.Experimental.AbortTiming.Stop.DuringParse"; 49 "PageLoad.Experimental.AbortTiming.Stop.DuringParse";
56 const char kHistogramAbortCloseDuringParse[] = 50 const char kHistogramAbortCloseDuringParse[] =
57 "PageLoad.Experimental.AbortTiming.Close.DuringParse"; 51 "PageLoad.Experimental.AbortTiming.Close.DuringParse";
58 const char kHistogramAbortBackgroundDuringParse[] = 52 const char kHistogramAbortBackgroundDuringParse[] =
59 "PageLoad.Experimental.AbortTiming.Background.DuringParse"; 53 "PageLoad.Experimental.AbortTiming.Background.DuringParse";
60 54
61 } // namespace internal 55 } // namespace internal
62 56
63 namespace { 57 namespace {
64 58
65 void RecordAbortBeforeCommit( 59 void RecordAbortBeforeCommit(
66 UserAbortType abort_type, 60 const page_load_metrics::PageAbortInfo& abort_info) {
67 page_load_metrics::UserInitiatedInfo user_initiated_info, 61 switch (abort_info.reason) {
68 base::TimeDelta time_to_abort) { 62 case PageAbortReason::ABORT_RELOAD:
69 switch (abort_type) {
70 case UserAbortType::ABORT_RELOAD:
71 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortReloadBeforeCommit, 63 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortReloadBeforeCommit,
72 time_to_abort); 64 abort_info.time_to_abort);
73 if (user_initiated_info.user_gesture) { 65 if (abort_info.user_initiated_info.user_gesture) {
74 PAGE_LOAD_HISTOGRAM( 66 PAGE_LOAD_HISTOGRAM(
75 "PageLoad.Experimental.AbortTiming.Reload.BeforeCommit." 67 "PageLoad.Experimental.AbortTiming.Reload.BeforeCommit."
76 "UserGesture", 68 "UserGesture",
77 time_to_abort); 69 abort_info.time_to_abort);
78 } 70 }
79 if (user_initiated_info.user_input_event) { 71 if (abort_info.user_initiated_info.user_input_event) {
80 PAGE_LOAD_HISTOGRAM( 72 PAGE_LOAD_HISTOGRAM(
81 "PageLoad.Experimental.AbortTiming.Reload.BeforeCommit." 73 "PageLoad.Experimental.AbortTiming.Reload.BeforeCommit."
82 "UserInputEvent", 74 "UserInputEvent",
83 time_to_abort); 75 abort_info.time_to_abort);
84 } 76 }
85 if (user_initiated_info.browser_initiated) { 77 if (abort_info.user_initiated_info.browser_initiated) {
86 PAGE_LOAD_HISTOGRAM( 78 PAGE_LOAD_HISTOGRAM(
87 "PageLoad.Experimental.AbortTiming.Reload.BeforeCommit." 79 "PageLoad.Experimental.AbortTiming.Reload.BeforeCommit."
88 "BrowserInitiated", 80 "BrowserInitiated",
89 time_to_abort); 81 abort_info.time_to_abort);
90 } 82 }
91 return; 83 return;
92 case UserAbortType::ABORT_FORWARD_BACK: 84 case PageAbortReason::ABORT_FORWARD_BACK:
93 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortForwardBackBeforeCommit, 85 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortForwardBackBeforeCommit,
94 time_to_abort); 86 abort_info.time_to_abort);
95 if (user_initiated_info.user_gesture) { 87 if (abort_info.user_initiated_info.user_gesture) {
96 PAGE_LOAD_HISTOGRAM( 88 PAGE_LOAD_HISTOGRAM(
97 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation." 89 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation."
98 "BeforeCommit.UserGesture", 90 "BeforeCommit.UserGesture",
99 time_to_abort); 91 abort_info.time_to_abort);
100 } 92 }
101 if (user_initiated_info.user_input_event) { 93 if (abort_info.user_initiated_info.user_input_event) {
102 PAGE_LOAD_HISTOGRAM( 94 PAGE_LOAD_HISTOGRAM(
103 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation." 95 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation."
104 "BeforeCommit.UserInputEvent", 96 "BeforeCommit.UserInputEvent",
105 time_to_abort); 97 abort_info.time_to_abort);
106 } 98 }
107 if (user_initiated_info.browser_initiated) { 99 if (abort_info.user_initiated_info.browser_initiated) {
108 PAGE_LOAD_HISTOGRAM( 100 PAGE_LOAD_HISTOGRAM(
109 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation." 101 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation."
110 "BeforeCommit.BrowserInitiated", 102 "BeforeCommit.BrowserInitiated",
111 time_to_abort); 103 abort_info.time_to_abort);
112 } 104 }
113 return; 105 return;
114 case UserAbortType::ABORT_CLIENT_REDIRECT: 106 case PageAbortReason::ABORT_NEW_NAVIGATION:
115 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortClientRedirectBeforeCommit,
116 time_to_abort);
117 return;
118 case UserAbortType::ABORT_NEW_NAVIGATION:
119 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortNewNavigationBeforeCommit, 107 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortNewNavigationBeforeCommit,
120 time_to_abort); 108 abort_info.time_to_abort);
121 if (user_initiated_info.user_gesture) { 109 if (abort_info.user_initiated_info.user_gesture) {
122 PAGE_LOAD_HISTOGRAM( 110 PAGE_LOAD_HISTOGRAM(
123 "PageLoad.Experimental.AbortTiming.NewNavigation.BeforeCommit." 111 "PageLoad.Experimental.AbortTiming.NewNavigation.BeforeCommit."
124 "UserGesture", 112 "UserGesture",
125 time_to_abort); 113 abort_info.time_to_abort);
126 } 114 }
127 if (user_initiated_info.user_input_event) { 115 if (abort_info.user_initiated_info.user_input_event) {
128 PAGE_LOAD_HISTOGRAM( 116 PAGE_LOAD_HISTOGRAM(
129 "PageLoad.Experimental.AbortTiming.NewNavigation.BeforeCommit." 117 "PageLoad.Experimental.AbortTiming.NewNavigation.BeforeCommit."
130 "UserInputEvent", 118 "UserInputEvent",
131 time_to_abort); 119 abort_info.time_to_abort);
132 } 120 }
133 if (user_initiated_info.browser_initiated) { 121 if (abort_info.user_initiated_info.browser_initiated) {
134 PAGE_LOAD_HISTOGRAM( 122 PAGE_LOAD_HISTOGRAM(
135 "PageLoad.Experimental.AbortTiming.NewNavigation.BeforeCommit." 123 "PageLoad.Experimental.AbortTiming.NewNavigation.BeforeCommit."
136 "BrowserInitiated", 124 "BrowserInitiated",
137 time_to_abort); 125 abort_info.time_to_abort);
138 } 126 }
139 return; 127 return;
140 case UserAbortType::ABORT_STOP: 128 case PageAbortReason::ABORT_STOP:
141 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortStopBeforeCommit, 129 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortStopBeforeCommit,
142 time_to_abort); 130 abort_info.time_to_abort);
143 return; 131 return;
144 case UserAbortType::ABORT_CLOSE: 132 case PageAbortReason::ABORT_CLOSE:
145 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortCloseBeforeCommit, 133 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortCloseBeforeCommit,
146 time_to_abort); 134 abort_info.time_to_abort);
147 return; 135 return;
148 case UserAbortType::ABORT_BACKGROUND: 136 case PageAbortReason::ABORT_BACKGROUND:
149 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortBackgroundBeforeCommit, 137 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortBackgroundBeforeCommit,
150 time_to_abort); 138 abort_info.time_to_abort);
151 return; 139 return;
152 case UserAbortType::ABORT_OTHER: 140 case PageAbortReason::ABORT_OTHER:
153 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortOtherBeforeCommit, 141 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortOtherBeforeCommit,
154 time_to_abort); 142 abort_info.time_to_abort);
155 return; 143 return;
156 case UserAbortType::ABORT_NONE: 144 case PageAbortReason::ABORT_NONE:
157 case UserAbortType::ABORT_LAST_ENTRY:
158 NOTREACHED(); 145 NOTREACHED();
159 return; 146 return;
160 } 147 }
161 NOTREACHED(); 148 NOTREACHED();
162 } 149 }
163 150
164 void RecordAbortAfterCommitBeforePaint( 151 void RecordAbortAfterCommitBeforePaint(
165 UserAbortType abort_type, 152 const page_load_metrics::PageAbortInfo& abort_info) {
166 page_load_metrics::UserInitiatedInfo user_initiated_info, 153 switch (abort_info.reason) {
167 base::TimeDelta time_to_abort) { 154 case PageAbortReason::ABORT_RELOAD:
168 switch (abort_type) {
169 case UserAbortType::ABORT_RELOAD:
170 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortReloadBeforePaint, 155 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortReloadBeforePaint,
171 time_to_abort); 156 abort_info.time_to_abort);
172 if (user_initiated_info.user_gesture) { 157 if (abort_info.user_initiated_info.user_gesture) {
173 PAGE_LOAD_HISTOGRAM( 158 PAGE_LOAD_HISTOGRAM(
174 "PageLoad.Experimental.AbortTiming.Reload.AfterCommit.BeforePaint." 159 "PageLoad.Experimental.AbortTiming.Reload.AfterCommit.BeforePaint."
175 "UserGesture", 160 "UserGesture",
176 time_to_abort); 161 abort_info.time_to_abort);
177 } 162 }
178 if (user_initiated_info.user_input_event) { 163 if (abort_info.user_initiated_info.user_input_event) {
179 PAGE_LOAD_HISTOGRAM( 164 PAGE_LOAD_HISTOGRAM(
180 "PageLoad.Experimental.AbortTiming.Reload.AfterCommit.BeforePaint." 165 "PageLoad.Experimental.AbortTiming.Reload.AfterCommit.BeforePaint."
181 "UserInputEvent", 166 "UserInputEvent",
182 time_to_abort); 167 abort_info.time_to_abort);
183 } 168 }
184 if (user_initiated_info.browser_initiated) { 169 if (abort_info.user_initiated_info.browser_initiated) {
185 PAGE_LOAD_HISTOGRAM( 170 PAGE_LOAD_HISTOGRAM(
186 "PageLoad.Experimental.AbortTiming.Reload.AfterCommit.BeforePaint." 171 "PageLoad.Experimental.AbortTiming.Reload.AfterCommit.BeforePaint."
187 "BrowserInitiated", 172 "BrowserInitiated",
188 time_to_abort); 173 abort_info.time_to_abort);
189 } 174 }
190 return; 175 return;
191 case UserAbortType::ABORT_FORWARD_BACK: 176 case PageAbortReason::ABORT_FORWARD_BACK:
192 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortForwardBackBeforePaint, 177 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortForwardBackBeforePaint,
193 time_to_abort); 178 abort_info.time_to_abort);
194 if (user_initiated_info.user_gesture) { 179 if (abort_info.user_initiated_info.user_gesture) {
195 PAGE_LOAD_HISTOGRAM( 180 PAGE_LOAD_HISTOGRAM(
196 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation." 181 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation."
197 "AfterCommit.BeforePaint.UserGesture", 182 "AfterCommit.BeforePaint.UserGesture",
198 time_to_abort); 183 abort_info.time_to_abort);
199 } 184 }
200 if (user_initiated_info.user_input_event) { 185 if (abort_info.user_initiated_info.user_input_event) {
201 PAGE_LOAD_HISTOGRAM( 186 PAGE_LOAD_HISTOGRAM(
202 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation." 187 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation."
203 "AfterCommit.BeforePaint.UserInputEvent", 188 "AfterCommit.BeforePaint.UserInputEvent",
204 time_to_abort); 189 abort_info.time_to_abort);
205 } 190 }
206 if (user_initiated_info.browser_initiated) { 191 if (abort_info.user_initiated_info.browser_initiated) {
207 PAGE_LOAD_HISTOGRAM( 192 PAGE_LOAD_HISTOGRAM(
208 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation." 193 "PageLoad.Experimental.AbortTiming.ForwardBackNavigation."
209 "AfterCommit.BeforePaint.BrowserInitiated", 194 "AfterCommit.BeforePaint.BrowserInitiated",
210 time_to_abort); 195 abort_info.time_to_abort);
211 } 196 }
212 return; 197 return;
213 case UserAbortType::ABORT_CLIENT_REDIRECT: 198 case PageAbortReason::ABORT_NEW_NAVIGATION:
214 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortClientRedirectBeforePaint,
215 time_to_abort);
216 return;
217 case UserAbortType::ABORT_NEW_NAVIGATION:
218 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortNewNavigationBeforePaint, 199 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortNewNavigationBeforePaint,
219 time_to_abort); 200 abort_info.time_to_abort);
220 if (user_initiated_info.user_gesture) { 201 if (abort_info.user_initiated_info.user_gesture) {
221 PAGE_LOAD_HISTOGRAM( 202 PAGE_LOAD_HISTOGRAM(
222 "PageLoad.Experimental.AbortTiming.NewNavigation.AfterCommit." 203 "PageLoad.Experimental.AbortTiming.NewNavigation.AfterCommit."
223 "BeforePaint.UserGesture", 204 "BeforePaint.UserGesture",
224 time_to_abort); 205 abort_info.time_to_abort);
225 } 206 }
226 if (user_initiated_info.user_input_event) { 207 if (abort_info.user_initiated_info.user_input_event) {
227 PAGE_LOAD_HISTOGRAM( 208 PAGE_LOAD_HISTOGRAM(
228 "PageLoad.Experimental.AbortTiming.NewNavigation.AfterCommit." 209 "PageLoad.Experimental.AbortTiming.NewNavigation.AfterCommit."
229 "BeforePaint.UserInputEvent", 210 "BeforePaint.UserInputEvent",
230 time_to_abort); 211 abort_info.time_to_abort);
231 } 212 }
232 if (user_initiated_info.browser_initiated) { 213 if (abort_info.user_initiated_info.browser_initiated) {
233 PAGE_LOAD_HISTOGRAM( 214 PAGE_LOAD_HISTOGRAM(
234 "PageLoad.Experimental.AbortTiming.NewNavigation.AfterCommit." 215 "PageLoad.Experimental.AbortTiming.NewNavigation.AfterCommit."
235 "BeforePaint.BrowserInitiated", 216 "BeforePaint.BrowserInitiated",
236 time_to_abort); 217 abort_info.time_to_abort);
237 } 218 }
238 return; 219 return;
239 case UserAbortType::ABORT_STOP: 220 case PageAbortReason::ABORT_STOP:
240 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortStopBeforePaint, 221 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortStopBeforePaint,
241 time_to_abort); 222 abort_info.time_to_abort);
242 return; 223 return;
243 case UserAbortType::ABORT_CLOSE: 224 case PageAbortReason::ABORT_CLOSE:
244 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortCloseBeforePaint, 225 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortCloseBeforePaint,
245 time_to_abort); 226 abort_info.time_to_abort);
246 return; 227 return;
247 case UserAbortType::ABORT_BACKGROUND: 228 case PageAbortReason::ABORT_BACKGROUND:
248 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortBackgroundBeforePaint, 229 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortBackgroundBeforePaint,
249 time_to_abort); 230 abort_info.time_to_abort);
250 return; 231 return;
251 case UserAbortType::ABORT_OTHER: 232 case PageAbortReason::ABORT_OTHER:
252 NOTREACHED() << "Received UserAbortType::ABORT_OTHER for committed load."; 233 NOTREACHED()
234 << "Received PageAbortReason::ABORT_OTHER for committed load.";
253 return; 235 return;
254 case UserAbortType::ABORT_NONE: 236 case PageAbortReason::ABORT_NONE:
255 case UserAbortType::ABORT_LAST_ENTRY:
256 NOTREACHED(); 237 NOTREACHED();
257 return; 238 return;
258 } 239 }
259 NOTREACHED(); 240 NOTREACHED();
260 } 241 }
261 242
262 void RecordAbortDuringParse(UserAbortType abort_type, 243 void RecordAbortDuringParse(
263 base::TimeDelta time_to_abort) { 244 const page_load_metrics::PageAbortInfo& abort_info) {
264 switch (abort_type) { 245 switch (abort_info.reason) {
265 case UserAbortType::ABORT_RELOAD: 246 case PageAbortReason::ABORT_RELOAD:
266 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortReloadDuringParse, 247 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortReloadDuringParse,
267 time_to_abort); 248 abort_info.time_to_abort);
268 return; 249 return;
269 case UserAbortType::ABORT_FORWARD_BACK: 250 case PageAbortReason::ABORT_FORWARD_BACK:
270 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortForwardBackDuringParse, 251 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortForwardBackDuringParse,
271 time_to_abort); 252 abort_info.time_to_abort);
272 return; 253 return;
273 case UserAbortType::ABORT_CLIENT_REDIRECT: 254 case PageAbortReason::ABORT_NEW_NAVIGATION:
274 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortClientRedirectDuringParse, 255 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortNewNavigationDuringParse,
275 time_to_abort); 256 abort_info.time_to_abort);
276 return; 257 return;
277 case UserAbortType::ABORT_NEW_NAVIGATION: 258 case PageAbortReason::ABORT_STOP:
278 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortNewNavigationDuringParse, 259 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortStopDuringParse,
279 time_to_abort); 260 abort_info.time_to_abort);
280 return; 261 return;
281 case UserAbortType::ABORT_STOP: 262 case PageAbortReason::ABORT_CLOSE:
282 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortStopDuringParse, 263 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortCloseDuringParse,
283 time_to_abort); 264 abort_info.time_to_abort);
284 return; 265 return;
285 case UserAbortType::ABORT_CLOSE: 266 case PageAbortReason::ABORT_BACKGROUND:
286 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortCloseDuringParse, 267 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortBackgroundDuringParse,
287 time_to_abort); 268 abort_info.time_to_abort);
288 return; 269 return;
289 case UserAbortType::ABORT_BACKGROUND: 270 case PageAbortReason::ABORT_OTHER:
290 PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortBackgroundDuringParse, 271 NOTREACHED()
291 time_to_abort); 272 << "Received PageAbortReason::ABORT_OTHER for committed load.";
292 return; 273 return;
293 case UserAbortType::ABORT_OTHER: 274 case PageAbortReason::ABORT_NONE:
294 NOTREACHED() << "Received UserAbortType::ABORT_OTHER for committed load.";
295 return;
296 case UserAbortType::ABORT_NONE:
297 case UserAbortType::ABORT_LAST_ENTRY:
298 NOTREACHED(); 275 NOTREACHED();
299 return; 276 return;
300 } 277 }
301 NOTREACHED(); 278 NOTREACHED();
302 } 279 }
303 280
304 bool ShouldTrackMetrics( 281 bool ShouldTrackMetrics(const page_load_metrics::PageLoadExtraInfo& extra_info,
305 const page_load_metrics::PageLoadExtraInfo& extra_info) { 282 const page_load_metrics::PageAbortInfo& abort_info) {
306 UserAbortType abort_type = extra_info.abort_type; 283 if (abort_info.reason == PageAbortReason::ABORT_NONE)
307 if (abort_type == UserAbortType::ABORT_NONE)
308 return false; 284 return false;
309 285
310 DCHECK(extra_info.time_to_abort);
311
Charlie Harrison 2017/02/17 22:36:49 Why remove the DCHECK?
Bryan McQuade 2017/02/18 00:30:15 Ah, I changed the API a bit so time_to_abort isn't
312 // Don't log abort times if the page was backgrounded before the abort event. 286 // Don't log abort times if the page was backgrounded before the abort event.
313 if (!WasStartedInForegroundOptionalEventInForeground(extra_info.time_to_abort, 287 if (!WasStartedInForegroundOptionalEventInForeground(abort_info.time_to_abort,
314 extra_info)) 288 extra_info))
315 return false; 289 return false;
316 290
317 return true; 291 return true;
318 } 292 }
319 293
320 } // namespace 294 } // namespace
321 295
322 AbortsPageLoadMetricsObserver::AbortsPageLoadMetricsObserver() {} 296 AbortsPageLoadMetricsObserver::AbortsPageLoadMetricsObserver() {}
323 297
324 void AbortsPageLoadMetricsObserver::OnComplete( 298 void AbortsPageLoadMetricsObserver::OnComplete(
325 const page_load_metrics::PageLoadTiming& timing, 299 const page_load_metrics::PageLoadTiming& timing,
326 const page_load_metrics::PageLoadExtraInfo& extra_info) { 300 const page_load_metrics::PageLoadExtraInfo& extra_info) {
327 if (!ShouldTrackMetrics(extra_info)) 301 page_load_metrics::PageAbortInfo abort_info = GetPageAbortInfo(extra_info);
302 if (!ShouldTrackMetrics(extra_info, abort_info))
328 return; 303 return;
329 304
330 // If we did not receive any timing IPCs from the render process, we can't 305 // If we did not receive any timing IPCs from the render process, we can't
331 // know for certain if the page was truly aborted before paint, or if the 306 // know for certain if the page was truly aborted before paint, or if the
332 // abort happened before we received the IPC from the render process. Thus, we 307 // abort happened before we received the IPC from the render process. Thus, we
333 // do not log aborts for these page loads. Tracked page loads that receive no 308 // do not log aborts for these page loads. Tracked page loads that receive no
334 // timing IPCs are tracked via the ERR_NO_IPCS_RECEIVED error code in the 309 // timing IPCs are tracked via the ERR_NO_IPCS_RECEIVED error code in the
335 // PageLoad.Events.InternalError histogram, so we can keep track of how often 310 // PageLoad.Events.InternalError histogram, so we can keep track of how often
336 // this happens. 311 // this happens.
337 if (timing.IsEmpty()) 312 if (timing.IsEmpty())
338 return; 313 return;
339 314
340 const base::TimeDelta& time_to_abort = extra_info.time_to_abort.value(); 315 if (timing.parse_start && abort_info.time_to_abort >= timing.parse_start &&
341 if (timing.parse_start && time_to_abort >= timing.parse_start && 316 (!timing.parse_stop || timing.parse_stop >= abort_info.time_to_abort)) {
342 (!timing.parse_stop || timing.parse_stop >= time_to_abort)) { 317 RecordAbortDuringParse(abort_info);
343 RecordAbortDuringParse(extra_info.abort_type, time_to_abort);
344 } 318 }
345 if (!timing.first_paint || timing.first_paint >= time_to_abort) { 319 if (!timing.first_paint || timing.first_paint >= abort_info.time_to_abort) {
346 RecordAbortAfterCommitBeforePaint(extra_info.abort_type, 320 RecordAbortAfterCommitBeforePaint(abort_info);
347 extra_info.abort_user_initiated_info,
348 time_to_abort);
349 } 321 }
350 } 322 }
351 323
352 void AbortsPageLoadMetricsObserver::OnFailedProvisionalLoad( 324 void AbortsPageLoadMetricsObserver::OnFailedProvisionalLoad(
353 const page_load_metrics::FailedProvisionalLoadInfo& failed_load_info, 325 const page_load_metrics::FailedProvisionalLoadInfo& failed_load_info,
354 const page_load_metrics::PageLoadExtraInfo& extra_info) { 326 const page_load_metrics::PageLoadExtraInfo& extra_info) {
355 if (!ShouldTrackMetrics(extra_info)) 327 page_load_metrics::PageAbortInfo abort_info = GetPageAbortInfo(extra_info);
328 if (!ShouldTrackMetrics(extra_info, abort_info))
356 return; 329 return;
357 330
358 RecordAbortBeforeCommit(extra_info.abort_type, 331 RecordAbortBeforeCommit(abort_info);
359 extra_info.abort_user_initiated_info,
360 extra_info.time_to_abort.value());
361 } 332 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698