| Index: chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
|
| diff --git a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
|
| index 75e419fc4d7b171c8ff114490d716ff7c08d3578..46fefba1bc0c5d446dfab02d05a88b4678c075a3 100644
|
| --- a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
|
| +++ b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
|
| @@ -67,58 +67,115 @@ PageLoadType GetPageLoadType(ui::PageTransition transition) {
|
| namespace internal {
|
|
|
| const char kHistogramCommit[] = "PageLoad.Timing2.NavigationToCommit";
|
| +const char kHistogramFirstLayout[] = "PageLoad.Timing2.NavigationToFirstLayout";
|
| +const char kHistogramFirstTextPaint[] =
|
| + "PageLoad.Timing2.NavigationToFirstTextPaint";
|
| +const char kHistogramDomContentLoaded[] =
|
| + "PageLoad.Timing2.NavigationToDOMContentLoadedEventFired";
|
| +const char kHistogramDomLoadingToDomContentLoaded[] =
|
| + "PageLoad.Timing2.DOMLoadingToDOMContentLoadedEventFired";
|
| +const char kHistogramLoad[] = "PageLoad.Timing2.NavigationToLoadEventFired";
|
| +const char kHistogramFirstPaint[] = "PageLoad.Timing2.NavigationToFirstPaint";
|
| +const char kHistogramFirstImagePaint[] =
|
| + "PageLoad.Timing2.NavigationToFirstImagePaint";
|
| +const char kHistogramFirstContentfulPaint[] =
|
| + "PageLoad.Timing2.NavigationToFirstContentfulPaint";
|
| +const char kHistogramDomLoadingToFirstContentfulPaint[] =
|
| + "PageLoad.Timing2.DOMLoadingToFirstContentfulPaint";
|
| +const char kHistogramParseDuration[] = "PageLoad.Timing2.ParseDuration";
|
| +const char kHistogramParseBlockedOnScriptLoad[] =
|
| + "PageLoad.Timing2.ParseBlockedOnScriptLoad";
|
| +const char kHistogramParseBlockedOnScriptLoadParseComplete[] =
|
| + "PageLoad.Timing2.ParseBlockedOnScriptLoad.ParseComplete";
|
| +const char kHistogramParseStartToFirstContentfulPaint[] =
|
| + "PageLoad.Timing2.ParseStartToFirstContentfulPaint";
|
| +const char kHistogramParseBlockedOnScriptLoadDocumentWrite[] =
|
| + "PageLoad.Timing2.ParseBlockedOnScriptLoadFromDocumentWrite";
|
| +const char kHistogramParseBlockedOnScriptLoadDocumentWriteParseComplete[] =
|
| + "PageLoad.Timing2.ParseBlockedOnScriptLoadFromDocumentWrite.ParseComplete";
|
|
|
| const char kBackgroundHistogramCommit[] =
|
| "PageLoad.Timing2.NavigationToCommit.Background";
|
| -
|
| -const char kHistogramDomContentLoaded[] =
|
| - "PageLoad.DocumentTiming.NavigationToDOMContentLoadedEventFired";
|
| +const char kBackgroundHistogramFirstLayout[] =
|
| + "PageLoad.Timing2.NavigationToFirstLayout.Background";
|
| +const char kBackgroundHistogramFirstTextPaint[] =
|
| + "PageLoad.Timing2.NavigationToFirstTextPaint.Background";
|
| const char kBackgroundHistogramDomContentLoaded[] =
|
| + "PageLoad.Timing2.NavigationToDOMContentLoadedEventFired.Background";
|
| +const char kBackgroundHistogramLoad[] =
|
| + "PageLoad.Timing2.NavigationToLoadEventFired.Background";
|
| +const char kBackgroundHistogramFirstPaint[] =
|
| + "PageLoad.Timing2.NavigationToFirstPaint.Background";
|
| +const char kBackgroundHistogramFirstImagePaint[] =
|
| + "PageLoad.Timing2.NavigationToFirstImagePaint.Background.";
|
| +const char kBackgroundHistogramFirstContentfulPaint[] =
|
| + "PageLoad.Timing2.NavigationToFirstContentfulPaint.Background";
|
| +const char kBackgroundHistogramParseDuration[] =
|
| + "PageLoad.Timing2.ParseDuration.Background";
|
| +const char kBackgroundHistogramParseBlockedOnScriptLoad[] =
|
| + "PageLoad.Timing2.ParseBlockedOnScriptLoad.Background";
|
| +const char kBackgroundHistogramParseBlockedOnScriptLoadParseComplete[] =
|
| + "PageLoad.Timing2.ParseBlockedOnScriptLoad.ParseComplete.Background";
|
| +const char kBackgroundHistogramParseBlockedOnScriptLoadDocumentWrite[] =
|
| + "PageLoad.Timing2.ParseBlockedOnScriptLoadFromDocumentWrite.Background";
|
| +const char
|
| + kBackgroundHistogramParseBlockedOnScriptLoadDocumentWriteParseComplete[] =
|
| + "PageLoad.Timing2.ParseBlockedOnScriptLoadFromDocumentWrite."
|
| + "ParseComplete.Background";
|
| +
|
| +// Immediate histogram variants, which are logged as soon as the associated
|
| +// event is observed. These will eventually become our standard metrics, and the
|
| +// Timing2 variants will be deprecated in M54.
|
| +const char kHistogramDomContentLoadedImmediate[] =
|
| + "PageLoad.DocumentTiming.NavigationToDOMContentLoadedEventFired";
|
| +const char kBackgroundHistogramDomContentLoadedImmediate[] =
|
| "PageLoad.DocumentTiming.NavigationToDOMContentLoadedEventFired.Background";
|
| -const char kHistogramLoad[] =
|
| +const char kHistogramLoadImmediate[] =
|
| "PageLoad.DocumentTiming.NavigationToLoadEventFired";
|
| -const char kBackgroundHistogramLoad[] =
|
| +const char kBackgroundHistogramLoadImmediate[] =
|
| "PageLoad.DocumentTiming.NavigationToLoadEventFired.Background";
|
| -const char kHistogramFirstLayout[] =
|
| +const char kHistogramFirstLayoutImmediate[] =
|
| "PageLoad.DocumentTiming.NavigationToFirstLayout";
|
| -const char kBackgroundHistogramFirstLayout[] =
|
| +const char kBackgroundHistogramFirstLayoutImmediate[] =
|
| "PageLoad.DocumentTiming.NavigationToFirstLayout.Background";
|
| -const char kHistogramFirstPaint[] =
|
| +const char kHistogramFirstPaintImmediate[] =
|
| "PageLoad.PaintTiming.NavigationToFirstPaint";
|
| -const char kBackgroundHistogramFirstPaint[] =
|
| +const char kBackgroundHistogramFirstPaintImmediate[] =
|
| "PageLoad.PaintTiming.NavigationToFirstPaint.Background";
|
| -const char kHistogramFirstTextPaint[] =
|
| +const char kHistogramFirstTextPaintImmediate[] =
|
| "PageLoad.PaintTiming.NavigationToFirstTextPaint";
|
| -const char kBackgroundHistogramFirstTextPaint[] =
|
| +const char kBackgroundHistogramFirstTextPaintImmediate[] =
|
| "PageLoad.PaintTiming.NavigationToFirstTextPaint.Background";
|
| -const char kHistogramFirstImagePaint[] =
|
| +const char kHistogramFirstImagePaintImmediate[] =
|
| "PageLoad.PaintTiming.NavigationToFirstImagePaint";
|
| -const char kBackgroundHistogramFirstImagePaint[] =
|
| +const char kBackgroundHistogramFirstImagePaintImmediate[] =
|
| "PageLoad.PaintTiming.NavigationToFirstImagePaint.Background";
|
| -const char kHistogramFirstContentfulPaint[] =
|
| +const char kHistogramFirstContentfulPaintImmediate[] =
|
| "PageLoad.PaintTiming.NavigationToFirstContentfulPaint";
|
| -const char kBackgroundHistogramFirstContentfulPaint[] =
|
| +const char kBackgroundHistogramFirstContentfulPaintImmediate[] =
|
| "PageLoad.PaintTiming.NavigationToFirstContentfulPaint.Background";
|
| -const char kHistogramParseStartToFirstContentfulPaint[] =
|
| +const char kHistogramParseStartToFirstContentfulPaintImmediate[] =
|
| "PageLoad.PaintTiming.ParseStartToFirstContentfulPaint";
|
| -const char kBackgroundHistogramParseStartToFirstContentfulPaint[] =
|
| +const char kBackgroundHistogramParseStartToFirstContentfulPaintImmediate[] =
|
| "PageLoad.PaintTiming.ParseStartToFirstContentfulPaint.Background";
|
| -const char kHistogramParseStart[] =
|
| +const char kHistogramParseStartImmediate[] =
|
| "PageLoad.ParseTiming.NavigationToParseStart";
|
| -const char kBackgroundHistogramParseStart[] =
|
| +const char kBackgroundHistogramParseStartImmediate[] =
|
| "PageLoad.ParseTiming.NavigationToParseStart.Background";
|
| -const char kHistogramParseDuration[] = "PageLoad.ParseTiming.ParseDuration";
|
| -const char kBackgroundHistogramParseDuration[] =
|
| +const char kHistogramParseDurationImmediate[] =
|
| + "PageLoad.ParseTiming.ParseDuration";
|
| +const char kBackgroundHistogramParseDurationImmediate[] =
|
| "PageLoad.ParseTiming.ParseDuration.Background";
|
| -const char kHistogramParseBlockedOnScriptLoad[] =
|
| +const char kHistogramParseBlockedOnScriptLoadImmediate[] =
|
| "PageLoad.ParseTiming.ParseBlockedOnScriptLoad";
|
| -const char kBackgroundHistogramParseBlockedOnScriptLoad[] =
|
| +const char kBackgroundHistogramParseBlockedOnScriptLoadImmediate[] =
|
| "PageLoad.ParseTiming.ParseBlockedOnScriptLoad.Background";
|
| -const char kHistogramParseBlockedOnScriptLoadDocumentWrite[] =
|
| +const char kHistogramParseBlockedOnScriptLoadDocumentWriteImmediate[] =
|
| "PageLoad.ParseTiming.ParseBlockedOnScriptLoadFromDocumentWrite";
|
| -const char kBackgroundHistogramParseBlockedOnScriptLoadDocumentWrite[] =
|
| - "PageLoad.ParseTiming.ParseBlockedOnScriptLoadFromDocumentWrite."
|
| - "Background";
|
| +const char
|
| + kBackgroundHistogramParseBlockedOnScriptLoadDocumentWriteImmediate[] =
|
| + "PageLoad.ParseTiming.ParseBlockedOnScriptLoadFromDocumentWrite."
|
| + "Background";
|
|
|
| const char kHistogramLoadTypeFirstContentfulPaintReload[] =
|
| "PageLoad.PaintTiming.NavigationToFirstContentfulPaint.LoadType."
|
| @@ -156,7 +213,7 @@ const char kHistogramFailedProvisionalLoad[] =
|
| "PageLoad.Timing2.NavigationToFailedProvisionalLoad";
|
|
|
| const char kHistogramForegroundToFirstPaint[] =
|
| - "PageLoad.PaintTiming.ForegroundToFirstPaint";
|
| + "PageLoad.Timing2.ForegroundToFirstPaint";
|
|
|
| const char kRapporMetricsNameCoarseTiming[] =
|
| "PageLoad.CoarseTiming.NavigationToFirstContentfulPaint";
|
| @@ -180,10 +237,10 @@ void CorePageLoadMetricsObserver::OnDomContentLoadedEventStart(
|
| const page_load_metrics::PageLoadExtraInfo& info) {
|
| if (WasStartedInForegroundOptionalEventInForeground(
|
| timing.dom_content_loaded_event_start, info)) {
|
| - PAGE_LOAD_HISTOGRAM(internal::kHistogramDomContentLoaded,
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramDomContentLoadedImmediate,
|
| timing.dom_content_loaded_event_start.value());
|
| } else {
|
| - PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramDomContentLoaded,
|
| + PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramDomContentLoadedImmediate,
|
| timing.dom_content_loaded_event_start.value());
|
| }
|
| }
|
| @@ -193,10 +250,10 @@ void CorePageLoadMetricsObserver::OnLoadEventStart(
|
| const page_load_metrics::PageLoadExtraInfo& info) {
|
| if (WasStartedInForegroundOptionalEventInForeground(timing.load_event_start,
|
| info)) {
|
| - PAGE_LOAD_HISTOGRAM(internal::kHistogramLoad,
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramLoadImmediate,
|
| timing.load_event_start.value());
|
| } else {
|
| - PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramLoad,
|
| + PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramLoadImmediate,
|
| timing.load_event_start.value());
|
| }
|
| }
|
| @@ -206,10 +263,10 @@ void CorePageLoadMetricsObserver::OnFirstLayout(
|
| const page_load_metrics::PageLoadExtraInfo& info) {
|
| if (WasStartedInForegroundOptionalEventInForeground(timing.first_layout,
|
| info)) {
|
| - PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstLayout,
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstLayoutImmediate,
|
| timing.first_layout.value());
|
| } else {
|
| - PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramFirstLayout,
|
| + PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramFirstLayoutImmediate,
|
| timing.first_layout.value());
|
| }
|
| }
|
| @@ -219,25 +276,12 @@ void CorePageLoadMetricsObserver::OnFirstPaint(
|
| const page_load_metrics::PageLoadExtraInfo& info) {
|
| if (WasStartedInForegroundOptionalEventInForeground(timing.first_paint,
|
| info)) {
|
| - PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstPaint,
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstPaintImmediate,
|
| timing.first_paint.value());
|
| } else {
|
| - PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramFirstPaint,
|
| + PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramFirstPaintImmediate,
|
| timing.first_paint.value());
|
| }
|
| -
|
| - // Record the time to first paint for pages which were:
|
| - // - Opened in the background.
|
| - // - Moved to the foreground prior to the first paint.
|
| - // - Not moved back to the background prior to the first paint.
|
| - if (!info.started_in_foreground && info.first_foreground_time &&
|
| - info.first_foreground_time.value() <= timing.first_paint.value() &&
|
| - (!info.first_background_time ||
|
| - timing.first_paint.value() <= info.first_background_time.value())) {
|
| - PAGE_LOAD_HISTOGRAM(
|
| - internal::kHistogramForegroundToFirstPaint,
|
| - timing.first_paint.value() - info.first_foreground_time.value());
|
| - }
|
| }
|
|
|
| void CorePageLoadMetricsObserver::OnFirstTextPaint(
|
| @@ -245,10 +289,10 @@ void CorePageLoadMetricsObserver::OnFirstTextPaint(
|
| const page_load_metrics::PageLoadExtraInfo& info) {
|
| if (WasStartedInForegroundOptionalEventInForeground(timing.first_text_paint,
|
| info)) {
|
| - PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstTextPaint,
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstTextPaintImmediate,
|
| timing.first_text_paint.value());
|
| } else {
|
| - PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramFirstTextPaint,
|
| + PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramFirstTextPaintImmediate,
|
| timing.first_text_paint.value());
|
| }
|
| }
|
| @@ -258,10 +302,10 @@ void CorePageLoadMetricsObserver::OnFirstImagePaint(
|
| const page_load_metrics::PageLoadExtraInfo& info) {
|
| if (WasStartedInForegroundOptionalEventInForeground(timing.first_image_paint,
|
| info)) {
|
| - PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstImagePaint,
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstImagePaintImmediate,
|
| timing.first_image_paint.value());
|
| } else {
|
| - PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramFirstImagePaint,
|
| + PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramFirstImagePaintImmediate,
|
| timing.first_image_paint.value());
|
| }
|
| }
|
| @@ -271,10 +315,10 @@ void CorePageLoadMetricsObserver::OnFirstContentfulPaint(
|
| const page_load_metrics::PageLoadExtraInfo& info) {
|
| if (WasStartedInForegroundOptionalEventInForeground(
|
| timing.first_contentful_paint, info)) {
|
| - PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstContentfulPaint,
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstContentfulPaintImmediate,
|
| timing.first_contentful_paint.value());
|
| PAGE_LOAD_HISTOGRAM(
|
| - internal::kHistogramParseStartToFirstContentfulPaint,
|
| + internal::kHistogramParseStartToFirstContentfulPaintImmediate,
|
| timing.first_contentful_paint.value() - timing.parse_start.value());
|
|
|
| switch (GetPageLoadType(transition_)) {
|
| @@ -303,10 +347,11 @@ void CorePageLoadMetricsObserver::OnFirstContentfulPaint(
|
| break;
|
| }
|
| } else {
|
| - PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramFirstContentfulPaint,
|
| - timing.first_contentful_paint.value());
|
| PAGE_LOAD_HISTOGRAM(
|
| - internal::kBackgroundHistogramParseStartToFirstContentfulPaint,
|
| + internal::kBackgroundHistogramFirstContentfulPaintImmediate,
|
| + timing.first_contentful_paint.value());
|
| + PAGE_LOAD_HISTOGRAM(
|
| + internal::kBackgroundHistogramParseStartToFirstContentfulPaintImmediate,
|
| timing.first_contentful_paint.value() - timing.parse_start.value());
|
| }
|
| }
|
| @@ -316,7 +361,7 @@ void CorePageLoadMetricsObserver::OnParseStart(
|
| const page_load_metrics::PageLoadExtraInfo& info) {
|
| if (WasStartedInForegroundOptionalEventInForeground(timing.parse_start,
|
| info)) {
|
| - PAGE_LOAD_HISTOGRAM(internal::kHistogramParseStart,
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramParseStartImmediate,
|
| timing.parse_start.value());
|
|
|
| switch (GetPageLoadType(transition_)) {
|
| @@ -337,7 +382,7 @@ void CorePageLoadMetricsObserver::OnParseStart(
|
| break;
|
| }
|
| } else {
|
| - PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramParseStart,
|
| + PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramParseStartImmediate,
|
| timing.parse_start.value());
|
| }
|
| }
|
| @@ -349,20 +394,23 @@ void CorePageLoadMetricsObserver::OnParseStop(
|
| timing.parse_stop.value() - timing.parse_start.value();
|
| if (WasStartedInForegroundOptionalEventInForeground(timing.parse_stop,
|
| info)) {
|
| - PAGE_LOAD_HISTOGRAM(internal::kHistogramParseDuration, parse_duration);
|
| - PAGE_LOAD_HISTOGRAM(internal::kHistogramParseBlockedOnScriptLoad,
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramParseDurationImmediate,
|
| + parse_duration);
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramParseBlockedOnScriptLoadImmediate,
|
| timing.parse_blocked_on_script_load_duration.value());
|
| PAGE_LOAD_HISTOGRAM(
|
| - internal::kHistogramParseBlockedOnScriptLoadDocumentWrite,
|
| + internal::kHistogramParseBlockedOnScriptLoadDocumentWriteImmediate,
|
| timing.parse_blocked_on_script_load_from_document_write_duration
|
| .value());
|
| } else {
|
| - PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramParseDuration,
|
| + PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramParseDurationImmediate,
|
| parse_duration);
|
| - PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramParseBlockedOnScriptLoad,
|
| - timing.parse_blocked_on_script_load_duration.value());
|
| PAGE_LOAD_HISTOGRAM(
|
| - internal::kBackgroundHistogramParseBlockedOnScriptLoadDocumentWrite,
|
| + internal::kBackgroundHistogramParseBlockedOnScriptLoadImmediate,
|
| + timing.parse_blocked_on_script_load_duration.value());
|
| + PAGE_LOAD_HISTOGRAM(
|
| + internal::
|
| + kBackgroundHistogramParseBlockedOnScriptLoadDocumentWriteImmediate,
|
| timing.parse_blocked_on_script_load_from_document_write_duration
|
| .value());
|
| }
|
| @@ -399,6 +447,23 @@ void CorePageLoadMetricsObserver::OnFailedProvisionalLoad(
|
| void CorePageLoadMetricsObserver::RecordTimingHistograms(
|
| const page_load_metrics::PageLoadTiming& timing,
|
| const page_load_metrics::PageLoadExtraInfo& info) {
|
| + // Record metrics for pages which start in the foreground and are
|
| + // backgrounded.
|
| + if (info.started_in_foreground && info.first_background_time) {
|
| + const base::TimeDelta first_background_time =
|
| + info.first_background_time.value();
|
| +
|
| + if (!timing.first_paint || timing.first_paint > first_background_time) {
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramBackgroundBeforePaint,
|
| + first_background_time);
|
| + }
|
| + if (timing.parse_start && first_background_time >= timing.parse_start &&
|
| + (!timing.parse_stop || timing.parse_stop > first_background_time)) {
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramBackgroundDuringParse,
|
| + first_background_time);
|
| + }
|
| + }
|
| +
|
| const base::TimeDelta time_to_commit = info.time_to_commit.value();
|
| if (WasStartedInForegroundOptionalEventInForeground(info.time_to_commit,
|
| info)) {
|
| @@ -406,26 +471,151 @@ void CorePageLoadMetricsObserver::RecordTimingHistograms(
|
| } else {
|
| PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramCommit, time_to_commit);
|
| }
|
| + if (timing.dom_content_loaded_event_start) {
|
| + if (WasStartedInForegroundOptionalEventInForeground(
|
| + timing.dom_content_loaded_event_start, info)) {
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramDomContentLoaded,
|
| + timing.dom_content_loaded_event_start.value());
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramDomLoadingToDomContentLoaded,
|
| + timing.dom_content_loaded_event_start.value() -
|
| + timing.dom_loading.value());
|
| + } else {
|
| + PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramDomContentLoaded,
|
| + timing.dom_content_loaded_event_start.value());
|
| + }
|
| + }
|
| + if (timing.load_event_start) {
|
| + if (WasStartedInForegroundOptionalEventInForeground(timing.load_event_start,
|
| + info)) {
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramLoad,
|
| + timing.load_event_start.value());
|
| + } else {
|
| + PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramLoad,
|
| + timing.load_event_start.value());
|
| + }
|
| + }
|
| + if (timing.first_layout) {
|
| + if (WasStartedInForegroundOptionalEventInForeground(timing.first_layout,
|
| + info)) {
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstLayout,
|
| + timing.first_layout.value());
|
| + } else {
|
| + PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramFirstLayout,
|
| + timing.first_layout.value());
|
| + }
|
| + }
|
| + if (timing.first_paint) {
|
| + if (WasStartedInForegroundOptionalEventInForeground(timing.first_paint,
|
| + info)) {
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstPaint,
|
| + timing.first_paint.value());
|
| + } else {
|
| + PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramFirstPaint,
|
| + timing.first_paint.value());
|
| + }
|
| +
|
| + // Record the time to first paint for pages which were:
|
| + // - Opened in the background.
|
| + // - Moved to the foreground prior to the first paint.
|
| + // - Not moved back to the background prior to the first paint.
|
| + if (!info.started_in_foreground && info.first_foreground_time &&
|
| + timing.first_paint > info.first_foreground_time.value() &&
|
| + (!info.first_background_time ||
|
| + timing.first_paint < info.first_background_time.value())) {
|
| + PAGE_LOAD_HISTOGRAM(
|
| + internal::kHistogramForegroundToFirstPaint,
|
| + timing.first_paint.value() - info.first_foreground_time.value());
|
| + }
|
| + }
|
| + if (timing.first_text_paint) {
|
| + if (WasStartedInForegroundOptionalEventInForeground(timing.first_text_paint,
|
| + info)) {
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstTextPaint,
|
| + timing.first_text_paint.value());
|
| + } else {
|
| + PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramFirstTextPaint,
|
| + timing.first_text_paint.value());
|
| + }
|
| + }
|
| + if (timing.first_image_paint) {
|
| + if (WasStartedInForegroundOptionalEventInForeground(
|
| + timing.first_image_paint, info)) {
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstImagePaint,
|
| + timing.first_image_paint.value());
|
| + } else {
|
| + PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramFirstImagePaint,
|
| + timing.first_image_paint.value());
|
| + }
|
| + }
|
| + if (timing.first_contentful_paint) {
|
| + if (WasStartedInForegroundOptionalEventInForeground(
|
| + timing.first_contentful_paint, info)) {
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstContentfulPaint,
|
| + timing.first_contentful_paint.value());
|
| + PAGE_LOAD_HISTOGRAM(
|
| + internal::kHistogramParseStartToFirstContentfulPaint,
|
| + timing.first_contentful_paint.value() - timing.parse_start.value());
|
| + PAGE_LOAD_HISTOGRAM(
|
| + internal::kHistogramDomLoadingToFirstContentfulPaint,
|
| + timing.first_contentful_paint.value() - timing.dom_loading.value());
|
| + } else {
|
| + PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramFirstContentfulPaint,
|
| + timing.first_contentful_paint.value());
|
| + }
|
| + }
|
| + if (timing.parse_start) {
|
| + if (WasParseInForeground(timing.parse_start, timing.parse_stop, info)) {
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramParseBlockedOnScriptLoad,
|
| + timing.parse_blocked_on_script_load_duration.value());
|
| + PAGE_LOAD_HISTOGRAM(
|
| + internal::kHistogramParseBlockedOnScriptLoadDocumentWrite,
|
| + timing.parse_blocked_on_script_load_from_document_write_duration
|
| + .value());
|
| + } else {
|
| + PAGE_LOAD_HISTOGRAM(
|
| + internal::kBackgroundHistogramParseBlockedOnScriptLoad,
|
| + timing.parse_blocked_on_script_load_duration.value());
|
| + PAGE_LOAD_HISTOGRAM(
|
| + internal::kBackgroundHistogramParseBlockedOnScriptLoadDocumentWrite,
|
| + timing.parse_blocked_on_script_load_from_document_write_duration
|
| + .value());
|
| + }
|
| + }
|
| +
|
| + if (timing.parse_stop) {
|
| + base::TimeDelta parse_duration =
|
| + timing.parse_stop.value() - timing.parse_start.value();
|
| + if (WasStartedInForegroundOptionalEventInForeground(timing.parse_stop,
|
| + info)) {
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramParseDuration, parse_duration);
|
| + PAGE_LOAD_HISTOGRAM(
|
| + internal::kHistogramParseBlockedOnScriptLoadParseComplete,
|
| + timing.parse_blocked_on_script_load_duration.value());
|
| + PAGE_LOAD_HISTOGRAM(
|
| + internal::
|
| + kHistogramParseBlockedOnScriptLoadDocumentWriteParseComplete,
|
| + timing.parse_blocked_on_script_load_from_document_write_duration
|
| + .value());
|
| + } else {
|
| + PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramParseDuration,
|
| + parse_duration);
|
| + PAGE_LOAD_HISTOGRAM(
|
| + internal::kBackgroundHistogramParseBlockedOnScriptLoadParseComplete,
|
| + timing.parse_blocked_on_script_load_duration.value());
|
| + PAGE_LOAD_HISTOGRAM(
|
| + internal::
|
| + kBackgroundHistogramParseBlockedOnScriptLoadDocumentWriteParseComplete,
|
| + timing.parse_blocked_on_script_load_from_document_write_duration
|
| + .value());
|
| + }
|
| + }
|
|
|
| // Log time to first foreground / time to first background. Log counts that we
|
| // started a relevant page load in the foreground / background.
|
| if (info.started_in_foreground) {
|
| - if (info.first_background_time) {
|
| - const base::TimeDelta first_background_time =
|
| - info.first_background_time.value();
|
| -
|
| + if (info.first_background_time)
|
| PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstBackground,
|
| - first_background_time);
|
| - if (!timing.first_paint || timing.first_paint > first_background_time) {
|
| - PAGE_LOAD_HISTOGRAM(internal::kHistogramBackgroundBeforePaint,
|
| - first_background_time);
|
| - }
|
| - if (timing.parse_start && first_background_time >= timing.parse_start &&
|
| - (!timing.parse_stop || timing.parse_stop > first_background_time)) {
|
| - PAGE_LOAD_HISTOGRAM(internal::kHistogramBackgroundDuringParse,
|
| - first_background_time);
|
| - }
|
| - }
|
| + info.first_background_time.value());
|
| } else {
|
| if (info.first_foreground_time)
|
| PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstForeground,
|
|
|