Index: chrome/browser/page_load_metrics/observers/css_scanning_page_load_metrics_observer.cc |
diff --git a/chrome/browser/page_load_metrics/observers/css_scanning_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/css_scanning_page_load_metrics_observer.cc |
index e29a4dddf80d95527689e1b14a8d5676605d2e4f..073b9569b9f310f89d8bff94ffc4f2cf5cd078a4 100644 |
--- a/chrome/browser/page_load_metrics/observers/css_scanning_page_load_metrics_observer.cc |
+++ b/chrome/browser/page_load_metrics/observers/css_scanning_page_load_metrics_observer.cc |
@@ -11,30 +11,50 @@ CssScanningMetricsObserver::CssScanningMetricsObserver() {} |
CssScanningMetricsObserver::~CssScanningMetricsObserver() {} |
+void CssScanningMetricsObserver::OnLoadingBehaviorObserved( |
+ const page_load_metrics::PageLoadExtraInfo& info) { |
+ if (css_preload_found_) |
+ return; |
+ |
+ css_preload_found_ = page_load_metrics::DidObserveLoadingBehaviorInAnyFrame( |
+ info, blink::WebLoadingBehaviorFlag::WebLoadingBehaviorCSSPreloadFound); |
+} |
+ |
+page_load_metrics::PageLoadMetricsObserver::ObservePolicy |
+CssScanningMetricsObserver::OnStart( |
+ content::NavigationHandle* navigation_handle, |
+ const GURL& currently_committed_url, |
+ bool started_in_foreground) { |
+ return started_in_foreground ? CONTINUE_OBSERVING : STOP_OBSERVING; |
+} |
+ |
+page_load_metrics::PageLoadMetricsObserver::ObservePolicy |
+CssScanningMetricsObserver::OnHidden( |
+ const page_load_metrics::PageLoadTiming&, |
+ const page_load_metrics::PageLoadExtraInfo&) { |
+ return STOP_OBSERVING; |
+} |
+ |
void CssScanningMetricsObserver::OnFirstContentfulPaint( |
const page_load_metrics::PageLoadTiming& timing, |
const page_load_metrics::PageLoadExtraInfo& info) { |
- if (info.metadata.behavior_flags & |
- blink::WebLoadingBehaviorFlag::WebLoadingBehaviorCSSPreloadFound && |
- WasStartedInForegroundOptionalEventInForeground( |
- timing.first_contentful_paint, info)) { |
- PAGE_LOAD_HISTOGRAM( |
- "PageLoad.Clients.CssScanner.PaintTiming." |
- "ParseStartToFirstContentfulPaint", |
- timing.first_contentful_paint.value() - timing.parse_start.value()); |
- } |
+ if (!css_preload_found_) |
+ return; |
+ |
+ PAGE_LOAD_HISTOGRAM( |
+ "PageLoad.Clients.CssScanner.PaintTiming." |
+ "ParseStartToFirstContentfulPaint", |
+ timing.first_contentful_paint.value() - timing.parse_start.value()); |
} |
void CssScanningMetricsObserver::OnFirstMeaningfulPaint( |
const page_load_metrics::PageLoadTiming& timing, |
const page_load_metrics::PageLoadExtraInfo& info) { |
- if (info.metadata.behavior_flags & |
- blink::WebLoadingBehaviorFlag::WebLoadingBehaviorCSSPreloadFound && |
- WasStartedInForegroundOptionalEventInForeground( |
- timing.first_meaningful_paint, info)) { |
- PAGE_LOAD_HISTOGRAM( |
- "PageLoad.Clients.CssScanner.Experimental.PaintTiming." |
- "ParseStartToFirstMeaningfulPaint", |
- timing.first_meaningful_paint.value() - timing.parse_start.value()); |
- } |
+ if (!css_preload_found_) |
+ return; |
+ |
+ PAGE_LOAD_HISTOGRAM( |
+ "PageLoad.Clients.CssScanner.Experimental.PaintTiming." |
+ "ParseStartToFirstMeaningfulPaint", |
+ timing.first_meaningful_paint.value() - timing.parse_start.value()); |
} |