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

Unified Diff: chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc

Issue 2172183002: Revert "Remove non-immediate core page load metrics" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
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,

Powered by Google App Engine
This is Rietveld 408576698