| 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/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 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 286 base::Optional<base::TimeDelta> load_event_start; | 286 base::Optional<base::TimeDelta> load_event_start; |
| 287 base::Optional<base::TimeDelta> first_image_paint; | 287 base::Optional<base::TimeDelta> first_image_paint; |
| 288 base::Optional<base::TimeDelta> first_contentful_paint; | 288 base::Optional<base::TimeDelta> first_contentful_paint; |
| 289 base::Optional<base::TimeDelta> experimental_first_meaningful_paint; | 289 base::Optional<base::TimeDelta> experimental_first_meaningful_paint; |
| 290 base::Optional<base::TimeDelta> parse_blocked_on_script_load_duration; | 290 base::Optional<base::TimeDelta> parse_blocked_on_script_load_duration; |
| 291 base::Optional<base::TimeDelta> parse_stop; | 291 base::Optional<base::TimeDelta> parse_stop; |
| 292 if (WasStartedInForegroundOptionalEventInForeground(timing.response_start, | 292 if (WasStartedInForegroundOptionalEventInForeground(timing.response_start, |
| 293 info)) { | 293 info)) { |
| 294 response_start = timing.response_start; | 294 response_start = timing.response_start; |
| 295 } | 295 } |
| 296 if (WasStartedInForegroundOptionalEventInForeground(timing.load_event_start, | 296 if (WasStartedInForegroundOptionalEventInForeground( |
| 297 info)) { | 297 timing.document_timing.load_event_start, info)) { |
| 298 load_event_start = timing.load_event_start; | 298 load_event_start = timing.document_timing.load_event_start; |
| 299 } | |
| 300 if (WasStartedInForegroundOptionalEventInForeground(timing.first_image_paint, | |
| 301 info)) { | |
| 302 first_image_paint = timing.first_image_paint; | |
| 303 } | 299 } |
| 304 if (WasStartedInForegroundOptionalEventInForeground( | 300 if (WasStartedInForegroundOptionalEventInForeground( |
| 305 timing.first_contentful_paint, info)) { | 301 timing.paint_timing.first_image_paint, info)) { |
| 306 first_contentful_paint = timing.first_contentful_paint; | 302 first_image_paint = timing.paint_timing.first_image_paint; |
| 307 } | 303 } |
| 308 if (WasStartedInForegroundOptionalEventInForeground( | 304 if (WasStartedInForegroundOptionalEventInForeground( |
| 309 timing.first_meaningful_paint, info)) { | 305 timing.paint_timing.first_contentful_paint, info)) { |
| 310 experimental_first_meaningful_paint = timing.first_meaningful_paint; | 306 first_contentful_paint = timing.paint_timing.first_contentful_paint; |
| 311 } | 307 } |
| 312 if (WasStartedInForegroundOptionalEventInForeground( | 308 if (WasStartedInForegroundOptionalEventInForeground( |
| 313 timing.parse_blocked_on_script_load_duration, info)) { | 309 timing.paint_timing.first_meaningful_paint, info)) { |
| 310 experimental_first_meaningful_paint = |
| 311 timing.paint_timing.first_meaningful_paint; |
| 312 } |
| 313 if (WasStartedInForegroundOptionalEventInForeground( |
| 314 timing.parse_timing.parse_blocked_on_script_load_duration, info)) { |
| 314 parse_blocked_on_script_load_duration = | 315 parse_blocked_on_script_load_duration = |
| 315 timing.parse_blocked_on_script_load_duration; | 316 timing.parse_timing.parse_blocked_on_script_load_duration; |
| 316 } | 317 } |
| 317 if (WasStartedInForegroundOptionalEventInForeground(timing.parse_stop, | 318 if (WasStartedInForegroundOptionalEventInForeground( |
| 318 info)) { | 319 timing.parse_timing.parse_stop, info)) { |
| 319 parse_stop = timing.parse_stop; | 320 parse_stop = timing.parse_timing.parse_stop; |
| 320 } | 321 } |
| 321 | 322 |
| 322 DataReductionProxyPageLoadTiming data_reduction_proxy_timing( | 323 DataReductionProxyPageLoadTiming data_reduction_proxy_timing( |
| 323 timing.navigation_start, response_start, load_event_start, | 324 timing.navigation_start, response_start, load_event_start, |
| 324 first_image_paint, first_contentful_paint, | 325 first_image_paint, first_contentful_paint, |
| 325 experimental_first_meaningful_paint, | 326 experimental_first_meaningful_paint, |
| 326 parse_blocked_on_script_load_duration, parse_stop, network_bytes_, | 327 parse_blocked_on_script_load_duration, parse_stop, network_bytes_, |
| 327 original_network_bytes_); | 328 original_network_bytes_); |
| 328 GetPingbackClient()->SendPingback(*data_, data_reduction_proxy_timing); | 329 GetPingbackClient()->SendPingback(*data_, data_reduction_proxy_timing); |
| 329 } | 330 } |
| 330 | 331 |
| 331 void DataReductionProxyMetricsObserver::OnDomContentLoadedEventStart( | 332 void DataReductionProxyMetricsObserver::OnDomContentLoadedEventStart( |
| 332 const page_load_metrics::PageLoadTiming& timing, | 333 const page_load_metrics::PageLoadTiming& timing, |
| 333 const page_load_metrics::PageLoadExtraInfo& info) { | 334 const page_load_metrics::PageLoadExtraInfo& info) { |
| 334 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( | 335 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( |
| 335 info, data_, timing.dom_content_loaded_event_start, | 336 info, data_, timing.document_timing.dom_content_loaded_event_start, |
| 336 internal::kHistogramDOMContentLoadedEventFiredSuffix); | 337 internal::kHistogramDOMContentLoadedEventFiredSuffix); |
| 337 } | 338 } |
| 338 | 339 |
| 339 void DataReductionProxyMetricsObserver::OnLoadEventStart( | 340 void DataReductionProxyMetricsObserver::OnLoadEventStart( |
| 340 const page_load_metrics::PageLoadTiming& timing, | 341 const page_load_metrics::PageLoadTiming& timing, |
| 341 const page_load_metrics::PageLoadExtraInfo& info) { | 342 const page_load_metrics::PageLoadExtraInfo& info) { |
| 342 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( | 343 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( |
| 343 info, data_, timing.load_event_start, | 344 info, data_, timing.document_timing.load_event_start, |
| 344 internal::kHistogramLoadEventFiredSuffix); | 345 internal::kHistogramLoadEventFiredSuffix); |
| 345 } | 346 } |
| 346 | 347 |
| 347 void DataReductionProxyMetricsObserver::OnFirstLayout( | 348 void DataReductionProxyMetricsObserver::OnFirstLayout( |
| 348 const page_load_metrics::PageLoadTiming& timing, | 349 const page_load_metrics::PageLoadTiming& timing, |
| 349 const page_load_metrics::PageLoadExtraInfo& info) { | 350 const page_load_metrics::PageLoadExtraInfo& info) { |
| 350 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( | 351 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( |
| 351 info, data_, timing.first_layout, internal::kHistogramFirstLayoutSuffix); | 352 info, data_, timing.document_timing.first_layout, |
| 353 internal::kHistogramFirstLayoutSuffix); |
| 352 } | 354 } |
| 353 | 355 |
| 354 void DataReductionProxyMetricsObserver::OnFirstPaint( | 356 void DataReductionProxyMetricsObserver::OnFirstPaint( |
| 355 const page_load_metrics::PageLoadTiming& timing, | 357 const page_load_metrics::PageLoadTiming& timing, |
| 356 const page_load_metrics::PageLoadExtraInfo& info) { | 358 const page_load_metrics::PageLoadExtraInfo& info) { |
| 357 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(info, data_, timing.first_paint, | 359 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(info, data_, |
| 360 timing.paint_timing.first_paint, |
| 358 internal::kHistogramFirstPaintSuffix); | 361 internal::kHistogramFirstPaintSuffix); |
| 359 } | 362 } |
| 360 | 363 |
| 361 void DataReductionProxyMetricsObserver::OnFirstTextPaint( | 364 void DataReductionProxyMetricsObserver::OnFirstTextPaint( |
| 362 const page_load_metrics::PageLoadTiming& timing, | 365 const page_load_metrics::PageLoadTiming& timing, |
| 363 const page_load_metrics::PageLoadExtraInfo& info) { | 366 const page_load_metrics::PageLoadExtraInfo& info) { |
| 364 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( | 367 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( |
| 365 info, data_, timing.first_text_paint, | 368 info, data_, timing.paint_timing.first_text_paint, |
| 366 internal::kHistogramFirstTextPaintSuffix); | 369 internal::kHistogramFirstTextPaintSuffix); |
| 367 } | 370 } |
| 368 | 371 |
| 369 void DataReductionProxyMetricsObserver::OnFirstImagePaint( | 372 void DataReductionProxyMetricsObserver::OnFirstImagePaint( |
| 370 const page_load_metrics::PageLoadTiming& timing, | 373 const page_load_metrics::PageLoadTiming& timing, |
| 371 const page_load_metrics::PageLoadExtraInfo& info) { | 374 const page_load_metrics::PageLoadExtraInfo& info) { |
| 372 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( | 375 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( |
| 373 info, data_, timing.first_image_paint, | 376 info, data_, timing.paint_timing.first_image_paint, |
| 374 internal::kHistogramFirstImagePaintSuffix); | 377 internal::kHistogramFirstImagePaintSuffix); |
| 375 } | 378 } |
| 376 | 379 |
| 377 void DataReductionProxyMetricsObserver::OnFirstContentfulPaint( | 380 void DataReductionProxyMetricsObserver::OnFirstContentfulPaint( |
| 378 const page_load_metrics::PageLoadTiming& timing, | 381 const page_load_metrics::PageLoadTiming& timing, |
| 379 const page_load_metrics::PageLoadExtraInfo& info) { | 382 const page_load_metrics::PageLoadExtraInfo& info) { |
| 380 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( | 383 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( |
| 381 info, data_, timing.first_contentful_paint, | 384 info, data_, timing.paint_timing.first_contentful_paint, |
| 382 internal::kHistogramFirstContentfulPaintSuffix); | 385 internal::kHistogramFirstContentfulPaintSuffix); |
| 383 } | 386 } |
| 384 | 387 |
| 385 void DataReductionProxyMetricsObserver::OnFirstMeaningfulPaint( | 388 void DataReductionProxyMetricsObserver::OnFirstMeaningfulPaint( |
| 386 const page_load_metrics::PageLoadTiming& timing, | 389 const page_load_metrics::PageLoadTiming& timing, |
| 387 const page_load_metrics::PageLoadExtraInfo& info) { | 390 const page_load_metrics::PageLoadExtraInfo& info) { |
| 388 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( | 391 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( |
| 389 info, data_, timing.first_meaningful_paint, | 392 info, data_, timing.paint_timing.first_meaningful_paint, |
| 390 internal::kHistogramFirstMeaningfulPaintSuffix); | 393 internal::kHistogramFirstMeaningfulPaintSuffix); |
| 391 } | 394 } |
| 392 | 395 |
| 393 void DataReductionProxyMetricsObserver::OnParseStart( | 396 void DataReductionProxyMetricsObserver::OnParseStart( |
| 394 const page_load_metrics::PageLoadTiming& timing, | 397 const page_load_metrics::PageLoadTiming& timing, |
| 395 const page_load_metrics::PageLoadExtraInfo& info) { | 398 const page_load_metrics::PageLoadExtraInfo& info) { |
| 396 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(info, data_, timing.parse_start, | 399 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(info, data_, |
| 400 timing.parse_timing.parse_start, |
| 397 internal::kHistogramParseStartSuffix); | 401 internal::kHistogramParseStartSuffix); |
| 398 } | 402 } |
| 399 | 403 |
| 400 void DataReductionProxyMetricsObserver::OnParseStop( | 404 void DataReductionProxyMetricsObserver::OnParseStop( |
| 401 const page_load_metrics::PageLoadTiming& timing, | 405 const page_load_metrics::PageLoadTiming& timing, |
| 402 const page_load_metrics::PageLoadExtraInfo& info) { | 406 const page_load_metrics::PageLoadExtraInfo& info) { |
| 403 if (!WasStartedInForegroundOptionalEventInForeground(timing.parse_stop, info)) | 407 if (!WasStartedInForegroundOptionalEventInForeground( |
| 408 timing.parse_timing.parse_stop, info)) |
| 404 return; | 409 return; |
| 405 | 410 |
| 406 base::TimeDelta parse_duration = | 411 base::TimeDelta parse_duration = timing.parse_timing.parse_stop.value() - |
| 407 timing.parse_stop.value() - timing.parse_start.value(); | 412 timing.parse_timing.parse_start.value(); |
| 408 RECORD_HISTOGRAMS_FOR_SUFFIX(data_, parse_duration, | 413 RECORD_HISTOGRAMS_FOR_SUFFIX(data_, parse_duration, |
| 409 internal::kHistogramParseDurationSuffix); | 414 internal::kHistogramParseDurationSuffix); |
| 410 RECORD_HISTOGRAMS_FOR_SUFFIX( | 415 RECORD_HISTOGRAMS_FOR_SUFFIX( |
| 411 data_, timing.parse_blocked_on_script_load_duration.value(), | 416 data_, timing.parse_timing.parse_blocked_on_script_load_duration.value(), |
| 412 internal::kHistogramParseBlockedOnScriptLoadSuffix); | 417 internal::kHistogramParseBlockedOnScriptLoadSuffix); |
| 413 } | 418 } |
| 414 | 419 |
| 415 void DataReductionProxyMetricsObserver::OnLoadedResource( | 420 void DataReductionProxyMetricsObserver::OnLoadedResource( |
| 416 const page_load_metrics::ExtraRequestInfo& extra_request_info) { | 421 const page_load_metrics::ExtraRequestInfo& extra_request_info) { |
| 417 if (extra_request_info.was_cached) | 422 if (extra_request_info.was_cached) |
| 418 return; | 423 return; |
| 419 original_network_bytes_ += extra_request_info.original_network_content_length; | 424 original_network_bytes_ += extra_request_info.original_network_content_length; |
| 420 network_bytes_ += extra_request_info.raw_body_bytes; | 425 network_bytes_ += extra_request_info.raw_body_bytes; |
| 421 num_network_resources_++; | 426 num_network_resources_++; |
| 422 if (!extra_request_info.data_reduction_proxy_used) | 427 if (!extra_request_info.data_reduction_proxy_used) |
| 423 return; | 428 return; |
| 424 num_data_reduction_proxy_resources_++; | 429 num_data_reduction_proxy_resources_++; |
| 425 network_bytes_proxied_ += extra_request_info.raw_body_bytes; | 430 network_bytes_proxied_ += extra_request_info.raw_body_bytes; |
| 426 } | 431 } |
| 427 | 432 |
| 428 DataReductionProxyPingbackClient* | 433 DataReductionProxyPingbackClient* |
| 429 DataReductionProxyMetricsObserver::GetPingbackClient() const { | 434 DataReductionProxyMetricsObserver::GetPingbackClient() const { |
| 430 return DataReductionProxyChromeSettingsFactory::GetForBrowserContext( | 435 return DataReductionProxyChromeSettingsFactory::GetForBrowserContext( |
| 431 browser_context_) | 436 browser_context_) |
| 432 ->data_reduction_proxy_service() | 437 ->data_reduction_proxy_service() |
| 433 ->pingback_client(); | 438 ->pingback_client(); |
| 434 } | 439 } |
| 435 | 440 |
| 436 } // namespace data_reduction_proxy | 441 } // namespace data_reduction_proxy |
| OLD | NEW |