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

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

Issue 2874663005: [Page Load Metrics] Add mojom file to page load metrics. (Closed)
Patch Set: Remove unnecessary variable Created 3 years, 7 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 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/data_reduction_proxy_metric s_observer.h" 5 #include "chrome/browser/page_load_metrics/observers/data_reduction_proxy_metric s_observer.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/metrics/histogram_macros.h" 9 #include "base/metrics/histogram_macros.h"
10 #include "base/optional.h" 10 #include "base/optional.h"
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 content::NavigationHandle* navigation_handle, 159 content::NavigationHandle* navigation_handle,
160 const GURL& currently_committed_url, 160 const GURL& currently_committed_url,
161 bool started_in_foreground) { 161 bool started_in_foreground) {
162 if (!started_in_foreground) 162 if (!started_in_foreground)
163 return STOP_OBSERVING; 163 return STOP_OBSERVING;
164 return CONTINUE_OBSERVING; 164 return CONTINUE_OBSERVING;
165 } 165 }
166 166
167 page_load_metrics::PageLoadMetricsObserver::ObservePolicy 167 page_load_metrics::PageLoadMetricsObserver::ObservePolicy
168 DataReductionProxyMetricsObserver::FlushMetricsOnAppEnterBackground( 168 DataReductionProxyMetricsObserver::FlushMetricsOnAppEnterBackground(
169 const page_load_metrics::PageLoadTiming& timing, 169 const page_load_metrics::mojom::PageLoadTiming& timing,
170 const page_load_metrics::PageLoadExtraInfo& info) { 170 const page_load_metrics::PageLoadExtraInfo& info) {
171 // FlushMetricsOnAppEnterBackground is invoked on Android in cases where the 171 // FlushMetricsOnAppEnterBackground is invoked on Android in cases where the
172 // app is about to be backgrounded, as part of the Activity.onPause() 172 // app is about to be backgrounded, as part of the Activity.onPause()
173 // flow. After this method is invoked, Chrome may be killed without further 173 // flow. After this method is invoked, Chrome may be killed without further
174 // notification, so we send a pingback with data collected up to this point. 174 // notification, so we send a pingback with data collected up to this point.
175 if (info.did_commit) { 175 if (info.did_commit) {
176 RecordPageSizeUMA(); 176 RecordPageSizeUMA();
177 SendPingback(timing, info, true /* app_background_occurred */); 177 SendPingback(timing, info, true /* app_background_occurred */);
178 } 178 }
179 return STOP_OBSERVING; 179 return STOP_OBSERVING;
180 } 180 }
181 181
182 void DataReductionProxyMetricsObserver::OnComplete( 182 void DataReductionProxyMetricsObserver::OnComplete(
183 const page_load_metrics::PageLoadTiming& timing, 183 const page_load_metrics::mojom::PageLoadTiming& timing,
184 const page_load_metrics::PageLoadExtraInfo& info) { 184 const page_load_metrics::PageLoadExtraInfo& info) {
185 RecordPageSizeUMA(); 185 RecordPageSizeUMA();
186 SendPingback(timing, info, false /* app_background_occurred */); 186 SendPingback(timing, info, false /* app_background_occurred */);
187 } 187 }
188 188
189 void DataReductionProxyMetricsObserver::RecordPageSizeUMA() const { 189 void DataReductionProxyMetricsObserver::RecordPageSizeUMA() const {
190 if (!data_) 190 if (!data_)
191 return; 191 return;
192 192
193 // If the first request didn't complete, don't record UMA. 193 // If the first request didn't complete, don't record UMA.
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 if (network_bytes_ <= original_network_bytes_) { 263 if (network_bytes_ <= original_network_bytes_) {
264 PAGE_BYTES_HISTOGRAM(GetConstHistogramWithSuffix(internal::kBytesSavings), 264 PAGE_BYTES_HISTOGRAM(GetConstHistogramWithSuffix(internal::kBytesSavings),
265 original_network_bytes_ - network_bytes_); 265 original_network_bytes_ - network_bytes_);
266 } else { 266 } else {
267 PAGE_BYTES_HISTOGRAM(GetConstHistogramWithSuffix(internal::kBytesInflation), 267 PAGE_BYTES_HISTOGRAM(GetConstHistogramWithSuffix(internal::kBytesInflation),
268 network_bytes_proxied_ - original_network_bytes_); 268 network_bytes_proxied_ - original_network_bytes_);
269 } 269 }
270 } 270 }
271 271
272 void DataReductionProxyMetricsObserver::SendPingback( 272 void DataReductionProxyMetricsObserver::SendPingback(
273 const page_load_metrics::PageLoadTiming& timing, 273 const page_load_metrics::mojom::PageLoadTiming& timing,
274 const page_load_metrics::PageLoadExtraInfo& info, 274 const page_load_metrics::PageLoadExtraInfo& info,
275 bool app_background_occurred) { 275 bool app_background_occurred) {
276 // TODO(ryansturm): Move to OnFirstBackgroundEvent to handle some fast 276 // TODO(ryansturm): Move to OnFirstBackgroundEvent to handle some fast
277 // shutdown cases. crbug.com/618072 277 // shutdown cases. crbug.com/618072
278 if (!browser_context_ || !data_) 278 if (!browser_context_ || !data_)
279 return; 279 return;
280 if (data_reduction_proxy::params::IsIncludedInHoldbackFieldTrial() || 280 if (data_reduction_proxy::params::IsIncludedInHoldbackFieldTrial() ||
281 data_reduction_proxy::params::IsIncludedInTamperDetectionExperiment()) { 281 data_reduction_proxy::params::IsIncludedInTamperDetectionExperiment()) {
282 return; 282 return;
283 } 283 }
284 // Only consider timing events that happened before the first background 284 // Only consider timing events that happened before the first background
285 // event. 285 // event.
286 base::Optional<base::TimeDelta> response_start; 286 base::Optional<base::TimeDelta> response_start;
287 base::Optional<base::TimeDelta> load_event_start; 287 base::Optional<base::TimeDelta> load_event_start;
288 base::Optional<base::TimeDelta> first_image_paint; 288 base::Optional<base::TimeDelta> first_image_paint;
289 base::Optional<base::TimeDelta> first_contentful_paint; 289 base::Optional<base::TimeDelta> first_contentful_paint;
290 base::Optional<base::TimeDelta> experimental_first_meaningful_paint; 290 base::Optional<base::TimeDelta> experimental_first_meaningful_paint;
291 base::Optional<base::TimeDelta> parse_blocked_on_script_load_duration; 291 base::Optional<base::TimeDelta> parse_blocked_on_script_load_duration;
292 base::Optional<base::TimeDelta> parse_stop; 292 base::Optional<base::TimeDelta> parse_stop;
293 if (WasStartedInForegroundOptionalEventInForeground(timing.response_start, 293 if (WasStartedInForegroundOptionalEventInForeground(timing.response_start,
294 info)) { 294 info)) {
295 response_start = timing.response_start; 295 response_start = timing.response_start;
296 } 296 }
297 if (WasStartedInForegroundOptionalEventInForeground( 297 if (WasStartedInForegroundOptionalEventInForeground(
298 timing.document_timing.load_event_start, info)) { 298 timing.document_timing->load_event_start, info)) {
299 load_event_start = timing.document_timing.load_event_start; 299 load_event_start = timing.document_timing->load_event_start;
300 } 300 }
301 if (WasStartedInForegroundOptionalEventInForeground( 301 if (WasStartedInForegroundOptionalEventInForeground(
302 timing.paint_timing.first_image_paint, info)) { 302 timing.paint_timing->first_image_paint, info)) {
303 first_image_paint = timing.paint_timing.first_image_paint; 303 first_image_paint = timing.paint_timing->first_image_paint;
304 } 304 }
305 if (WasStartedInForegroundOptionalEventInForeground( 305 if (WasStartedInForegroundOptionalEventInForeground(
306 timing.paint_timing.first_contentful_paint, info)) { 306 timing.paint_timing->first_contentful_paint, info)) {
307 first_contentful_paint = timing.paint_timing.first_contentful_paint; 307 first_contentful_paint = timing.paint_timing->first_contentful_paint;
308 } 308 }
309 if (WasStartedInForegroundOptionalEventInForeground( 309 if (WasStartedInForegroundOptionalEventInForeground(
310 timing.paint_timing.first_meaningful_paint, info)) { 310 timing.paint_timing->first_meaningful_paint, info)) {
311 experimental_first_meaningful_paint = 311 experimental_first_meaningful_paint =
312 timing.paint_timing.first_meaningful_paint; 312 timing.paint_timing->first_meaningful_paint;
313 } 313 }
314 if (WasStartedInForegroundOptionalEventInForeground( 314 if (WasStartedInForegroundOptionalEventInForeground(
315 timing.parse_timing.parse_blocked_on_script_load_duration, info)) { 315 timing.parse_timing->parse_blocked_on_script_load_duration, info)) {
316 parse_blocked_on_script_load_duration = 316 parse_blocked_on_script_load_duration =
317 timing.parse_timing.parse_blocked_on_script_load_duration; 317 timing.parse_timing->parse_blocked_on_script_load_duration;
318 } 318 }
319 if (WasStartedInForegroundOptionalEventInForeground( 319 if (WasStartedInForegroundOptionalEventInForeground(
320 timing.parse_timing.parse_stop, info)) { 320 timing.parse_timing->parse_stop, info)) {
321 parse_stop = timing.parse_timing.parse_stop; 321 parse_stop = timing.parse_timing->parse_stop;
322 } 322 }
323 323
324 DataReductionProxyPageLoadTiming data_reduction_proxy_timing( 324 DataReductionProxyPageLoadTiming data_reduction_proxy_timing(
325 timing.navigation_start, response_start, load_event_start, 325 timing.navigation_start, response_start, load_event_start,
326 first_image_paint, first_contentful_paint, 326 first_image_paint, first_contentful_paint,
327 experimental_first_meaningful_paint, 327 experimental_first_meaningful_paint,
328 parse_blocked_on_script_load_duration, parse_stop, network_bytes_, 328 parse_blocked_on_script_load_duration, parse_stop, network_bytes_,
329 original_network_bytes_, app_background_occurred); 329 original_network_bytes_, app_background_occurred);
330 GetPingbackClient()->SendPingback(*data_, data_reduction_proxy_timing); 330 GetPingbackClient()->SendPingback(*data_, data_reduction_proxy_timing);
331 } 331 }
332 332
333 void DataReductionProxyMetricsObserver::OnDomContentLoadedEventStart( 333 void DataReductionProxyMetricsObserver::OnDomContentLoadedEventStart(
334 const page_load_metrics::PageLoadTiming& timing, 334 const page_load_metrics::mojom::PageLoadTiming& timing,
335 const page_load_metrics::PageLoadExtraInfo& info) { 335 const page_load_metrics::PageLoadExtraInfo& info) {
336 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( 336 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
337 info, data_, timing.document_timing.dom_content_loaded_event_start, 337 info, data_, timing.document_timing->dom_content_loaded_event_start,
338 internal::kHistogramDOMContentLoadedEventFiredSuffix); 338 internal::kHistogramDOMContentLoadedEventFiredSuffix);
339 } 339 }
340 340
341 void DataReductionProxyMetricsObserver::OnLoadEventStart( 341 void DataReductionProxyMetricsObserver::OnLoadEventStart(
342 const page_load_metrics::PageLoadTiming& timing, 342 const page_load_metrics::mojom::PageLoadTiming& timing,
343 const page_load_metrics::PageLoadExtraInfo& info) { 343 const page_load_metrics::PageLoadExtraInfo& info) {
344 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( 344 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
345 info, data_, timing.document_timing.load_event_start, 345 info, data_, timing.document_timing->load_event_start,
346 internal::kHistogramLoadEventFiredSuffix); 346 internal::kHistogramLoadEventFiredSuffix);
347 } 347 }
348 348
349 void DataReductionProxyMetricsObserver::OnFirstLayout( 349 void DataReductionProxyMetricsObserver::OnFirstLayout(
350 const page_load_metrics::PageLoadTiming& timing, 350 const page_load_metrics::mojom::PageLoadTiming& timing,
351 const page_load_metrics::PageLoadExtraInfo& info) { 351 const page_load_metrics::PageLoadExtraInfo& info) {
352 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( 352 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
353 info, data_, timing.document_timing.first_layout, 353 info, data_, timing.document_timing->first_layout,
354 internal::kHistogramFirstLayoutSuffix); 354 internal::kHistogramFirstLayoutSuffix);
355 } 355 }
356 356
357 void DataReductionProxyMetricsObserver::OnFirstPaintInPage( 357 void DataReductionProxyMetricsObserver::OnFirstPaintInPage(
358 const page_load_metrics::PageLoadTiming& timing, 358 const page_load_metrics::mojom::PageLoadTiming& timing,
359 const page_load_metrics::PageLoadExtraInfo& info) { 359 const page_load_metrics::PageLoadExtraInfo& info) {
360 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(info, data_, 360 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(info, data_,
361 timing.paint_timing.first_paint, 361 timing.paint_timing->first_paint,
362 internal::kHistogramFirstPaintSuffix); 362 internal::kHistogramFirstPaintSuffix);
363 } 363 }
364 364
365 void DataReductionProxyMetricsObserver::OnFirstTextPaintInPage( 365 void DataReductionProxyMetricsObserver::OnFirstTextPaintInPage(
366 const page_load_metrics::PageLoadTiming& timing, 366 const page_load_metrics::mojom::PageLoadTiming& timing,
367 const page_load_metrics::PageLoadExtraInfo& info) { 367 const page_load_metrics::PageLoadExtraInfo& info) {
368 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( 368 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
369 info, data_, timing.paint_timing.first_text_paint, 369 info, data_, timing.paint_timing->first_text_paint,
370 internal::kHistogramFirstTextPaintSuffix); 370 internal::kHistogramFirstTextPaintSuffix);
371 } 371 }
372 372
373 void DataReductionProxyMetricsObserver::OnFirstImagePaintInPage( 373 void DataReductionProxyMetricsObserver::OnFirstImagePaintInPage(
374 const page_load_metrics::PageLoadTiming& timing, 374 const page_load_metrics::mojom::PageLoadTiming& timing,
375 const page_load_metrics::PageLoadExtraInfo& info) { 375 const page_load_metrics::PageLoadExtraInfo& info) {
376 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( 376 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
377 info, data_, timing.paint_timing.first_image_paint, 377 info, data_, timing.paint_timing->first_image_paint,
378 internal::kHistogramFirstImagePaintSuffix); 378 internal::kHistogramFirstImagePaintSuffix);
379 } 379 }
380 380
381 void DataReductionProxyMetricsObserver::OnFirstContentfulPaintInPage( 381 void DataReductionProxyMetricsObserver::OnFirstContentfulPaintInPage(
382 const page_load_metrics::PageLoadTiming& timing, 382 const page_load_metrics::mojom::PageLoadTiming& timing,
383 const page_load_metrics::PageLoadExtraInfo& info) { 383 const page_load_metrics::PageLoadExtraInfo& info) {
384 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( 384 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
385 info, data_, timing.paint_timing.first_contentful_paint, 385 info, data_, timing.paint_timing->first_contentful_paint,
386 internal::kHistogramFirstContentfulPaintSuffix); 386 internal::kHistogramFirstContentfulPaintSuffix);
387 } 387 }
388 388
389 void DataReductionProxyMetricsObserver:: 389 void DataReductionProxyMetricsObserver::
390 OnFirstMeaningfulPaintInMainFrameDocument( 390 OnFirstMeaningfulPaintInMainFrameDocument(
391 const page_load_metrics::PageLoadTiming& timing, 391 const page_load_metrics::mojom::PageLoadTiming& timing,
392 const page_load_metrics::PageLoadExtraInfo& info) { 392 const page_load_metrics::PageLoadExtraInfo& info) {
393 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( 393 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
394 info, data_, timing.paint_timing.first_meaningful_paint, 394 info, data_, timing.paint_timing->first_meaningful_paint,
395 internal::kHistogramFirstMeaningfulPaintSuffix); 395 internal::kHistogramFirstMeaningfulPaintSuffix);
396 } 396 }
397 397
398 void DataReductionProxyMetricsObserver::OnParseStart( 398 void DataReductionProxyMetricsObserver::OnParseStart(
399 const page_load_metrics::PageLoadTiming& timing, 399 const page_load_metrics::mojom::PageLoadTiming& timing,
400 const page_load_metrics::PageLoadExtraInfo& info) { 400 const page_load_metrics::PageLoadExtraInfo& info) {
401 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(info, data_, 401 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(info, data_,
402 timing.parse_timing.parse_start, 402 timing.parse_timing->parse_start,
403 internal::kHistogramParseStartSuffix); 403 internal::kHistogramParseStartSuffix);
404 } 404 }
405 405
406 void DataReductionProxyMetricsObserver::OnParseStop( 406 void DataReductionProxyMetricsObserver::OnParseStop(
407 const page_load_metrics::PageLoadTiming& timing, 407 const page_load_metrics::mojom::PageLoadTiming& timing,
408 const page_load_metrics::PageLoadExtraInfo& info) { 408 const page_load_metrics::PageLoadExtraInfo& info) {
409 if (!WasStartedInForegroundOptionalEventInForeground( 409 if (!WasStartedInForegroundOptionalEventInForeground(
410 timing.parse_timing.parse_stop, info)) 410 timing.parse_timing->parse_stop, info))
411 return; 411 return;
412 412
413 base::TimeDelta parse_duration = timing.parse_timing.parse_stop.value() - 413 base::TimeDelta parse_duration = timing.parse_timing->parse_stop.value() -
414 timing.parse_timing.parse_start.value(); 414 timing.parse_timing->parse_start.value();
415 RECORD_HISTOGRAMS_FOR_SUFFIX(data_, parse_duration, 415 RECORD_HISTOGRAMS_FOR_SUFFIX(data_, parse_duration,
416 internal::kHistogramParseDurationSuffix); 416 internal::kHistogramParseDurationSuffix);
417 RECORD_HISTOGRAMS_FOR_SUFFIX( 417 RECORD_HISTOGRAMS_FOR_SUFFIX(
418 data_, timing.parse_timing.parse_blocked_on_script_load_duration.value(), 418 data_, timing.parse_timing->parse_blocked_on_script_load_duration.value(),
419 internal::kHistogramParseBlockedOnScriptLoadSuffix); 419 internal::kHistogramParseBlockedOnScriptLoadSuffix);
420 } 420 }
421 421
422 void DataReductionProxyMetricsObserver::OnLoadedResource( 422 void DataReductionProxyMetricsObserver::OnLoadedResource(
423 const page_load_metrics::ExtraRequestCompleteInfo& 423 const page_load_metrics::ExtraRequestCompleteInfo&
424 extra_request_complete_info) { 424 extra_request_complete_info) {
425 if (extra_request_complete_info.data_reduction_proxy_data && 425 if (extra_request_complete_info.data_reduction_proxy_data &&
426 extra_request_complete_info.data_reduction_proxy_data->lofi_received()) { 426 extra_request_complete_info.data_reduction_proxy_data->lofi_received()) {
427 data_->set_lofi_received(true); 427 data_->set_lofi_received(true);
428 } 428 }
(...skipping 14 matching lines...) Expand all
443 443
444 DataReductionProxyPingbackClient* 444 DataReductionProxyPingbackClient*
445 DataReductionProxyMetricsObserver::GetPingbackClient() const { 445 DataReductionProxyMetricsObserver::GetPingbackClient() const {
446 return DataReductionProxyChromeSettingsFactory::GetForBrowserContext( 446 return DataReductionProxyChromeSettingsFactory::GetForBrowserContext(
447 browser_context_) 447 browser_context_)
448 ->data_reduction_proxy_service() 448 ->data_reduction_proxy_service()
449 ->pingback_client(); 449 ->pingback_client();
450 } 450 }
451 451
452 } // namespace data_reduction_proxy 452 } // namespace data_reduction_proxy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698