Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(128)

Side by Side Diff: chrome/browser/page_load_metrics/page_load_metrics_initialize.cc

Issue 1473153002: PageLoadMetricsObservers observe individual page loads (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase on #362343 Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/page_load_metrics/page_load_metrics_initialize.h" 5 #include "chrome/browser/page_load_metrics/page_load_metrics_initialize.h"
6 6
7 #include "chrome/browser/browser_process.h" 7 #include "chrome/browser/browser_process.h"
8 #include "chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_ observer.h" 8 #include "chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_ observer.h"
9 #include "chrome/browser/page_load_metrics/observers/google_captcha_observer.h" 9 #include "chrome/browser/page_load_metrics/observers/google_captcha_observer.h"
10 #include "chrome/browser/prerender/prerender_contents.h" 10 #include "chrome/browser/prerender/prerender_contents.h"
11 #include "components/page_load_metrics/browser/metrics_web_contents_observer.h" 11 #include "components/page_load_metrics/browser/metrics_web_contents_observer.h"
12 #include "components/rappor/rappor_service.h" 12 #include "components/rappor/rappor_service.h"
13 #include "content/public/browser/web_contents.h" 13 #include "content/public/browser/web_contents.h"
14 14
15 namespace {
16
17 void RegisterPageLoadMetricsObservers(
18 page_load_metrics::PageLoadMetricsObservable* metrics) {
19 // Attach observers scoped to the web contents here.
20
21 // This is a self-destruct class, and will delete itself when triggered by
22 // OnPageLoadMetricsGoingAway.
23 metrics->AddObserver(new FromGWSPageLoadMetricsObserver(metrics));
24 metrics->AddObserver(
25 new google_captcha_observer::GoogleCaptchaObserver(metrics));
26 }
27
28 } // namespace
29
30 namespace chrome { 15 namespace chrome {
31 16
32 void InitializePageLoadMetricsForWebContents( 17 void InitializePageLoadMetricsForWebContents(
33 content::WebContents* web_contents) { 18 content::WebContents* web_contents) {
34 RegisterPageLoadMetricsObservers( 19 page_load_metrics::MetricsWebContentsObserver::CreateForWebContents(
35 page_load_metrics::MetricsWebContentsObserver::CreateForWebContents( 20 web_contents,
36 web_contents, 21 make_scoped_ptr(new PageLoadMetricsEmbedderInterfaceImpl()));
37 make_scoped_ptr(new PageLoadMetricsEmbedderInterfaceImpl())));
38 } 22 }
39 23
40 PageLoadMetricsEmbedderInterfaceImpl::~PageLoadMetricsEmbedderInterfaceImpl() {} 24 PageLoadMetricsEmbedderInterfaceImpl::~PageLoadMetricsEmbedderInterfaceImpl() {}
41 25
26 void PageLoadMetricsEmbedderInterfaceImpl::RegisterObservers(
27 page_load_metrics::PageLoadMetricsObservable* metrics) {
28 // These classes are owned by the metrics.
29 new FromGWSPageLoadMetricsObserver(metrics);
30 new google_captcha_observer::GoogleCaptchaObserver(metrics);
31 }
32
42 rappor::RapporService* 33 rappor::RapporService*
43 PageLoadMetricsEmbedderInterfaceImpl::GetRapporService() { 34 PageLoadMetricsEmbedderInterfaceImpl::GetRapporService() {
44 // During the browser process shutdown path, calling this getter can 35 // During the browser process shutdown path, calling this getter can
45 // reinitialize multiple destroyed objects. This alters shutdown ordering. 36 // reinitialize multiple destroyed objects. This alters shutdown ordering.
46 if (g_browser_process->IsShuttingDown()) 37 if (g_browser_process->IsShuttingDown())
47 return nullptr; 38 return nullptr;
48 return g_browser_process->rappor_service(); 39 return g_browser_process->rappor_service();
49 } 40 }
50 41
51 bool PageLoadMetricsEmbedderInterfaceImpl::IsPrerendering( 42 bool PageLoadMetricsEmbedderInterfaceImpl::IsPrerendering(
52 content::WebContents* web_contents) { 43 content::WebContents* web_contents) {
53 return prerender::PrerenderContents::FromWebContents(web_contents) != nullptr; 44 return prerender::PrerenderContents::FromWebContents(web_contents) != nullptr;
54 } 45 }
55 46
56 } // namespace chrome 47 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698