| 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());
|
| }
|
|
|