Chromium Code Reviews| 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 055a84c0e9411b1d55a483c77106df21d60a96a4..6abf025e6999490749fdb35846db322f7dd6ac23 100644 |
| --- a/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc |
| +++ b/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc |
| @@ -19,6 +19,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" |
| @@ -42,11 +43,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); |
| @@ -60,39 +62,48 @@ 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<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<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::MakeUnique<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_) != |
|
droger
2016/11/29 15:54:39
optional nit, just to fit on 80 columns: remove "!
mattcary
2016/11/29 16:39:45
Done.
|
| + nullptr; |
| } |
| bool PageLoadMetricsEmbedder::IsNewTabPageUrl(const GURL& url) { |