| Index: chrome/browser/page_load_metrics/page_load_metrics_initialize.cc
|
| diff --git a/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc b/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc
|
| index a88d9a5125b0652080a03e116e1772b267dabc1b..2080bf23393b93780edcd8421dee1d1f39f7bc33 100644
|
| --- a/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc
|
| +++ b/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc
|
| @@ -20,6 +20,7 @@
|
| #include "chrome/browser/page_load_metrics/observers/google_captcha_observer.h"
|
| #include "chrome/browser/page_load_metrics/observers/https_engagement_metrics/https_engagement_page_load_metrics_observer.h"
|
| #include "chrome/browser/page_load_metrics/observers/no_state_prefetch_page_load_metrics_observer.h"
|
| +#include "chrome/browser/page_load_metrics/observers/prerender_page_load_metrics_observer.h"
|
| #include "chrome/browser/page_load_metrics/observers/previews_page_load_metrics_observer.h"
|
| #include "chrome/browser/page_load_metrics/observers/protocol_page_load_metrics_observer.h"
|
| #include "chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.h"
|
| @@ -43,11 +44,12 @@ class PageLoadMetricsEmbedder
|
| ~PageLoadMetricsEmbedder() override;
|
|
|
| // page_load_metrics::PageLoadMetricsEmbedderInterface:
|
| - bool IsPrerendering(content::WebContents* web_contents) override;
|
| bool IsNewTabPageUrl(const GURL& url) override;
|
| void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override;
|
|
|
| private:
|
| + bool IsPrerendering() const;
|
| +
|
| content::WebContents* const web_contents_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsEmbedder);
|
| @@ -61,40 +63,49 @@ PageLoadMetricsEmbedder::~PageLoadMetricsEmbedder() {}
|
|
|
| void PageLoadMetricsEmbedder::RegisterObservers(
|
| page_load_metrics::PageLoadTracker* tracker) {
|
| - // These classes are owned by the metrics.
|
| - tracker->AddObserver(base::MakeUnique<AbortsPageLoadMetricsObserver>());
|
| - tracker->AddObserver(base::MakeUnique<AMPPageLoadMetricsObserver>());
|
| - tracker->AddObserver(base::MakeUnique<CorePageLoadMetricsObserver>());
|
| - tracker->AddObserver(
|
| - base::MakeUnique<
|
| - data_reduction_proxy::DataReductionProxyMetricsObserver>());
|
| - tracker->AddObserver(base::MakeUnique<FromGWSPageLoadMetricsObserver>());
|
| - tracker->AddObserver(
|
| - base::MakeUnique<google_captcha_observer::GoogleCaptchaObserver>());
|
| - tracker->AddObserver(
|
| - base::MakeUnique<DocumentWritePageLoadMetricsObserver>());
|
| - tracker->AddObserver(
|
| - base::WrapUnique(new previews::PreviewsPageLoadMetricsObserver()));
|
| - tracker->AddObserver(
|
| - base::MakeUnique<ServiceWorkerPageLoadMetricsObserver>());
|
| - tracker->AddObserver(base::MakeUnique<HttpsEngagementPageLoadMetricsObserver>(
|
| - web_contents_->GetBrowserContext()));
|
| - tracker->AddObserver(base::MakeUnique<CssScanningMetricsObserver>());
|
| - tracker->AddObserver(base::MakeUnique<ProtocolPageLoadMetricsObserver>());
|
| - std::unique_ptr<page_load_metrics::PageLoadMetricsObserver>
|
| - no_state_prefetch_observer =
|
| - NoStatePrefetchPageLoadMetricsObserver::CreateIfNeeded(web_contents_);
|
| - if (no_state_prefetch_observer)
|
| - tracker->AddObserver(std::move(no_state_prefetch_observer));
|
| + if (!IsPrerendering()) {
|
| + tracker->AddObserver(base::MakeUnique<AbortsPageLoadMetricsObserver>());
|
| + tracker->AddObserver(base::MakeUnique<AMPPageLoadMetricsObserver>());
|
| + tracker->AddObserver(base::MakeUnique<CorePageLoadMetricsObserver>());
|
| + tracker->AddObserver(
|
| + base::MakeUnique<
|
| + data_reduction_proxy::DataReductionProxyMetricsObserver>());
|
| + tracker->AddObserver(base::MakeUnique<FromGWSPageLoadMetricsObserver>());
|
| + tracker->AddObserver(
|
| + base::MakeUnique<google_captcha_observer::GoogleCaptchaObserver>());
|
| + tracker->AddObserver(
|
| + base::MakeUnique<DocumentWritePageLoadMetricsObserver>());
|
| + tracker->AddObserver(
|
| + base::WrapUnique(new previews::PreviewsPageLoadMetricsObserver()));
|
| + tracker->AddObserver(
|
| + base::MakeUnique<ServiceWorkerPageLoadMetricsObserver>());
|
| + tracker->AddObserver(
|
| + base::MakeUnique<HttpsEngagementPageLoadMetricsObserver>(
|
| + web_contents_->GetBrowserContext()));
|
| + tracker->AddObserver(base::MakeUnique<CssScanningMetricsObserver>());
|
| + tracker->AddObserver(base::MakeUnique<ProtocolPageLoadMetricsObserver>());
|
| + std::unique_ptr<page_load_metrics::PageLoadMetricsObserver>
|
| + no_state_prefetch_observer =
|
| + NoStatePrefetchPageLoadMetricsObserver::CreateIfNeeded(
|
| + web_contents_);
|
| + if (no_state_prefetch_observer)
|
| + tracker->AddObserver(std::move(no_state_prefetch_observer));
|
| #if defined(OS_ANDROID)
|
| - tracker->AddObserver(
|
| - base::MakeUnique<AndroidPageLoadMetricsObserver>(web_contents_));
|
| + tracker->AddObserver(
|
| + base::MakeUnique<AndroidPageLoadMetricsObserver>(web_contents_));
|
| #endif // OS_ANDROID
|
| + } else {
|
| + std::unique_ptr<page_load_metrics::PageLoadMetricsObserver>
|
| + prerender_observer =
|
| + PrerenderPageLoadMetricsObserver::CreateIfNeeded(web_contents_);
|
| + if (prerender_observer)
|
| + tracker->AddObserver(std::move(prerender_observer));
|
| + }
|
| }
|
|
|
| -bool PageLoadMetricsEmbedder::IsPrerendering(
|
| - content::WebContents* web_contents) {
|
| - return prerender::PrerenderContents::FromWebContents(web_contents) != nullptr;
|
| +bool PageLoadMetricsEmbedder::IsPrerendering() const {
|
| + return prerender::PrerenderContents::FromWebContents(web_contents_) !=
|
| + nullptr;
|
| }
|
|
|
| bool PageLoadMetricsEmbedder::IsNewTabPageUrl(const GURL& url) {
|
|
|