OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/metrics/metrics_services_manager.h" | 5 #include "chrome/browser/metrics/metrics_services_manager.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
9 #include "chrome/browser/metrics/chrome_metrics_service_client.h" | 9 #include "chrome/browser/metrics/chrome_metrics_service_client.h" |
10 #include "chrome/browser/metrics/extensions_metrics_provider.h" | |
11 #include "chrome/browser/metrics/metrics_service.h" | 10 #include "chrome/browser/metrics/metrics_service.h" |
12 #include "chrome/browser/metrics/variations/variations_service.h" | 11 #include "chrome/browser/metrics/variations/variations_service.h" |
13 #include "chrome/common/chrome_switches.h" | 12 #include "chrome/common/chrome_switches.h" |
14 #include "chrome/common/pref_names.h" | 13 #include "chrome/common/pref_names.h" |
15 #include "components/metrics/metrics_state_manager.h" | 14 #include "components/metrics/metrics_state_manager.h" |
16 #include "components/rappor/rappor_service.h" | 15 #include "components/rappor/rappor_service.h" |
17 | 16 |
18 #if defined(OS_CHROMEOS) | 17 #if defined(OS_CHROMEOS) |
19 #include "chrome/browser/chromeos/settings/cros_settings.h" | 18 #include "chrome/browser/chromeos/settings/cros_settings.h" |
20 #endif | 19 #endif |
21 | 20 |
22 MetricsServicesManager::MetricsServicesManager(PrefService* local_state) | 21 MetricsServicesManager::MetricsServicesManager(PrefService* local_state) |
23 : local_state_(local_state) { | 22 : local_state_(local_state) { |
24 DCHECK(local_state); | 23 DCHECK(local_state); |
25 } | 24 } |
26 | 25 |
27 MetricsServicesManager::~MetricsServicesManager() { | 26 MetricsServicesManager::~MetricsServicesManager() { |
28 } | 27 } |
29 | 28 |
30 MetricsService* MetricsServicesManager::GetMetricsService() { | 29 MetricsService* MetricsServicesManager::GetMetricsService() { |
31 DCHECK(thread_checker_.CalledOnValidThread()); | 30 DCHECK(thread_checker_.CalledOnValidThread()); |
32 if (!metrics_service_client_) { | 31 return GetChromeMetricsServiceClient()->metrics_service(); |
33 metrics_service_client_ = | |
34 ChromeMetricsServiceClient::Create(GetMetricsStateManager(), | |
35 local_state_); | |
36 metrics_service_client_->metrics_service()->RegisterMetricsProvider( | |
37 scoped_ptr<metrics::MetricsProvider>( | |
38 new ExtensionsMetricsProvider(GetMetricsStateManager()))); | |
39 } | |
40 return metrics_service_client_->metrics_service(); | |
41 } | 32 } |
42 | 33 |
43 rappor::RapporService* MetricsServicesManager::GetRapporService() { | 34 rappor::RapporService* MetricsServicesManager::GetRapporService() { |
44 DCHECK(thread_checker_.CalledOnValidThread()); | 35 DCHECK(thread_checker_.CalledOnValidThread()); |
45 if (!rappor_service_) | 36 if (!rappor_service_) |
46 rappor_service_.reset(new rappor::RapporService); | 37 rappor_service_.reset(new rappor::RapporService); |
47 return rappor_service_.get(); | 38 return rappor_service_.get(); |
48 } | 39 } |
49 | 40 |
50 chrome_variations::VariationsService* | 41 chrome_variations::VariationsService* |
51 MetricsServicesManager::GetVariationsService() { | 42 MetricsServicesManager::GetVariationsService() { |
52 DCHECK(thread_checker_.CalledOnValidThread()); | 43 DCHECK(thread_checker_.CalledOnValidThread()); |
53 if (!variations_service_) { | 44 if (!variations_service_) { |
54 variations_service_ = | 45 variations_service_ = |
55 chrome_variations::VariationsService::Create(local_state_, | 46 chrome_variations::VariationsService::Create(local_state_, |
56 GetMetricsStateManager()); | 47 GetMetricsStateManager()); |
57 } | 48 } |
58 return variations_service_.get(); | 49 return variations_service_.get(); |
59 } | 50 } |
60 | 51 |
61 void MetricsServicesManager::OnPluginLoadingError( | 52 void MetricsServicesManager::OnPluginLoadingError( |
62 const base::FilePath& plugin_path) { | 53 const base::FilePath& plugin_path) { |
63 GetMetricsService()->LogPluginLoadingError(plugin_path); | 54 GetChromeMetricsServiceClient()->LogPluginLoadingError(plugin_path); |
| 55 } |
| 56 |
| 57 ChromeMetricsServiceClient* |
| 58 MetricsServicesManager::GetChromeMetricsServiceClient() { |
| 59 DCHECK(thread_checker_.CalledOnValidThread()); |
| 60 if (!metrics_service_client_) { |
| 61 metrics_service_client_ = ChromeMetricsServiceClient::Create( |
| 62 GetMetricsStateManager(), local_state_); |
| 63 } |
| 64 return metrics_service_client_.get(); |
64 } | 65 } |
65 | 66 |
66 metrics::MetricsStateManager* MetricsServicesManager::GetMetricsStateManager() { | 67 metrics::MetricsStateManager* MetricsServicesManager::GetMetricsStateManager() { |
67 DCHECK(thread_checker_.CalledOnValidThread()); | 68 DCHECK(thread_checker_.CalledOnValidThread()); |
68 if (!metrics_state_manager_) { | 69 if (!metrics_state_manager_) { |
69 metrics_state_manager_ = metrics::MetricsStateManager::Create( | 70 metrics_state_manager_ = metrics::MetricsStateManager::Create( |
70 local_state_, | 71 local_state_, |
71 base::Bind(&MetricsServicesManager::IsMetricsReportingEnabled, | 72 base::Bind(&MetricsServicesManager::IsMetricsReportingEnabled, |
72 base::Unretained(this))); | 73 base::Unretained(this))); |
73 } | 74 } |
(...skipping 13 matching lines...) Expand all Loading... |
87 #if defined(GOOGLE_CHROME_BUILD) | 88 #if defined(GOOGLE_CHROME_BUILD) |
88 #if defined(OS_CHROMEOS) | 89 #if defined(OS_CHROMEOS) |
89 chromeos::CrosSettings::Get()->GetBoolean(chromeos::kStatsReportingPref, | 90 chromeos::CrosSettings::Get()->GetBoolean(chromeos::kStatsReportingPref, |
90 &enabled); | 91 &enabled); |
91 #else | 92 #else |
92 enabled = local_state_->GetBoolean(prefs::kMetricsReportingEnabled); | 93 enabled = local_state_->GetBoolean(prefs::kMetricsReportingEnabled); |
93 #endif // #if defined(OS_CHROMEOS) | 94 #endif // #if defined(OS_CHROMEOS) |
94 #endif // defined(GOOGLE_CHROME_BUILD) | 95 #endif // defined(GOOGLE_CHROME_BUILD) |
95 return enabled; | 96 return enabled; |
96 } | 97 } |
OLD | NEW |