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..572988a3a8e2a14ed993314ede25f81186336cc9 100644 |
--- a/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc |
+++ b/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc |
@@ -6,6 +6,9 @@ |
#include "base/macros.h" |
#include "base/memory/ptr_util.h" |
+#if defined(OS_ANDROID) |
+#include "chrome/browser/android/offline_pages/request_coordinator_factory.h" |
+#endif |
#include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h" |
#if defined(OS_ANDROID) |
#include "chrome/browser/page_load_metrics/observers/android_page_load_metrics_observer.h" |
@@ -29,6 +32,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 +42,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/request_coordinator.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 +55,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 +67,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 +146,19 @@ void PageLoadMetricsEmbedder::RegisterObservers( |
base::MakeUnique<OmniboxSuggestionUsedMetricsObserver>(IsPrerendering())); |
tracker->AddObserver( |
base::MakeUnique<DelayNavigationPageLoadMetricsObserver>()); |
+#if BUILDFLAG(ENABLE_OFFLINE_PAGES) |
+ if (background_rendering_) { |
+ offline_pages::RequestCoordinator* request_coordinator = |
+ offline_pages::RequestCoordinatorFactory::GetForBrowserContext( |
+ web_contents_->GetBrowserContext()); |
+ if (request_coordinator) { |
+ tracker->AddObserver( |
+ base::MakeUnique< |
+ page_load_metrics::ResourceTrackingPageLoadMetricsObserver>( |
+ request_coordinator)); |
+ } |
+ } |
+#endif // ENABLE_OFFLINE_PAGES |
} |
bool PageLoadMetricsEmbedder::IsPrerendering() const { |
@@ -152,10 +176,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 |