OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/document_write_page_load_me
trics_observer.h" | 5 #include "chrome/browser/page_load_metrics/observers/document_write_page_load_me
trics_observer.h" |
6 #include "chrome/browser/page_load_metrics/page_load_metrics_util.h" | 6 #include "chrome/browser/page_load_metrics/page_load_metrics_util.h" |
7 #include "third_party/WebKit/public/platform/WebLoadingBehaviorFlag.h" | 7 #include "third_party/WebKit/public/platform/WebLoadingBehaviorFlag.h" |
8 | 8 |
9 namespace internal { | 9 namespace internal { |
10 const char kHistogramDocWriteFirstContentfulPaint[] = | 10 const char kHistogramDocWriteFirstContentfulPaint[] = |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 const char kHistogramDocWriteBlockCount[] = | 70 const char kHistogramDocWriteBlockCount[] = |
71 "PageLoad.Clients.DocWrite.Block.Count"; | 71 "PageLoad.Clients.DocWrite.Block.Count"; |
72 const char kHistogramDocWriteBlockReloadCount[] = | 72 const char kHistogramDocWriteBlockReloadCount[] = |
73 "PageLoad.Clients.DocWrite.Block.ReloadCount"; | 73 "PageLoad.Clients.DocWrite.Block.ReloadCount"; |
74 const char kHistogramDocWriteBlockLoadingBehavior[] = | 74 const char kHistogramDocWriteBlockLoadingBehavior[] = |
75 "PageLoad.Clients.DocWrite.Block.DocumentWriteLoadingBehavior"; | 75 "PageLoad.Clients.DocWrite.Block.DocumentWriteLoadingBehavior"; |
76 | 76 |
77 } // namespace internal | 77 } // namespace internal |
78 | 78 |
79 void DocumentWritePageLoadMetricsObserver::OnFirstContentfulPaintInPage( | 79 void DocumentWritePageLoadMetricsObserver::OnFirstContentfulPaintInPage( |
80 const page_load_metrics::PageLoadTiming& timing, | 80 const page_load_metrics::mojom::PageLoadTiming& timing, |
81 const page_load_metrics::PageLoadExtraInfo& info) { | 81 const page_load_metrics::PageLoadExtraInfo& info) { |
82 if (info.main_frame_metadata.behavior_flags & | 82 if (info.main_frame_metadata.behavior_flags & |
83 blink::WebLoadingBehaviorFlag:: | 83 blink::WebLoadingBehaviorFlag:: |
84 kWebLoadingBehaviorDocumentWriteEvaluator) { | 84 kWebLoadingBehaviorDocumentWriteEvaluator) { |
85 LogDocumentWriteEvaluatorFirstContentfulPaint(timing, info); | 85 LogDocumentWriteEvaluatorFirstContentfulPaint(timing, info); |
86 } | 86 } |
87 if (info.main_frame_metadata.behavior_flags & | 87 if (info.main_frame_metadata.behavior_flags & |
88 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorDocumentWriteBlock) { | 88 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorDocumentWriteBlock) { |
89 LogDocumentWriteBlockFirstContentfulPaint(timing, info); | 89 LogDocumentWriteBlockFirstContentfulPaint(timing, info); |
90 } | 90 } |
91 } | 91 } |
92 | 92 |
93 void DocumentWritePageLoadMetricsObserver:: | 93 void DocumentWritePageLoadMetricsObserver:: |
94 OnFirstMeaningfulPaintInMainFrameDocument( | 94 OnFirstMeaningfulPaintInMainFrameDocument( |
95 const page_load_metrics::PageLoadTiming& timing, | 95 const page_load_metrics::mojom::PageLoadTiming& timing, |
96 const page_load_metrics::PageLoadExtraInfo& info) { | 96 const page_load_metrics::PageLoadExtraInfo& info) { |
97 if (info.main_frame_metadata.behavior_flags & | 97 if (info.main_frame_metadata.behavior_flags & |
98 blink::WebLoadingBehaviorFlag:: | 98 blink::WebLoadingBehaviorFlag:: |
99 kWebLoadingBehaviorDocumentWriteEvaluator) { | 99 kWebLoadingBehaviorDocumentWriteEvaluator) { |
100 LogDocumentWriteEvaluatorFirstMeaningfulPaint(timing, info); | 100 LogDocumentWriteEvaluatorFirstMeaningfulPaint(timing, info); |
101 } | 101 } |
102 if (info.main_frame_metadata.behavior_flags & | 102 if (info.main_frame_metadata.behavior_flags & |
103 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorDocumentWriteBlock) { | 103 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorDocumentWriteBlock) { |
104 LogDocumentWriteBlockFirstMeaningfulPaint(timing, info); | 104 LogDocumentWriteBlockFirstMeaningfulPaint(timing, info); |
105 } | 105 } |
106 } | 106 } |
107 | 107 |
108 void DocumentWritePageLoadMetricsObserver::OnParseStop( | 108 void DocumentWritePageLoadMetricsObserver::OnParseStop( |
109 const page_load_metrics::PageLoadTiming& timing, | 109 const page_load_metrics::mojom::PageLoadTiming& timing, |
110 const page_load_metrics::PageLoadExtraInfo& info) { | 110 const page_load_metrics::PageLoadExtraInfo& info) { |
111 if (info.main_frame_metadata.behavior_flags & | 111 if (info.main_frame_metadata.behavior_flags & |
112 blink::WebLoadingBehaviorFlag:: | 112 blink::WebLoadingBehaviorFlag:: |
113 kWebLoadingBehaviorDocumentWriteEvaluator) { | 113 kWebLoadingBehaviorDocumentWriteEvaluator) { |
114 LogDocumentWriteEvaluatorParseStop(timing, info); | 114 LogDocumentWriteEvaluatorParseStop(timing, info); |
115 } | 115 } |
116 if (info.main_frame_metadata.behavior_flags & | 116 if (info.main_frame_metadata.behavior_flags & |
117 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorDocumentWriteBlock) { | 117 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorDocumentWriteBlock) { |
118 LogDocumentWriteBlockParseStop(timing, info); | 118 LogDocumentWriteBlockParseStop(timing, info); |
119 } | 119 } |
(...skipping 30 matching lines...) Expand all Loading... |
150 blink::WebLoadingBehaviorFlag:: | 150 blink::WebLoadingBehaviorFlag:: |
151 kWebLoadingBehaviorDocumentWriteBlockDifferentScheme) && | 151 kWebLoadingBehaviorDocumentWriteBlockDifferentScheme) && |
152 !doc_write_same_site_diff_scheme_) { | 152 !doc_write_same_site_diff_scheme_) { |
153 LogLoadingBehaviorMetrics(LOADING_BEHAVIOR_SAME_SITE_DIFF_SCHEME); | 153 LogLoadingBehaviorMetrics(LOADING_BEHAVIOR_SAME_SITE_DIFF_SCHEME); |
154 doc_write_same_site_diff_scheme_ = true; | 154 doc_write_same_site_diff_scheme_ = true; |
155 } | 155 } |
156 } | 156 } |
157 | 157 |
158 void DocumentWritePageLoadMetricsObserver:: | 158 void DocumentWritePageLoadMetricsObserver:: |
159 LogDocumentWriteEvaluatorFirstContentfulPaint( | 159 LogDocumentWriteEvaluatorFirstContentfulPaint( |
160 const page_load_metrics::PageLoadTiming& timing, | 160 const page_load_metrics::mojom::PageLoadTiming& timing, |
161 const page_load_metrics::PageLoadExtraInfo& info) { | 161 const page_load_metrics::PageLoadExtraInfo& info) { |
162 if (WasStartedInForegroundOptionalEventInForeground( | 162 if (WasStartedInForegroundOptionalEventInForeground( |
163 timing.paint_timing.first_contentful_paint, info)) { | 163 timing.paint_timing->first_contentful_paint, info)) { |
164 PAGE_LOAD_HISTOGRAM(internal::kHistogramDocWriteFirstContentfulPaint, | 164 PAGE_LOAD_HISTOGRAM(internal::kHistogramDocWriteFirstContentfulPaint, |
165 timing.paint_timing.first_contentful_paint.value()); | 165 timing.paint_timing->first_contentful_paint.value()); |
166 PAGE_LOAD_HISTOGRAM( | 166 PAGE_LOAD_HISTOGRAM( |
167 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, | 167 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, |
168 timing.paint_timing.first_contentful_paint.value() - | 168 timing.paint_timing->first_contentful_paint.value() - |
169 timing.parse_timing.parse_start.value()); | 169 timing.parse_timing->parse_start.value()); |
170 } else { | 170 } else { |
171 PAGE_LOAD_HISTOGRAM( | 171 PAGE_LOAD_HISTOGRAM( |
172 internal::kBackgroundHistogramDocWriteFirstContentfulPaint, | 172 internal::kBackgroundHistogramDocWriteFirstContentfulPaint, |
173 timing.paint_timing.first_contentful_paint.value()); | 173 timing.paint_timing->first_contentful_paint.value()); |
174 } | 174 } |
175 } | 175 } |
176 | 176 |
177 // Note: The first meaningful paint calculation in the core observer filters | 177 // Note: The first meaningful paint calculation in the core observer filters |
178 // out pages which had user interaction before the first meaningful paint. | 178 // out pages which had user interaction before the first meaningful paint. |
179 // Because the counts of those instances are low (< 2%), just log everything | 179 // Because the counts of those instances are low (< 2%), just log everything |
180 // here for simplicity. If this ends up being unreliable (the 2% is just from | 180 // here for simplicity. If this ends up being unreliable (the 2% is just from |
181 // canary), the page_load_metrics API should be altered to return the values | 181 // canary), the page_load_metrics API should be altered to return the values |
182 // the consumer wants. | 182 // the consumer wants. |
183 void DocumentWritePageLoadMetricsObserver:: | 183 void DocumentWritePageLoadMetricsObserver:: |
184 LogDocumentWriteEvaluatorFirstMeaningfulPaint( | 184 LogDocumentWriteEvaluatorFirstMeaningfulPaint( |
185 const page_load_metrics::PageLoadTiming& timing, | 185 const page_load_metrics::mojom::PageLoadTiming& timing, |
186 const page_load_metrics::PageLoadExtraInfo& info) { | 186 const page_load_metrics::PageLoadExtraInfo& info) { |
187 if (WasStartedInForegroundOptionalEventInForeground( | 187 if (WasStartedInForegroundOptionalEventInForeground( |
188 timing.paint_timing.first_meaningful_paint, info)) { | 188 timing.paint_timing->first_meaningful_paint, info)) { |
189 PAGE_LOAD_HISTOGRAM( | 189 PAGE_LOAD_HISTOGRAM( |
190 "PageLoad.Clients.DocWrite.Evaluator.Experimental.PaintTiming." | 190 "PageLoad.Clients.DocWrite.Evaluator.Experimental.PaintTiming." |
191 "ParseStartToFirstMeaningfulPaint", | 191 "ParseStartToFirstMeaningfulPaint", |
192 timing.paint_timing.first_meaningful_paint.value() - | 192 timing.paint_timing->first_meaningful_paint.value() - |
193 timing.parse_timing.parse_start.value()); | 193 timing.parse_timing->parse_start.value()); |
194 } | 194 } |
195 } | 195 } |
196 | 196 |
197 void DocumentWritePageLoadMetricsObserver:: | 197 void DocumentWritePageLoadMetricsObserver:: |
198 LogDocumentWriteBlockFirstMeaningfulPaint( | 198 LogDocumentWriteBlockFirstMeaningfulPaint( |
199 const page_load_metrics::PageLoadTiming& timing, | 199 const page_load_metrics::mojom::PageLoadTiming& timing, |
200 const page_load_metrics::PageLoadExtraInfo& info) { | 200 const page_load_metrics::PageLoadExtraInfo& info) { |
201 if (WasStartedInForegroundOptionalEventInForeground( | 201 if (WasStartedInForegroundOptionalEventInForeground( |
202 timing.paint_timing.first_meaningful_paint, info)) { | 202 timing.paint_timing->first_meaningful_paint, info)) { |
203 PAGE_LOAD_HISTOGRAM( | 203 PAGE_LOAD_HISTOGRAM( |
204 "PageLoad.Clients.DocWrite.Block.Experimental.PaintTiming." | 204 "PageLoad.Clients.DocWrite.Block.Experimental.PaintTiming." |
205 "ParseStartToFirstMeaningfulPaint", | 205 "ParseStartToFirstMeaningfulPaint", |
206 timing.paint_timing.first_meaningful_paint.value() - | 206 timing.paint_timing->first_meaningful_paint.value() - |
207 timing.parse_timing.parse_start.value()); | 207 timing.parse_timing->parse_start.value()); |
208 } | 208 } |
209 } | 209 } |
210 | 210 |
211 void DocumentWritePageLoadMetricsObserver::LogDocumentWriteEvaluatorParseStop( | 211 void DocumentWritePageLoadMetricsObserver::LogDocumentWriteEvaluatorParseStop( |
212 const page_load_metrics::PageLoadTiming& timing, | 212 const page_load_metrics::mojom::PageLoadTiming& timing, |
213 const page_load_metrics::PageLoadExtraInfo& info) { | 213 const page_load_metrics::PageLoadExtraInfo& info) { |
214 base::TimeDelta parse_duration = timing.parse_timing.parse_stop.value() - | 214 base::TimeDelta parse_duration = timing.parse_timing->parse_stop.value() - |
215 timing.parse_timing.parse_start.value(); | 215 timing.parse_timing->parse_start.value(); |
216 if (WasStartedInForegroundOptionalEventInForeground( | 216 if (WasStartedInForegroundOptionalEventInForeground( |
217 timing.parse_timing.parse_stop, info)) { | 217 timing.parse_timing->parse_stop, info)) { |
218 PAGE_LOAD_HISTOGRAM(internal::kHistogramDocWriteParseDuration, | 218 PAGE_LOAD_HISTOGRAM(internal::kHistogramDocWriteParseDuration, |
219 parse_duration); | 219 parse_duration); |
220 PAGE_LOAD_HISTOGRAM( | 220 PAGE_LOAD_HISTOGRAM( |
221 internal::kHistogramDocWriteParseBlockedOnScriptLoad, | 221 internal::kHistogramDocWriteParseBlockedOnScriptLoad, |
222 timing.parse_timing.parse_blocked_on_script_load_duration.value()); | 222 timing.parse_timing->parse_blocked_on_script_load_duration.value()); |
223 PAGE_LOAD_HISTOGRAM( | 223 PAGE_LOAD_HISTOGRAM( |
224 internal::kHistogramDocWriteParseBlockedOnScriptLoadDocumentWrite, | 224 internal::kHistogramDocWriteParseBlockedOnScriptLoadDocumentWrite, |
225 timing.parse_timing | 225 timing.parse_timing |
226 .parse_blocked_on_script_load_from_document_write_duration.value()); | 226 ->parse_blocked_on_script_load_from_document_write_duration |
| 227 .value()); |
227 PAGE_LOAD_HISTOGRAM( | 228 PAGE_LOAD_HISTOGRAM( |
228 internal::kHistogramDocWriteParseBlockedOnScriptExecution, | 229 internal::kHistogramDocWriteParseBlockedOnScriptExecution, |
229 timing.parse_timing.parse_blocked_on_script_execution_duration.value()); | 230 timing.parse_timing->parse_blocked_on_script_execution_duration |
| 231 .value()); |
230 PAGE_LOAD_HISTOGRAM( | 232 PAGE_LOAD_HISTOGRAM( |
231 internal::kHistogramDocWriteParseBlockedOnScriptExecutionDocumentWrite, | 233 internal::kHistogramDocWriteParseBlockedOnScriptExecutionDocumentWrite, |
232 timing.parse_timing | 234 timing.parse_timing |
233 .parse_blocked_on_script_execution_from_document_write_duration | 235 ->parse_blocked_on_script_execution_from_document_write_duration |
234 .value()); | 236 .value()); |
235 } else { | 237 } else { |
236 PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramDocWriteParseDuration, | 238 PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramDocWriteParseDuration, |
237 parse_duration); | 239 parse_duration); |
238 PAGE_LOAD_HISTOGRAM( | 240 PAGE_LOAD_HISTOGRAM( |
239 internal::kBackgroundHistogramDocWriteParseBlockedOnScriptLoad, | 241 internal::kBackgroundHistogramDocWriteParseBlockedOnScriptLoad, |
240 timing.parse_timing.parse_blocked_on_script_load_duration.value()); | 242 timing.parse_timing->parse_blocked_on_script_load_duration.value()); |
241 PAGE_LOAD_HISTOGRAM( | 243 PAGE_LOAD_HISTOGRAM( |
242 internal:: | 244 internal:: |
243 kBackgroundHistogramDocWriteParseBlockedOnScriptLoadDocumentWrite, | 245 kBackgroundHistogramDocWriteParseBlockedOnScriptLoadDocumentWrite, |
244 timing.parse_timing | 246 timing.parse_timing |
245 .parse_blocked_on_script_load_from_document_write_duration.value()); | 247 ->parse_blocked_on_script_load_from_document_write_duration |
| 248 .value()); |
246 } | 249 } |
247 } | 250 } |
248 | 251 |
249 void DocumentWritePageLoadMetricsObserver:: | 252 void DocumentWritePageLoadMetricsObserver:: |
250 LogDocumentWriteBlockFirstContentfulPaint( | 253 LogDocumentWriteBlockFirstContentfulPaint( |
251 const page_load_metrics::PageLoadTiming& timing, | 254 const page_load_metrics::mojom::PageLoadTiming& timing, |
252 const page_load_metrics::PageLoadExtraInfo& info) { | 255 const page_load_metrics::PageLoadExtraInfo& info) { |
253 if (WasStartedInForegroundOptionalEventInForeground( | 256 if (WasStartedInForegroundOptionalEventInForeground( |
254 timing.paint_timing.first_contentful_paint, info)) { | 257 timing.paint_timing->first_contentful_paint, info)) { |
255 PAGE_LOAD_HISTOGRAM(internal::kHistogramDocWriteBlockFirstContentfulPaint, | 258 PAGE_LOAD_HISTOGRAM(internal::kHistogramDocWriteBlockFirstContentfulPaint, |
256 timing.paint_timing.first_contentful_paint.value()); | 259 timing.paint_timing->first_contentful_paint.value()); |
257 PAGE_LOAD_HISTOGRAM( | 260 PAGE_LOAD_HISTOGRAM( |
258 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, | 261 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, |
259 timing.paint_timing.first_contentful_paint.value() - | 262 timing.paint_timing->first_contentful_paint.value() - |
260 timing.parse_timing.parse_start.value()); | 263 timing.parse_timing->parse_start.value()); |
261 } | 264 } |
262 } | 265 } |
263 | 266 |
264 void DocumentWritePageLoadMetricsObserver::LogDocumentWriteBlockParseStop( | 267 void DocumentWritePageLoadMetricsObserver::LogDocumentWriteBlockParseStop( |
265 const page_load_metrics::PageLoadTiming& timing, | 268 const page_load_metrics::mojom::PageLoadTiming& timing, |
266 const page_load_metrics::PageLoadExtraInfo& info) { | 269 const page_load_metrics::PageLoadExtraInfo& info) { |
267 base::TimeDelta parse_duration = timing.parse_timing.parse_stop.value() - | 270 base::TimeDelta parse_duration = timing.parse_timing->parse_stop.value() - |
268 timing.parse_timing.parse_start.value(); | 271 timing.parse_timing->parse_start.value(); |
269 if (WasStartedInForegroundOptionalEventInForeground( | 272 if (WasStartedInForegroundOptionalEventInForeground( |
270 timing.parse_timing.parse_stop, info)) { | 273 timing.parse_timing->parse_stop, info)) { |
271 PAGE_LOAD_HISTOGRAM(internal::kHistogramDocWriteBlockParseDuration, | 274 PAGE_LOAD_HISTOGRAM(internal::kHistogramDocWriteBlockParseDuration, |
272 parse_duration); | 275 parse_duration); |
273 PAGE_LOAD_HISTOGRAM( | 276 PAGE_LOAD_HISTOGRAM( |
274 internal::kHistogramDocWriteBlockParseBlockedOnScriptLoad, | 277 internal::kHistogramDocWriteBlockParseBlockedOnScriptLoad, |
275 timing.parse_timing.parse_blocked_on_script_load_duration.value()); | 278 timing.parse_timing->parse_blocked_on_script_load_duration.value()); |
276 PAGE_LOAD_HISTOGRAM( | 279 PAGE_LOAD_HISTOGRAM( |
277 internal::kHistogramDocWriteBlockParseBlockedOnScriptLoadDocumentWrite, | 280 internal::kHistogramDocWriteBlockParseBlockedOnScriptLoadDocumentWrite, |
278 timing.parse_timing | 281 timing.parse_timing |
279 .parse_blocked_on_script_load_from_document_write_duration.value()); | 282 ->parse_blocked_on_script_load_from_document_write_duration |
| 283 .value()); |
280 PAGE_LOAD_HISTOGRAM( | 284 PAGE_LOAD_HISTOGRAM( |
281 internal::kHistogramDocWriteBlockParseBlockedOnScriptExecution, | 285 internal::kHistogramDocWriteBlockParseBlockedOnScriptExecution, |
282 timing.parse_timing.parse_blocked_on_script_execution_duration.value()); | 286 timing.parse_timing->parse_blocked_on_script_execution_duration |
| 287 .value()); |
283 PAGE_LOAD_HISTOGRAM( | 288 PAGE_LOAD_HISTOGRAM( |
284 internal:: | 289 internal:: |
285 kHistogramDocWriteBlockParseBlockedOnScriptExecutionDocumentWrite, | 290 kHistogramDocWriteBlockParseBlockedOnScriptExecutionDocumentWrite, |
286 timing.parse_timing | 291 timing.parse_timing |
287 .parse_blocked_on_script_execution_from_document_write_duration | 292 ->parse_blocked_on_script_execution_from_document_write_duration |
288 .value()); | 293 .value()); |
289 } else { | 294 } else { |
290 PAGE_LOAD_HISTOGRAM( | 295 PAGE_LOAD_HISTOGRAM( |
291 internal::kBackgroundHistogramDocWriteBlockParseDuration, | 296 internal::kBackgroundHistogramDocWriteBlockParseDuration, |
292 parse_duration); | 297 parse_duration); |
293 PAGE_LOAD_HISTOGRAM( | 298 PAGE_LOAD_HISTOGRAM( |
294 internal::kBackgroundHistogramDocWriteBlockParseBlockedOnScriptLoad, | 299 internal::kBackgroundHistogramDocWriteBlockParseBlockedOnScriptLoad, |
295 timing.parse_timing.parse_blocked_on_script_load_duration.value()); | 300 timing.parse_timing->parse_blocked_on_script_load_duration.value()); |
296 PAGE_LOAD_HISTOGRAM( | 301 PAGE_LOAD_HISTOGRAM( |
297 internal::kBackgroundDocWriteBlockParseBlockedOnScriptLoadDocumentWrite, | 302 internal::kBackgroundDocWriteBlockParseBlockedOnScriptLoadDocumentWrite, |
298 timing.parse_timing | 303 timing.parse_timing |
299 .parse_blocked_on_script_load_from_document_write_duration.value()); | 304 ->parse_blocked_on_script_load_from_document_write_duration |
| 305 .value()); |
300 } | 306 } |
301 } | 307 } |
OLD | NEW |