| 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 28bf13da2179a54cd7c3ad70c924800e15be0dc1..5fff9988c3d7683e2480d6b988861826c0dbae06 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
|
| @@ -157,6 +157,21 @@ const char kHistogramLoadTypeFirstContentfulPaintNewNavigation[] =
|
| "PageLoad.PaintTiming.NavigationToFirstContentfulPaint.LoadType."
|
| "NewNavigation";
|
|
|
| +const char kHistogramPageTimingPageEnd[] =
|
| + "PageLoad.Experimental.PageTiming.NavigationToPageEnd";
|
| +const char kHistogramPageTimingFirstPaintToPageEnd[] =
|
| + "PageLoad.Experimental.PageTiming.FirstPaintToPageEnd";
|
| +
|
| +const char kHistogramPageTimingPageEndNoEndTime[] =
|
| + "PageLoad.Experimental.PageTiming.NavigationToPageEnd.NoEndTime";
|
| +const char kHistogramPageTimingFirstPaintToPageEndNoEndTime[] =
|
| + "PageLoad.Experimental.PageTiming.FirstPaintToPageEnd.NoEndTime";
|
| +
|
| +const char kHistogramPageTimingFirstBackground[] =
|
| + "PageLoad.PageTiming.NavigationToFirstBackground";
|
| +const char kHistogramPageTimingFirstPaintToFirstBackground[] =
|
| + "PageLoad.PageTiming.FirstPaintToFirstBackground";
|
| +
|
| const char kHistogramLoadTypeParseStartReload[] =
|
| "PageLoad.ParseTiming.NavigationToParseStart.LoadType.Reload";
|
| const char kHistogramLoadTypeParseStartForwardBack[] =
|
| @@ -169,10 +184,10 @@ const char kHistogramLoadTypeParseStartNewNavigation[] =
|
| "PageLoad.ParseTiming.NavigationToParseStart.LoadType.NewNavigation";
|
|
|
| const char kHistogramFirstForeground[] =
|
| - "PageLoad.Timing2.NavigationToFirstForeground";
|
| + "PageLoad.PageTiming.NavigationToFirstForeground";
|
|
|
| const char kHistogramFailedProvisionalLoad[] =
|
| - "PageLoad.Timing2.NavigationToFailedProvisionalLoad";
|
| + "PageLoad.PageTiming.NavigationToFailedProvisionalLoad";
|
|
|
| const char kHistogramForegroundToFirstPaint[] =
|
| "PageLoad.PaintTiming.ForegroundToFirstPaint";
|
| @@ -632,10 +647,9 @@ void CorePageLoadMetricsObserver::RecordTimingHistograms(
|
| const page_load_metrics::PageLoadExtraInfo& info) {
|
| // 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_foreground_time)
|
| - PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstForeground,
|
| - info.first_foreground_time.value());
|
| + if (!info.started_in_foreground && info.first_foreground_time) {
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstForeground,
|
| + info.first_foreground_time.value());
|
| }
|
|
|
| if (timing.first_paint && !timing.first_meaningful_paint) {
|
| @@ -668,6 +682,39 @@ void CorePageLoadMetricsObserver::RecordTimingHistograms(
|
| timing.first_meaningful_paint.value());
|
| }
|
| }
|
| +
|
| + if (!info.started_in_foreground)
|
| + return;
|
| +
|
| + if (info.first_background_time) {
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramPageTimingFirstBackground,
|
| + info.first_background_time.value());
|
| + if (timing.first_paint &&
|
| + timing.first_paint <= info.first_background_time) {
|
| + PAGE_LOAD_HISTOGRAM(
|
| + internal::kHistogramPageTimingFirstPaintToFirstBackground,
|
| + info.first_background_time.value() - timing.first_paint.value());
|
| + }
|
| + } else if (info.page_end_time) {
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramPageTimingPageEnd,
|
| + info.page_end_time.value());
|
| + if (timing.first_paint && timing.first_paint <= info.page_end_time) {
|
| + PAGE_LOAD_HISTOGRAM(
|
| + internal::kHistogramPageTimingFirstPaintToPageEnd,
|
| + info.page_end_time.value() - timing.first_paint.value());
|
| + }
|
| + } else {
|
| + // If we terminate via FlushMetricsOnAppEnterBackground, we may have neither
|
| + // a first_background_time nor a page_end_time.
|
| + base::TimeDelta end_time = base::TimeTicks::Now() - navigation_start_;
|
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramPageTimingPageEndNoEndTime,
|
| + end_time);
|
| + if (timing.first_paint && timing.first_paint <= end_time) {
|
| + PAGE_LOAD_HISTOGRAM(
|
| + internal::kHistogramPageTimingFirstPaintToPageEndNoEndTime,
|
| + end_time - timing.first_paint.value());
|
| + }
|
| + }
|
| }
|
|
|
| void CorePageLoadMetricsObserver::RecordByteAndResourceHistograms(
|
|
|