Index: components/page_load_metrics/browser/page_load_metrics_observer.h |
diff --git a/components/page_load_metrics/browser/page_load_metrics_observer.h b/components/page_load_metrics/browser/page_load_metrics_observer.h |
index dddfb823179542be103f0cad7af6189d2699f13a..2d3d0f757ab51c2dcacfe6a5ecf8c3a1e2f17515 100644 |
--- a/components/page_load_metrics/browser/page_load_metrics_observer.h |
+++ b/components/page_load_metrics/browser/page_load_metrics_observer.h |
@@ -11,11 +11,47 @@ |
namespace page_load_metrics { |
+class PageLoadMetricsObservable; |
+ |
+// This enum represents how a page load ends. If the action occurs before the |
+// page load finishes (or reaches some point like first paint), then we consider |
+// the load to be aborted. |
+enum UserAbortType { |
+ // Represents no abort. |
+ ABORT_NONE, |
+ |
+ // If the user presses reload or shift-reload. |
+ ABORT_RELOAD, |
+ |
+ // The user presses the back/forward button. |
+ ABORT_FORWARD_BACK, |
+ |
+ // If the navigation is replaced by a new navigation. This includes link |
+ // clicks, typing in the omnibox (not a reload), and form submissions. |
+ ABORT_NEW_NAVIGATION, |
+ |
+ // If the user presses the stop X button. |
+ ABORT_STOP, |
+ |
+ // If the navigation is aborted by closing the tab or browser. |
+ ABORT_CLOSE, |
+ |
+ // We don't know why the navigation aborted. This is the value we assign to an |
+ // aborted load if the only signal we get is a provisional load finishing |
+ // without committing, either without error or with net::ERR_ABORTED. |
+ ABORT_OTHER, |
+ |
+ // Add values before this final count. |
+ ABORT_LAST_ENTRY |
+}; |
+ |
struct PageLoadExtraInfo { |
PageLoadExtraInfo(const base::TimeDelta& first_background_time, |
const base::TimeDelta& first_foreground_time, |
bool started_in_foreground, |
- bool has_commit); |
+ bool has_commit, |
+ UserAbortType abort_type, |
+ const base::TimeDelta& time_to_abort); |
// Returns the time to first background if the page load started in the |
// foreground. If the page has not been backgrounded, or the page started in |
@@ -32,6 +68,12 @@ struct PageLoadExtraInfo { |
// True if the page load committed and received its first bytes of data. |
const bool has_commit; |
+ |
+ // The abort time and time to abort for this page load. If the page was not |
+ // aborted, |abort_type| will be |ABORT_NONE| and |time_to_abort| will be |
+ // |base::TimeDelta()|. |
+ const UserAbortType abort_type; |
+ const base::TimeDelta time_to_abort; |
}; |
// Interface for PageLoadMetrics observers. All instances of this class are |