| Index: chrome/browser/page_load_metrics/observers/resource_prefetch_predictor_page_load_metrics_observer.cc
 | 
| diff --git a/chrome/browser/page_load_metrics/observers/resource_prefetch_predictor_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/resource_prefetch_predictor_page_load_metrics_observer.cc
 | 
| index 34762b326a29f98b4a62d0e4f2f10681a9c60b01..313232120090e23976c306e02ff0d98a5e810cc5 100644
 | 
| --- a/chrome/browser/page_load_metrics/observers/resource_prefetch_predictor_page_load_metrics_observer.cc
 | 
| +++ b/chrome/browser/page_load_metrics/observers/resource_prefetch_predictor_page_load_metrics_observer.cc
 | 
| @@ -31,13 +31,16 @@ ResourcePrefetchPredictorPageLoadMetricsObserver::CreateIfNeeded(
 | 
|    if (!predictor)
 | 
|      return nullptr;
 | 
|    return base::MakeUnique<ResourcePrefetchPredictorPageLoadMetricsObserver>(
 | 
| -      predictor);
 | 
| +      predictor, web_contents);
 | 
|  }
 | 
|  
 | 
|  ResourcePrefetchPredictorPageLoadMetricsObserver::
 | 
|      ResourcePrefetchPredictorPageLoadMetricsObserver(
 | 
| -        predictors::ResourcePrefetchPredictor* predictor)
 | 
| -    : predictor_(predictor) {
 | 
| +        predictors::ResourcePrefetchPredictor* predictor,
 | 
| +        content::WebContents* web_contents)
 | 
| +    : predictor_(predictor),
 | 
| +      web_contents_(web_contents),
 | 
| +      record_histograms_(false) {
 | 
|    DCHECK(predictor_);
 | 
|  }
 | 
|  
 | 
| @@ -49,31 +52,40 @@ ResourcePrefetchPredictorPageLoadMetricsObserver::OnStart(
 | 
|      content::NavigationHandle* navigation_handle,
 | 
|      const GURL& currently_commited_url,
 | 
|      bool started_in_foreground) {
 | 
| -  return (started_in_foreground &&
 | 
| -          predictor_->IsUrlPrefetchable(navigation_handle->GetURL()))
 | 
| -             ? CONTINUE_OBSERVING
 | 
| -             : STOP_OBSERVING;
 | 
| +  record_histograms_ =
 | 
| +      started_in_foreground &&
 | 
| +      predictor_->IsUrlPrefetchable(navigation_handle->GetURL());
 | 
| +
 | 
| +  return CONTINUE_OBSERVING;
 | 
|  }
 | 
|  
 | 
|  page_load_metrics::PageLoadMetricsObserver::ObservePolicy
 | 
|  ResourcePrefetchPredictorPageLoadMetricsObserver::OnHidden(
 | 
|      const page_load_metrics::PageLoadTiming& timing,
 | 
|      const page_load_metrics::PageLoadExtraInfo& extra_info) {
 | 
| -  return STOP_OBSERVING;
 | 
| +  record_histograms_ = false;
 | 
| +  return CONTINUE_OBSERVING;
 | 
|  }
 | 
|  
 | 
|  void ResourcePrefetchPredictorPageLoadMetricsObserver::OnFirstContentfulPaint(
 | 
|      const page_load_metrics::PageLoadTiming& timing,
 | 
|      const page_load_metrics::PageLoadExtraInfo& extra_info) {
 | 
| -  PAGE_LOAD_HISTOGRAM(
 | 
| -      internal::kHistogramResourcePrefetchPredictorFirstContentfulPaint,
 | 
| -      timing.first_contentful_paint.value());
 | 
| +  predictors::NavigationID navigation_id(web_contents_);
 | 
| +  predictor_->RecordFirstContentfulPaint(navigation_id,
 | 
| +                                         timing.first_contentful_paint.value());
 | 
| +  if (record_histograms_) {
 | 
| +    PAGE_LOAD_HISTOGRAM(
 | 
| +        internal::kHistogramResourcePrefetchPredictorFirstContentfulPaint,
 | 
| +        timing.first_contentful_paint.value());
 | 
| +  }
 | 
|  }
 | 
|  
 | 
|  void ResourcePrefetchPredictorPageLoadMetricsObserver::OnFirstMeaningfulPaint(
 | 
|      const page_load_metrics::PageLoadTiming& timing,
 | 
|      const page_load_metrics::PageLoadExtraInfo& extra_info) {
 | 
| -  PAGE_LOAD_HISTOGRAM(
 | 
| -      internal::kHistogramResourcePrefetchPredictorFirstMeaningfulPaint,
 | 
| -      timing.first_meaningful_paint.value());
 | 
| +  if (record_histograms_) {
 | 
| +    PAGE_LOAD_HISTOGRAM(
 | 
| +        internal::kHistogramResourcePrefetchPredictorFirstMeaningfulPaint,
 | 
| +        timing.first_meaningful_paint.value());
 | 
| +  }
 | 
|  }
 | 
| 
 |