| Index: chrome/browser/page_load_metrics/page_load_metrics_observer.h
|
| diff --git a/chrome/browser/page_load_metrics/page_load_metrics_observer.h b/chrome/browser/page_load_metrics/page_load_metrics_observer.h
|
| index da26e0b453f9af5f9dde54fb6827b70c87de6948..b0719910cfc96a1997a0d35a7ffe40a87e9c10a2 100644
|
| --- a/chrome/browser/page_load_metrics/page_load_metrics_observer.h
|
| +++ b/chrome/browser/page_load_metrics/page_load_metrics_observer.h
|
| @@ -17,43 +17,41 @@ namespace page_load_metrics {
|
| // 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,
|
| +enum PageEndReason {
|
| + // Page lifetime has not yet ended (page is still active).
|
| + END_NONE,
|
|
|
| - // If the user presses reload or shift-reload.
|
| - ABORT_RELOAD,
|
| + // The page was reloaded, possibly by the user.
|
| + END_RELOAD,
|
|
|
| - // The user presses the back/forward button.
|
| - ABORT_FORWARD_BACK,
|
| + // The page was navigated away from, via a back or forward navigation.
|
| + END_FORWARD_BACK,
|
|
|
| // The navigation is replaced with a navigation with the qualifier
|
| // ui::PAGE_TRANSITION_CLIENT_REDIRECT, which is caused by Javascript, or the
|
| // meta refresh tag.
|
| - ABORT_CLIENT_REDIRECT,
|
| + END_CLIENT_REDIRECT,
|
|
|
| // If the page load is replaced by a new navigation. This includes link
|
| // clicks, typing in the omnibox (not a reload), and form submissions.
|
| - ABORT_NEW_NAVIGATION,
|
| + END_NEW_NAVIGATION,
|
|
|
| - // If the user presses the stop X button.
|
| - ABORT_STOP,
|
| + // The page load was stopped (e.g. the user presses the stop X button).
|
| + END_STOP,
|
|
|
| - // If the page load is aborted by closing the tab or browser.
|
| - ABORT_CLOSE,
|
| + // Page load ended due to closing the tab or browser.
|
| + END_CLOSE,
|
|
|
| - // The page load was backgrounded, e.g. the browser was minimized or the user
|
| - // switched tabs. Note that the same page may be foregrounded in the future,
|
| - // so this is not a 'terminal' abort type.
|
| - ABORT_BACKGROUND,
|
| + // The provisional load for this page load failed before committing.
|
| + END_PROVISIONAL_LOAD_FAILED,
|
|
|
| - // We don't know why the page load 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,
|
| + // The render process hosting the page terminated unexpectedly.
|
| + END_RENDER_PROCESS_GONE,
|
|
|
| - // Add values before this final count.
|
| - ABORT_LAST_ENTRY
|
| + // We don't know why the page load ended. This is the value we assign to a
|
| + // terminated provisional load if the only signal we get is the load finished
|
| + // without committing, either without error or with net::ERR_ABORTED.
|
| + END_OTHER
|
| };
|
|
|
| // Information related to failed provisional loads.
|
| @@ -114,9 +112,9 @@ struct PageLoadExtraInfo {
|
| const GURL& url,
|
| const GURL& start_url,
|
| bool did_commit,
|
| - UserAbortType abort_type,
|
| - UserInitiatedInfo abort_user_initiated_info,
|
| - const base::Optional<base::TimeDelta>& time_to_abort,
|
| + PageEndReason page_end_reason,
|
| + UserInitiatedInfo page_end_user_initiated_info,
|
| + const base::Optional<base::TimeDelta>& page_end_time,
|
| const PageLoadMetadata& metadata);
|
|
|
| PageLoadExtraInfo(const PageLoadExtraInfo& other);
|
| @@ -145,24 +143,37 @@ struct PageLoadExtraInfo {
|
| // Whether the navigation for this page load committed.
|
| const bool did_commit;
|
|
|
| - // The abort time and time to abort for this page load. If the page was not
|
| - // aborted, |abort_type| will be |ABORT_NONE|.
|
| - const UserAbortType abort_type;
|
| + // The reason the page load ended. If the page is still active,
|
| + // |page_end_reason| will be |END_NONE|. |page_end_time| contains the duration
|
| + // of time until the cause of the page end reason was encountered.
|
| + const PageEndReason page_end_reason;
|
|
|
| - // Whether the abort for this page load was user initiated. For example, if
|
| - // this page load was aborted by a new navigation, this field tracks whether
|
| + // Whether the end reason for this page load was user initiated. For example,
|
| + // if
|
| + // this page load was ended due to a new navigation, this field tracks whether
|
| // that new navigation was user-initiated. This field is only useful if this
|
| - // page load's abort type is a value other than ABORT_NONE. Note that this
|
| + // page load's end reason is a value other than END_NONE. Note that this
|
| // value is currently experimental, and is subject to change. In particular,
|
| - // this field is not currently set for some abort types, such as stop and
|
| + // this field is not currently set for some end reasons, such as stop and
|
| // close, since we don't yet have sufficient instrumentation to know if a stop
|
| // or close was caused by a user action.
|
| //
|
| - // TODO(csharrison): If more metadata for aborts is needed we should provide a
|
| + // TODO(csharrison): If more metadata for end reasons is needed we should
|
| + // provide a
|
| // better abstraction. Note that this is an approximation.
|
| - UserInitiatedInfo abort_user_initiated_info;
|
| -
|
| - const base::Optional<base::TimeDelta> time_to_abort;
|
| + UserInitiatedInfo page_end_user_initiated_info;
|
| +
|
| + // Total lifetime of the page from the user standoint, starting at navigation
|
| + // start. The page lifetime ends when the first of the following events
|
| + // happen:
|
| + // * the load of the main resource fails
|
| + // * the page load is stopped
|
| + // * the tab hosting the page is closed
|
| + // * the render process hosting the page goes away
|
| + // * a new navigation which later commits is initiated in the same tab
|
| + // This field will not be set if the page is still active and hasn't yet
|
| + // finished.
|
| + const base::Optional<base::TimeDelta> page_end_time;
|
|
|
| // Extra information supplied to the page load metrics system from the
|
| // renderer.
|
|
|