Index: chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc |
diff --git a/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc |
index da73fa5b48bf3cb4a6ddfe7e268021b956f7932f..b6714cf27cf14b7ef739d2c6b3577cf1a3702d21 100644 |
--- a/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc |
+++ b/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc |
@@ -60,46 +60,103 @@ const char kHistogramAbortBackgroundDuringParse[] = |
// These metrics should be temporary until we have landed on a one-size-fits-all |
// abort metric. |
-const char kHistogramAbortNewNavigationUserInitiated[] = |
+const char kHistogramAbortNewNavigationBeforeCommitUserGesture[] = |
+ "PageLoad.Experimental.AbortTiming.NewNavigation.BeforeCommit.UserGesture"; |
+const char kHistogramAbortForwardBackBeforeCommitUserGesture[] = |
+ "PageLoad.Experimental.AbortTiming.ForwardBackNavigation.BeforeCommit." |
+ "UserGesture"; |
+const char kHistogramAbortReloadBeforeCommitUserGesture[] = |
+ "PageLoad.Experimental.AbortTiming.Reload.BeforeCommit.UserGesture"; |
+const char kHistogramAbortNewNavigationBeforePaintUserGesture[] = |
+ "PageLoad.Experimental.AbortTiming.NewNavigation.AfterCommit.BeforePaint." |
+ "UserGesture"; |
+const char kHistogramAbortForwardBackBeforePaintUserGesture[] = |
+ "PageLoad.Experimental.AbortTiming.ForwardBackNavigation.AfterCommit." |
+ "BeforePaint.UserGesture"; |
+const char kHistogramAbortReloadBeforePaintUserGesture[] = |
+ "PageLoad.Experimental.AbortTiming.Reload.AfterCommit.BeforePaint." |
+ "UserGesture"; |
+const char kHistogramAbortNewNavigationBeforeCommitUserInputEvent[] = |
+ "PageLoad.Experimental.AbortTiming.NewNavigation.BeforeCommit." |
+ "UserInputEvent"; |
+const char kHistogramAbortForwardBackBeforeCommitUserInputEvent[] = |
+ "PageLoad.Experimental.AbortTiming.ForwardBackNavigation.BeforeCommit." |
+ "UserInputEvent"; |
+const char kHistogramAbortReloadBeforeCommitUserInputEvent[] = |
+ "PageLoad.Experimental.AbortTiming.Reload.BeforeCommit.UserInputEvent"; |
+const char kHistogramAbortNewNavigationBeforePaintUserInputEvent[] = |
+ "PageLoad.Experimental.AbortTiming.NewNavigation.AfterCommit.BeforePaint." |
+ "UserInputEvent"; |
+const char kHistogramAbortForwardBackBeforePaintUserInputEvent[] = |
+ "PageLoad.Experimental.AbortTiming.ForwardBackNavigation.AfterCommit." |
+ "BeforePaint.UserInputEvent"; |
+const char kHistogramAbortReloadBeforePaintUserInputEvent[] = |
+ "PageLoad.Experimental.AbortTiming.Reload.AfterCommit.BeforePaint." |
+ "UserInputEvent"; |
+ |
+const char kHistogramAbortNewNavigationBeforeCommitBrowserInitiated[] = |
"PageLoad.Experimental.AbortTiming.NewNavigation.BeforeCommit." |
- "UserInitiated"; |
-const char kHistogramAbortForwardBackUserInitiated[] = |
+ "BrowserInitiated"; |
+const char kHistogramAbortForwardBackBeforeCommitBrowserInitiated[] = |
"PageLoad.Experimental.AbortTiming.ForwardBackNavigation.BeforeCommit." |
- "UserInitiated"; |
-const char kHistogramAbortReloadUserInitiated[] = |
- "PageLoad.Experimental.AbortTiming.Reload.BeforeCommit.UserInitiated"; |
+ "BrowserInitiated"; |
+const char kHistogramAbortReloadBeforeCommitBrowserInitiated[] = |
+ "PageLoad.Experimental.AbortTiming.Reload.BeforeCommit.BrowserInitiated"; |
+const char kHistogramAbortNewNavigationBeforePaintBrowserInitiated[] = |
+ "PageLoad.Experimental.AbortTiming.NewNavigation.AfterCommit.BeforePaint." |
+ "BrowserInitiated"; |
+const char kHistogramAbortForwardBackBeforePaintBrowserInitiated[] = |
+ "PageLoad.Experimental.AbortTiming.ForwardBackNavigation.AfterCommit." |
+ "BeforePaint.BrowserInitiated"; |
+const char kHistogramAbortReloadBeforePaintBrowserInitiated[] = |
+ "PageLoad.Experimental.AbortTiming.Reload.AfterCommit.BeforePaint." |
+ "BrowserInitiated"; |
} // namespace internal |
namespace { |
-bool IsAbortUserInitiated(const page_load_metrics::PageLoadExtraInfo& info) { |
- // We consider an abort to be user initiated if the abort was triggered by a |
- // user action, and the page load being aborted was also user initiated. A |
- // user may abort a non-user-initiated page load, but we exclude these from |
- // our user initiated abort tracking since it's less clear that such an abort |
- // is interesting from a user perspective. |
- return info.abort_user_initiated && info.user_initiated; |
-} |
- |
-void RecordAbortBeforeCommit(UserAbortType abort_type, |
- bool user_initiated, |
- base::TimeDelta time_to_abort) { |
+void RecordAbortBeforeCommit( |
+ UserAbortType abort_type, |
+ page_load_metrics::UserInitiatedInfo user_initiated_info, |
+ base::TimeDelta time_to_abort) { |
switch (abort_type) { |
case UserAbortType::ABORT_RELOAD: |
PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortReloadBeforeCommit, |
time_to_abort); |
- if (user_initiated) { |
- PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortReloadUserInitiated, |
- time_to_abort); |
+ if (user_initiated_info.user_gesture) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortReloadBeforeCommitUserGesture, |
+ time_to_abort); |
+ } |
+ if (user_initiated_info.user_input_event) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortReloadBeforeCommitUserInputEvent, |
+ time_to_abort); |
+ } |
+ if (user_initiated_info.browser_initiated) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortReloadBeforeCommitBrowserInitiated, |
+ time_to_abort); |
} |
return; |
case UserAbortType::ABORT_FORWARD_BACK: |
PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortForwardBackBeforeCommit, |
time_to_abort); |
- if (user_initiated) { |
- PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortForwardBackUserInitiated, |
- time_to_abort); |
+ if (user_initiated_info.user_gesture) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortForwardBackBeforeCommitUserGesture, |
+ time_to_abort); |
+ } |
+ if (user_initiated_info.user_input_event) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortForwardBackBeforeCommitUserInputEvent, |
+ time_to_abort); |
+ } |
+ if (user_initiated_info.browser_initiated) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortForwardBackBeforeCommitBrowserInitiated, |
+ time_to_abort); |
} |
return; |
case UserAbortType::ABORT_CLIENT_REDIRECT: |
@@ -109,9 +166,20 @@ void RecordAbortBeforeCommit(UserAbortType abort_type, |
case UserAbortType::ABORT_NEW_NAVIGATION: |
PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortNewNavigationBeforeCommit, |
time_to_abort); |
- if (user_initiated) { |
- PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortNewNavigationUserInitiated, |
- time_to_abort); |
+ if (user_initiated_info.user_gesture) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortNewNavigationBeforeCommitUserGesture, |
+ time_to_abort); |
+ } |
+ if (user_initiated_info.user_input_event) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortNewNavigationBeforeCommitUserInputEvent, |
+ time_to_abort); |
+ } |
+ if (user_initiated_info.browser_initiated) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortNewNavigationBeforeCommitBrowserInitiated, |
+ time_to_abort); |
} |
return; |
case UserAbortType::ABORT_STOP: |
@@ -138,16 +206,48 @@ void RecordAbortBeforeCommit(UserAbortType abort_type, |
NOTREACHED(); |
} |
-void RecordAbortAfterCommitBeforePaint(UserAbortType abort_type, |
- base::TimeDelta time_to_abort) { |
+void RecordAbortAfterCommitBeforePaint( |
+ UserAbortType abort_type, |
+ page_load_metrics::UserInitiatedInfo user_initiated_info, |
+ base::TimeDelta time_to_abort) { |
switch (abort_type) { |
case UserAbortType::ABORT_RELOAD: |
PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortReloadBeforePaint, |
time_to_abort); |
+ if (user_initiated_info.user_gesture) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortReloadBeforePaintUserGesture, |
+ time_to_abort); |
+ } |
+ if (user_initiated_info.user_input_event) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortReloadBeforePaintUserInputEvent, |
+ time_to_abort); |
+ } |
+ if (user_initiated_info.browser_initiated) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortReloadBeforePaintBrowserInitiated, |
+ time_to_abort); |
+ } |
return; |
case UserAbortType::ABORT_FORWARD_BACK: |
PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortForwardBackBeforePaint, |
time_to_abort); |
+ if (user_initiated_info.user_gesture) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortForwardBackBeforePaintUserGesture, |
+ time_to_abort); |
+ } |
+ if (user_initiated_info.user_input_event) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortForwardBackBeforePaintUserInputEvent, |
+ time_to_abort); |
+ } |
+ if (user_initiated_info.browser_initiated) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortForwardBackBeforePaintBrowserInitiated, |
+ time_to_abort); |
+ } |
return; |
case UserAbortType::ABORT_CLIENT_REDIRECT: |
PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortClientRedirectBeforePaint, |
@@ -156,6 +256,21 @@ void RecordAbortAfterCommitBeforePaint(UserAbortType abort_type, |
case UserAbortType::ABORT_NEW_NAVIGATION: |
PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortNewNavigationBeforePaint, |
time_to_abort); |
+ if (user_initiated_info.user_gesture) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortNewNavigationBeforePaintUserGesture, |
+ time_to_abort); |
+ } |
+ if (user_initiated_info.user_input_event) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortNewNavigationBeforePaintUserInputEvent, |
+ time_to_abort); |
+ } |
+ if (user_initiated_info.browser_initiated) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramAbortNewNavigationBeforePaintBrowserInitiated, |
+ time_to_abort); |
+ } |
return; |
case UserAbortType::ABORT_STOP: |
PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortStopBeforePaint, |
@@ -264,7 +379,9 @@ void AbortsPageLoadMetricsObserver::OnComplete( |
RecordAbortDuringParse(extra_info.abort_type, time_to_abort); |
} |
if (!timing.first_paint || timing.first_paint >= time_to_abort) { |
- RecordAbortAfterCommitBeforePaint(extra_info.abort_type, time_to_abort); |
+ RecordAbortAfterCommitBeforePaint(extra_info.abort_type, |
+ extra_info.abort_user_initiated_info, |
+ time_to_abort); |
} |
} |
@@ -275,6 +392,6 @@ void AbortsPageLoadMetricsObserver::OnFailedProvisionalLoad( |
return; |
RecordAbortBeforeCommit(extra_info.abort_type, |
- IsAbortUserInitiated(extra_info), |
+ extra_info.abort_user_initiated_info, |
extra_info.time_to_abort.value()); |
} |