Index: chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc |
diff --git a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc |
index 12287f6e72813bb3bb55189b88f3cf2262847582..c2ee763969dc2d1ed53e5dcb4b56c30e2e3ad8c4 100644 |
--- a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc |
+++ b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc |
@@ -37,29 +37,41 @@ const char kHistogramFromGWSAbortUnknownNavigationBeforeCommit[] = |
const char kHistogramFromGWSAbortNewNavigationBeforePaint[] = |
"PageLoad.Clients.FromGWS2.AbortTiming.NewNavigation.AfterCommit." |
"BeforePaint"; |
+const char kHistogramFromGWSAbortNewNavigationBeforeInteraction[] = |
+ "PageLoad.Clients.FromGWS2.AbortTiming.NewNavigation.AfterPaint." |
+ "BeforeInteraction"; |
const char kHistogramFromGWSAbortStopBeforeCommit[] = |
"PageLoad.Clients.FromGWS2.AbortTiming.Stop.BeforeCommit"; |
const char kHistogramFromGWSAbortStopBeforePaint[] = |
"PageLoad.Clients.FromGWS2.AbortTiming.Stop.AfterCommit.BeforePaint"; |
+const char kHistogramFromGWSAbortStopBeforeInteraction[] = |
+ "PageLoad.Clients.FromGWS2.AbortTiming.Stop.AfterPaint.BeforeInteraction"; |
const char kHistogramFromGWSAbortCloseBeforeCommit[] = |
"PageLoad.Clients.FromGWS2.AbortTiming.Close.BeforeCommit"; |
const char kHistogramFromGWSAbortCloseBeforePaint[] = |
"PageLoad.Clients.FromGWS2.AbortTiming.Close.AfterCommit.BeforePaint"; |
+const char kHistogramFromGWSAbortCloseBeforeInteraction[] = |
+ "PageLoad.Clients.FromGWS2.AbortTiming.Close.AfterPaint.BeforeInteraction"; |
const char kHistogramFromGWSAbortOtherBeforeCommit[] = |
"PageLoad.Clients.FromGWS2.AbortTiming.Other.BeforeCommit"; |
const char kHistogramFromGWSAbortReloadBeforePaint[] = |
"PageLoad.Clients.FromGWS2.AbortTiming.Reload.AfterCommit.BeforePaint"; |
+const char kHistogramFromGWSAbortReloadBeforeInteraction[] = |
+ "PageLoad.Clients.FromGWS2.AbortTiming.Reload.AfterPaint.BeforeInteraction"; |
const char kHistogramFromGWSAbortForwardBackBeforePaint[] = |
"PageLoad.Clients.FromGWS2.AbortTiming.ForwardBackNavigation." |
"AfterCommit.BeforePaint"; |
+const char kHistogramFromGWSAbortForwardBackBeforeInteraction[] = |
+ "PageLoad.Clients.FromGWS2.AbortTiming.ForwardBackNavigation." |
+ "AfterPaint.BeforeInteraction"; |
} // namespace internal |
namespace { |
void LogCommittedAbortsBeforePaint(UserAbortType abort_type, |
- base::TimeDelta time_to_abort) { |
+ base::TimeDelta time_to_abort) { |
switch (abort_type) { |
case UserAbortType::ABORT_STOP: |
PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSAbortStopBeforePaint, |
@@ -91,6 +103,41 @@ void LogCommittedAbortsBeforePaint(UserAbortType abort_type, |
} |
} |
+void LogAbortsAfterPaintBeforeInteraction(UserAbortType abort_type, |
+ base::TimeDelta time_to_abort) { |
+ switch (abort_type) { |
+ case UserAbortType::ABORT_STOP: |
+ PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSAbortStopBeforeInteraction, |
+ time_to_abort); |
+ break; |
+ case UserAbortType::ABORT_CLOSE: |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramFromGWSAbortCloseBeforeInteraction, |
+ time_to_abort); |
+ break; |
+ case UserAbortType::ABORT_NEW_NAVIGATION: |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramFromGWSAbortNewNavigationBeforeInteraction, |
+ time_to_abort); |
+ break; |
+ case UserAbortType::ABORT_RELOAD: |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramFromGWSAbortReloadBeforeInteraction, |
+ time_to_abort); |
+ break; |
+ case UserAbortType::ABORT_FORWARD_BACK: |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramFromGWSAbortForwardBackBeforeInteraction, |
+ time_to_abort); |
+ break; |
+ default: |
+ // These should only be logged for provisional aborts. |
+ DCHECK_NE(abort_type, UserAbortType::ABORT_OTHER); |
+ DCHECK_NE(abort_type, UserAbortType::ABORT_UNKNOWN_NAVIGATION); |
+ break; |
+ } |
+} |
+ |
void LogProvisionalAborts(UserAbortType abort_type, |
base::TimeDelta time_to_abort) { |
switch (abort_type) { |
@@ -395,6 +442,11 @@ void FromGWSPageLoadMetricsLogger::OnComplete( |
(timing.first_paint.is_zero() || timing.first_paint >= time_to_abort); |
if (aborted_before_paint) |
LogCommittedAbortsBeforePaint(abort_type, time_to_abort); |
+ if ((timing.first_paint.is_zero() || timing.first_paint < time_to_abort) && |
+ (extra_info.first_user_interaction_time.is_zero() || |
+ extra_info.first_user_interaction_time >= time_to_abort)) { |
+ LogAbortsAfterPaintBeforeInteraction(abort_type, time_to_abort); |
+ } |
} else { |
if (aborted_in_foreground) |
LogProvisionalAborts(abort_type, time_to_abort); |