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

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: address comments 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..bee219e8ec12371564fbbc0c8967d6e7cc1c319f 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
@@ -58,48 +58,57 @@ const char kHistogramAbortCloseDuringParse[] =
const char kHistogramAbortBackgroundDuringParse[] =
"PageLoad.Experimental.AbortTiming.Background.DuringParse";
-// These metrics should be temporary until we have landed on a one-size-fits-all
-// abort metric.
-const char kHistogramAbortNewNavigationUserInitiated[] =
- "PageLoad.Experimental.AbortTiming.NewNavigation.BeforeCommit."
- "UserInitiated";
-const char kHistogramAbortForwardBackUserInitiated[] =
- "PageLoad.Experimental.AbortTiming.ForwardBackNavigation.BeforeCommit."
- "UserInitiated";
-const char kHistogramAbortReloadUserInitiated[] =
- "PageLoad.Experimental.AbortTiming.Reload.BeforeCommit.UserInitiated";
-
} // 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(
+ "PageLoad.Experimental.AbortTiming.Reload.BeforeCommit."
+ "UserGesture",
+ time_to_abort);
+ }
+ if (user_initiated_info.user_input_event) {
+ PAGE_LOAD_HISTOGRAM(
+ "PageLoad.Experimental.AbortTiming.Reload.BeforeCommit."
+ "UserInputEvent",
+ time_to_abort);
+ }
+ if (user_initiated_info.browser_initiated) {
+ PAGE_LOAD_HISTOGRAM(
+ "PageLoad.Experimental.AbortTiming.Reload.BeforeCommit."
+ "BrowserInitiated",
+ 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(
+ "PageLoad.Experimental.AbortTiming.ForwardBackNavigation."
+ "BeforeCommit.UserGesture",
+ time_to_abort);
+ }
+ if (user_initiated_info.user_input_event) {
+ PAGE_LOAD_HISTOGRAM(
+ "PageLoad.Experimental.AbortTiming.ForwardBackNavigation."
+ "BeforeCommit.UserInputEvent",
+ time_to_abort);
+ }
+ if (user_initiated_info.browser_initiated) {
+ PAGE_LOAD_HISTOGRAM(
+ "PageLoad.Experimental.AbortTiming.ForwardBackNavigation."
+ "BeforeCommit.BrowserInitiated",
+ time_to_abort);
}
return;
case UserAbortType::ABORT_CLIENT_REDIRECT:
@@ -109,9 +118,23 @@ 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(
+ "PageLoad.Experimental.AbortTiming.NewNavigation.BeforeCommit."
+ "UserGesture",
+ time_to_abort);
+ }
+ if (user_initiated_info.user_input_event) {
+ PAGE_LOAD_HISTOGRAM(
+ "PageLoad.Experimental.AbortTiming.NewNavigation.BeforeCommit."
+ "UserInputEvent",
+ time_to_abort);
+ }
+ if (user_initiated_info.browser_initiated) {
+ PAGE_LOAD_HISTOGRAM(
+ "PageLoad.Experimental.AbortTiming.NewNavigation.BeforeCommit."
+ "BrowserInitiated",
+ time_to_abort);
}
return;
case UserAbortType::ABORT_STOP:
@@ -138,16 +161,54 @@ 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(
+ "PageLoad.Experimental.AbortTiming.Reload.AfterCommit.BeforePaint."
+ "UserGesture",
+ time_to_abort);
+ }
+ if (user_initiated_info.user_input_event) {
+ PAGE_LOAD_HISTOGRAM(
+ "PageLoad.Experimental.AbortTiming.Reload.AfterCommit.BeforePaint."
+ "UserInputEvent",
+ time_to_abort);
+ }
+ if (user_initiated_info.browser_initiated) {
+ PAGE_LOAD_HISTOGRAM(
+ "PageLoad.Experimental.AbortTiming.Reload.AfterCommit.BeforePaint."
+ "BrowserInitiated",
+ 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(
+ "PageLoad.Experimental.AbortTiming.ForwardBackNavigation."
+ "AfterCommit.BeforePaint.UserGesture",
+ time_to_abort);
+ }
+ if (user_initiated_info.user_input_event) {
+ PAGE_LOAD_HISTOGRAM(
+ "PageLoad.Experimental.AbortTiming.ForwardBackNavigation."
+ "AfterCommit.BeforePaint.UserInputEvent",
+ time_to_abort);
+ }
+ if (user_initiated_info.browser_initiated) {
+ PAGE_LOAD_HISTOGRAM(
+ "PageLoad.Experimental.AbortTiming.ForwardBackNavigation."
+ "AfterCommit.BeforePaint.BrowserInitiated",
+ time_to_abort);
+ }
return;
case UserAbortType::ABORT_CLIENT_REDIRECT:
PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortClientRedirectBeforePaint,
@@ -156,6 +217,24 @@ 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(
+ "PageLoad.Experimental.AbortTiming.NewNavigation.AfterCommit."
+ "BeforePaint.UserGesture",
+ time_to_abort);
+ }
+ if (user_initiated_info.user_input_event) {
+ PAGE_LOAD_HISTOGRAM(
+ "PageLoad.Experimental.AbortTiming.NewNavigation.AfterCommit."
+ "BeforePaint.UserInputEvent",
+ time_to_abort);
+ }
+ if (user_initiated_info.browser_initiated) {
+ PAGE_LOAD_HISTOGRAM(
+ "PageLoad.Experimental.AbortTiming.NewNavigation.AfterCommit."
+ "BeforePaint.BrowserInitiated",
+ time_to_abort);
+ }
return;
case UserAbortType::ABORT_STOP:
PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortStopBeforePaint,
@@ -264,7 +343,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 +356,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