| Index: chrome/browser/page_load_metrics/observers/data_reduction_proxy_metrics_observer.cc
|
| diff --git a/chrome/browser/page_load_metrics/observers/data_reduction_proxy_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/data_reduction_proxy_metrics_observer.cc
|
| index 8b460cfb68e4f8f21181cdab31716b01b1d71204..d5931c0bf1979874dc39716595228038df9fa6a8 100644
|
| --- a/chrome/browser/page_load_metrics/observers/data_reduction_proxy_metrics_observer.cc
|
| +++ b/chrome/browser/page_load_metrics/observers/data_reduction_proxy_metrics_observer.cc
|
| @@ -66,20 +66,22 @@ const char kHistogramDataReductionProxyPrefix[] =
|
| const char kHistogramDataReductionProxyLoFiOnPrefix[] =
|
| "PageLoad.Clients.DataReductionProxy.LoFiOn.";
|
| const char kHistogramDOMContentLoadedEventFiredSuffix[] =
|
| "DocumentTiming.NavigationToDOMContentLoadedEventFired";
|
| const char kHistogramFirstLayoutSuffix[] =
|
| "DocumentTiming.NavigationToFirstLayout";
|
| const char kHistogramLoadEventFiredSuffix[] =
|
| "DocumentTiming.NavigationToLoadEventFired";
|
| const char kHistogramFirstContentfulPaintSuffix[] =
|
| "PaintTiming.NavigationToFirstContentfulPaint";
|
| +const char kHistogramFirstMeaningfulPaintSuffix[] =
|
| + "Experimental.PaintTiming.NavigationToFirstMeaningfulPaint";
|
| const char kHistogramFirstImagePaintSuffix[] =
|
| "PaintTiming.NavigationToFirstImagePaint";
|
| const char kHistogramFirstPaintSuffix[] = "PaintTiming.NavigationToFirstPaint";
|
| const char kHistogramFirstTextPaintSuffix[] =
|
| "PaintTiming.NavigationToFirstTextPaint";
|
| const char kHistogramParseStartSuffix[] = "ParseTiming.NavigationToParseStart";
|
| const char kHistogramParseBlockedOnScriptLoadSuffix[] =
|
| "ParseTiming.ParseBlockedOnScriptLoad";
|
| const char kHistogramParseDurationSuffix[] = "ParseTiming.ParseDuration";
|
|
|
| @@ -133,51 +135,57 @@ void DataReductionProxyMetricsObserver::OnComplete(
|
| if (data_reduction_proxy::params::IsIncludedInHoldbackFieldTrial() ||
|
| data_reduction_proxy::params::IsIncludedInTamperDetectionExperiment()) {
|
| return;
|
| }
|
| // Only consider timing events that happened before the first background
|
| // event.
|
| base::Optional<base::TimeDelta> response_start;
|
| base::Optional<base::TimeDelta> load_event_start;
|
| base::Optional<base::TimeDelta> first_image_paint;
|
| base::Optional<base::TimeDelta> first_contentful_paint;
|
| + base::Optional<base::TimeDelta> experimental_first_meaningful_paint;
|
| base::Optional<base::TimeDelta> parse_blocked_on_script_load_duration;
|
| base::Optional<base::TimeDelta> parse_stop;
|
| if (WasStartedInForegroundOptionalEventInForeground(timing.response_start,
|
| info)) {
|
| response_start = timing.response_start;
|
| }
|
| if (WasStartedInForegroundOptionalEventInForeground(timing.load_event_start,
|
| info)) {
|
| load_event_start = timing.load_event_start;
|
| }
|
| if (WasStartedInForegroundOptionalEventInForeground(timing.first_image_paint,
|
| info)) {
|
| first_image_paint = timing.first_image_paint;
|
| }
|
| if (WasStartedInForegroundOptionalEventInForeground(
|
| timing.first_contentful_paint, info)) {
|
| first_contentful_paint = timing.first_contentful_paint;
|
| }
|
| if (WasStartedInForegroundOptionalEventInForeground(
|
| + timing.first_meaningful_paint, info)) {
|
| + experimental_first_meaningful_paint = timing.first_meaningful_paint;
|
| + }
|
| + if (WasStartedInForegroundOptionalEventInForeground(
|
| timing.parse_blocked_on_script_load_duration, info)) {
|
| parse_blocked_on_script_load_duration =
|
| timing.parse_blocked_on_script_load_duration;
|
| }
|
| if (WasStartedInForegroundOptionalEventInForeground(timing.parse_stop,
|
| info)) {
|
| parse_stop = timing.parse_stop;
|
| }
|
|
|
| DataReductionProxyPageLoadTiming data_reduction_proxy_timing(
|
| timing.navigation_start, response_start, load_event_start,
|
| first_image_paint, first_contentful_paint,
|
| + experimental_first_meaningful_paint,
|
| parse_blocked_on_script_load_duration, parse_stop);
|
| GetPingbackClient()->SendPingback(*data_, data_reduction_proxy_timing);
|
| }
|
|
|
| void DataReductionProxyMetricsObserver::OnDomContentLoadedEventStart(
|
| const page_load_metrics::PageLoadTiming& timing,
|
| const page_load_metrics::PageLoadExtraInfo& info) {
|
| RECORD_HISTOGRAMS_FOR_SUFFIX(
|
| data_, timing.dom_content_loaded_event_start,
|
| timing.dom_content_loaded_event_start.value(), info,
|
| @@ -225,20 +233,28 @@ void DataReductionProxyMetricsObserver::OnFirstImagePaint(
|
| }
|
|
|
| void DataReductionProxyMetricsObserver::OnFirstContentfulPaint(
|
| const page_load_metrics::PageLoadTiming& timing,
|
| const page_load_metrics::PageLoadExtraInfo& info) {
|
| RECORD_HISTOGRAMS_FOR_SUFFIX(data_, timing.first_contentful_paint,
|
| timing.first_contentful_paint.value(), info,
|
| internal::kHistogramFirstContentfulPaintSuffix);
|
| }
|
|
|
| +void DataReductionProxyMetricsObserver::OnFirstMeaningfulPaint(
|
| + const page_load_metrics::PageLoadTiming& timing,
|
| + const page_load_metrics::PageLoadExtraInfo& info) {
|
| + RECORD_HISTOGRAMS_FOR_SUFFIX(data_, timing.first_meaningful_paint,
|
| + timing.first_meaningful_paint.value(), info,
|
| + internal::kHistogramFirstMeaningfulPaintSuffix);
|
| +}
|
| +
|
| void DataReductionProxyMetricsObserver::OnParseStart(
|
| const page_load_metrics::PageLoadTiming& timing,
|
| const page_load_metrics::PageLoadExtraInfo& info) {
|
| RECORD_HISTOGRAMS_FOR_SUFFIX(data_, timing.parse_start,
|
| timing.parse_start.value(), info,
|
| internal::kHistogramParseStartSuffix);
|
| }
|
|
|
| void DataReductionProxyMetricsObserver::OnParseStop(
|
| const page_load_metrics::PageLoadTiming& timing,
|
|
|