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; |