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

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

Issue 2545593003: Additional heuristic user interaction attribution for page load metrics (Closed)
Patch Set: rebase Created 4 years 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/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());
}

Powered by Google App Engine
This is Rietveld 408576698