Index: chrome/browser/page_load_metrics/observers/stale_while_revalidate_metrics_observer.cc |
diff --git a/chrome/browser/page_load_metrics/observers/stale_while_revalidate_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/stale_while_revalidate_metrics_observer.cc |
index cfa4fbb00bcdf5a02616d717ff398ae35525741e..2162a6300a3e129b32b4a17940af6ed92e183c2a 100644 |
--- a/chrome/browser/page_load_metrics/observers/stale_while_revalidate_metrics_observer.cc |
+++ b/chrome/browser/page_load_metrics/observers/stale_while_revalidate_metrics_observer.cc |
@@ -24,22 +24,32 @@ void StaleWhileRevalidateMetricsObserver::OnCommit( |
void StaleWhileRevalidateMetricsObserver::OnComplete( |
const page_load_metrics::PageLoadTiming& timing, |
const page_load_metrics::PageLoadExtraInfo& extra_info) { |
+ using page_load_metrics::EventOccurredInForeground; |
+ |
if (!is_interesting_domain_) |
return; |
- if (!timing.load_event_start.is_zero()) { |
+ // A page load that started in the background usually means a prerender. The |
+ // performance metrics for a prerender aren't directly comparable to normal |
+ // foreground page loads, so just drop them. |
+ if (!extra_info.started_in_foreground) |
+ return; |
+ |
+ const base::TimeDelta& first_background = extra_info.first_background_time; |
+ |
+ if (EventOccurredInForeground(timing.load_event_start, first_background)) { |
PAGE_LOAD_HISTOGRAM( |
"PageLoad.Clients.StaleWhileRevalidateExperiment.Timing2." |
"NavigationToLoadEventFired", |
timing.load_event_start); |
} |
- if (!timing.first_layout.is_zero()) { |
+ if (EventOccurredInForeground(timing.first_layout, first_background)) { |
PAGE_LOAD_HISTOGRAM( |
"PageLoad.Clients.StaleWhileRevalidateExperiment.Timing2." |
"NavigationToFirstLayout", |
timing.first_layout); |
} |
- if (!timing.first_text_paint.is_zero()) { |
+ if (EventOccurredInForeground(timing.first_text_paint, first_background)) { |
PAGE_LOAD_HISTOGRAM( |
"PageLoad.Clients.StaleWhileRevalidateExperiment.Timing2." |
"NavigationToFirstTextPaint", |