| Index: chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc
|
| diff --git a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc
|
| index fdc51b77f3d5c1e7a51e85243b3f2ac90e016c68..11c35bd338c559a6005ccd202c705dbe95442cc4 100644
|
| --- a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc
|
| +++ b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc
|
| @@ -179,27 +179,29 @@ void LogProvisionalAborts(UserAbortType abort_type,
|
| }
|
| }
|
|
|
| -bool WasAbortedInForeground(UserAbortType abort_type,
|
| - base::TimeDelta time_to_abort,
|
| - const page_load_metrics::PageLoadExtraInfo& info) {
|
| +bool WasAbortedInForeground(
|
| + UserAbortType abort_type,
|
| + const base::Optional<base::TimeDelta>& time_to_abort,
|
| + const page_load_metrics::PageLoadExtraInfo& info) {
|
| + if (!time_to_abort)
|
| + return false;
|
| if (abort_type == UserAbortType::ABORT_NONE)
|
| return false;
|
| - // This is a modified version of WasStartedInForegroundEventInForeground,
|
| - // which does not check time_to_abort is non-zero
|
| - // TODO(mushan): change back with WasStartedInForegroundEventInForeground
|
| - // once crbug.com/616901 is addressed
|
| - if (info.started_in_foreground &&
|
| - (info.first_background_time.is_zero() ||
|
| - time_to_abort < info.first_background_time))
|
| + if (WasStartedInForegroundOptionalEventInForeground(time_to_abort, info))
|
| return true;
|
| if (!info.started_in_foreground)
|
| return false;
|
| - DCHECK_GT(time_to_abort, info.first_background_time);
|
| - base::TimeDelta bg_abort_delta = time_to_abort - info.first_background_time;
|
| +
|
| + const base::TimeDelta time_to_abort_val = time_to_abort.value();
|
| + const base::TimeDelta time_to_first_background =
|
| + info.first_background_time.value();
|
| + DCHECK_GT(time_to_abort_val, time_to_first_background);
|
| + base::TimeDelta background_abort_delta =
|
| + time_to_abort_val - time_to_first_background;
|
| // Consider this a foregrounded abort if it occurred within 100ms of a
|
| // background. This is needed for closing some tabs, where the signal for
|
| // background is often slightly ahead of the signal for close.
|
| - if (bg_abort_delta.InMilliseconds() < 100)
|
| + if (background_abort_delta.InMilliseconds() < 100)
|
| return true;
|
| return false;
|
| }
|
| @@ -222,7 +224,7 @@ bool WasAbortedBeforeInteraction(UserAbortType abort_type,
|
| return time_to_interaction + base::TimeDelta::FromMilliseconds(1000) >
|
| time_to_abort;
|
| } else {
|
| - return time_to_interaction >= time_to_abort;
|
| + return time_to_interaction > time_to_abort;
|
| }
|
| }
|
|
|
| @@ -479,10 +481,10 @@ void FromGWSPageLoadMetricsLogger::OnComplete(
|
| // consistency with core PageLoad metrics, we ignore non-render-tracked
|
| // loads when tracking aborts after commit.
|
| UserAbortType abort_type = extra_info.abort_type;
|
| - base::TimeDelta time_to_abort = extra_info.time_to_abort;
|
| - if (!WasAbortedInForeground(abort_type, time_to_abort, extra_info))
|
| + if (!WasAbortedInForeground(abort_type, extra_info.time_to_abort, extra_info))
|
| return;
|
|
|
| + base::TimeDelta time_to_abort = extra_info.time_to_abort.value();
|
| if (extra_info.committed_url.is_empty()) {
|
| LogProvisionalAborts(abort_type, time_to_abort);
|
| return;
|
|
|