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 5b9d15cd189b2a26c44e462b9e9f85a65a74cab7..420d7691807b5fa15fc21412b0c8a3b2e2fa3bb4 100644 |
--- a/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc |
+++ b/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc |
@@ -29,6 +29,7 @@ |
#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/resource_prefetch_predictor_page_load_metrics_observer.h" |
+#include "chrome/browser/page_load_metrics/observers/resource_tracking_page_load_metrics_observer.h" |
#include "chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.h" |
#include "chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer.h" |
#include "chrome/browser/page_load_metrics/observers/tab_restore_page_load_metrics_observer.h" |
@@ -38,6 +39,8 @@ |
#include "chrome/browser/prerender/prerender_contents.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/search/search.h" |
+#include "components/offline_pages/core/background/offliner.h" |
+#include "components/offline_pages/features/features.h" |
#include "components/rappor/rappor_service_impl.h" |
#include "content/public/browser/web_contents.h" |
#include "url/gurl.h" |
@@ -49,7 +52,8 @@ namespace { |
class PageLoadMetricsEmbedder |
: public page_load_metrics::PageLoadMetricsEmbedderInterface { |
public: |
- explicit PageLoadMetricsEmbedder(content::WebContents* web_contents); |
+ explicit PageLoadMetricsEmbedder(content::WebContents* web_contents, |
+ bool background_rendering); |
~PageLoadMetricsEmbedder() override; |
// page_load_metrics::PageLoadMetricsEmbedderInterface: |
@@ -60,19 +64,23 @@ class PageLoadMetricsEmbedder |
bool IsPrerendering() const; |
content::WebContents* const web_contents_; |
+ // true when rendering in the background, such as creating an offline page. |
+ bool background_rendering_; |
DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsEmbedder); |
}; |
PageLoadMetricsEmbedder::PageLoadMetricsEmbedder( |
- content::WebContents* web_contents) |
- : web_contents_(web_contents) {} |
+ content::WebContents* web_contents, |
+ bool background_rendering) |
+ : web_contents_(web_contents), |
+ background_rendering_(background_rendering) {} |
PageLoadMetricsEmbedder::~PageLoadMetricsEmbedder() {} |
void PageLoadMetricsEmbedder::RegisterObservers( |
page_load_metrics::PageLoadTracker* tracker) { |
- if (!IsPrerendering()) { |
+ if (!IsPrerendering() && !background_rendering_) { |
tracker->AddObserver(base::MakeUnique<AbortsPageLoadMetricsObserver>()); |
tracker->AddObserver(base::MakeUnique<AMPPageLoadMetricsObserver>()); |
tracker->AddObserver(base::MakeUnique<CorePageLoadMetricsObserver>()); |
@@ -135,6 +143,13 @@ void PageLoadMetricsEmbedder::RegisterObservers( |
base::MakeUnique<OmniboxSuggestionUsedMetricsObserver>(IsPrerendering())); |
tracker->AddObserver( |
base::MakeUnique<DelayNavigationPageLoadMetricsObserver>()); |
+#if BUILDFLAG(ENABLE_OFFLINE_PAGES) |
+ if (background_rendering_) { |
+ tracker->AddObserver( |
+ base::MakeUnique< |
+ page_load_metrics::ResourceTrackingPageLoadMetricsObserver>()); |
+ } |
+#endif // ENABLE_OFFLINE_PAGES |
} |
bool PageLoadMetricsEmbedder::IsPrerendering() const { |
@@ -152,10 +167,11 @@ bool PageLoadMetricsEmbedder::IsNewTabPageUrl(const GURL& url) { |
} // namespace |
-void InitializePageLoadMetricsForWebContents( |
- content::WebContents* web_contents) { |
+void InitializePageLoadMetricsForWebContents(content::WebContents* web_contents, |
+ bool background_rendering) { |
page_load_metrics::MetricsWebContentsObserver::CreateForWebContents( |
- web_contents, base::MakeUnique<PageLoadMetricsEmbedder>(web_contents)); |
+ web_contents, base::MakeUnique<PageLoadMetricsEmbedder>( |
+ web_contents, background_rendering)); |
} |
} // namespace chrome |