OLD | NEW |
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/metrics/chrome_metrics_services_manager_client.h" | 5 #include "chrome/browser/metrics/chrome_metrics_services_manager_client.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "chrome/browser/browser_process.h" | 10 #include "chrome/browser/browser_process.h" |
11 #include "chrome/browser/metrics/chrome_metrics_service_accessor.h" | 11 #include "chrome/browser/metrics/chrome_metrics_service_accessor.h" |
12 #include "chrome/browser/metrics/chrome_metrics_service_client.h" | 12 #include "chrome/browser/metrics/chrome_metrics_service_client.h" |
13 #include "chrome/browser/metrics/variations/chrome_variations_service_client.h" | 13 #include "chrome/browser/metrics/variations/chrome_variations_service_client.h" |
14 #include "chrome/browser/metrics/variations/ui_string_overrider_factory.h" | 14 #include "chrome/browser/metrics/variations/ui_string_overrider_factory.h" |
15 #include "chrome/browser/ui/browser_otr_state.h" | 15 #include "chrome/browser/ui/browser_otr_state.h" |
16 #include "chrome/common/chrome_switches.h" | 16 #include "chrome/common/chrome_switches.h" |
17 #include "chrome/installer/util/google_update_settings.h" | 17 #include "chrome/installer/util/google_update_settings.h" |
| 18 #include "components/metrics/enabled_state_provider.h" |
18 #include "components/metrics/metrics_state_manager.h" | 19 #include "components/metrics/metrics_state_manager.h" |
19 #include "components/prefs/pref_service.h" | 20 #include "components/prefs/pref_service.h" |
20 #include "components/rappor/rappor_service.h" | 21 #include "components/rappor/rappor_service.h" |
21 #include "components/variations/service/variations_service.h" | 22 #include "components/variations/service/variations_service.h" |
22 #include "content/public/browser/browser_thread.h" | 23 #include "content/public/browser/browser_thread.h" |
23 | 24 |
24 namespace { | 25 namespace { |
25 | 26 |
26 // Posts |GoogleUpdateSettings::StoreMetricsClientInfo| on blocking pool thread | 27 // Posts |GoogleUpdateSettings::StoreMetricsClientInfo| on blocking pool thread |
27 // because it needs access to IO and cannot work from UI thread. | 28 // because it needs access to IO and cannot work from UI thread. |
28 void PostStoreMetricsClientInfo(const metrics::ClientInfo& client_info) { | 29 void PostStoreMetricsClientInfo(const metrics::ClientInfo& client_info) { |
29 content::BrowserThread::GetBlockingPool()->PostTask( | 30 content::BrowserThread::GetBlockingPool()->PostTask( |
30 FROM_HERE, | 31 FROM_HERE, |
31 base::Bind(&GoogleUpdateSettings::StoreMetricsClientInfo, client_info)); | 32 base::Bind(&GoogleUpdateSettings::StoreMetricsClientInfo, client_info)); |
32 } | 33 } |
33 | 34 |
34 } // namespace | 35 } // namespace |
35 | 36 |
| 37 class ChromeMetricsServicesManagerClient::ChromeEnabledStateProvider |
| 38 : public metrics::EnabledStateProvider { |
| 39 public: |
| 40 ChromeEnabledStateProvider() {} |
| 41 ~ChromeEnabledStateProvider() override {} |
| 42 |
| 43 bool IsConsentGiven() override { |
| 44 return ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled(); |
| 45 } |
| 46 |
| 47 DISALLOW_COPY_AND_ASSIGN(ChromeEnabledStateProvider); |
| 48 }; |
| 49 |
36 ChromeMetricsServicesManagerClient::ChromeMetricsServicesManagerClient( | 50 ChromeMetricsServicesManagerClient::ChromeMetricsServicesManagerClient( |
37 PrefService* local_state) | 51 PrefService* local_state) |
38 : local_state_(local_state) { | 52 : enabled_state_provider_(new ChromeEnabledStateProvider()), |
| 53 local_state_(local_state) { |
39 DCHECK(local_state); | 54 DCHECK(local_state); |
40 | 55 |
41 SetupMetricsStateForChromeOS(); | 56 SetupMetricsStateForChromeOS(); |
42 } | 57 } |
43 | 58 |
44 ChromeMetricsServicesManagerClient::~ChromeMetricsServicesManagerClient() {} | 59 ChromeMetricsServicesManagerClient::~ChromeMetricsServicesManagerClient() {} |
45 | 60 |
46 std::unique_ptr<rappor::RapporService> | 61 std::unique_ptr<rappor::RapporService> |
47 ChromeMetricsServicesManagerClient::CreateRapporService() { | 62 ChromeMetricsServicesManagerClient::CreateRapporService() { |
48 DCHECK(thread_checker_.CalledOnValidThread()); | 63 DCHECK(thread_checker_.CalledOnValidThread()); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 // this object, which owns the sb_state_subscription_, which owns the | 99 // this object, which owns the sb_state_subscription_, which owns the |
85 // pointer to the MetricsServicesManager. | 100 // pointer to the MetricsServicesManager. |
86 sb_state_subscription_ = | 101 sb_state_subscription_ = |
87 sb_service->RegisterStateCallback(on_update_callback); | 102 sb_service->RegisterStateCallback(on_update_callback); |
88 } | 103 } |
89 | 104 |
90 return sb_service && sb_service->enabled_by_prefs(); | 105 return sb_service && sb_service->enabled_by_prefs(); |
91 } | 106 } |
92 | 107 |
93 bool ChromeMetricsServicesManagerClient::IsMetricsReportingEnabled() { | 108 bool ChromeMetricsServicesManagerClient::IsMetricsReportingEnabled() { |
94 return ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled(); | 109 return enabled_state_provider_->IsReportingEnabled(); |
95 } | 110 } |
96 | 111 |
97 bool ChromeMetricsServicesManagerClient::OnlyDoMetricsRecording() { | 112 bool ChromeMetricsServicesManagerClient::OnlyDoMetricsRecording() { |
98 const base::CommandLine* cmdline = base::CommandLine::ForCurrentProcess(); | 113 const base::CommandLine* cmdline = base::CommandLine::ForCurrentProcess(); |
99 return cmdline->HasSwitch(switches::kMetricsRecordingOnly) || | 114 return cmdline->HasSwitch(switches::kMetricsRecordingOnly) || |
100 cmdline->HasSwitch(switches::kEnableBenchmarking); | 115 cmdline->HasSwitch(switches::kEnableBenchmarking); |
101 } | 116 } |
102 | 117 |
103 metrics::MetricsStateManager* | 118 metrics::MetricsStateManager* |
104 ChromeMetricsServicesManagerClient::GetMetricsStateManager() { | 119 ChromeMetricsServicesManagerClient::GetMetricsStateManager() { |
105 DCHECK(thread_checker_.CalledOnValidThread()); | 120 DCHECK(thread_checker_.CalledOnValidThread()); |
106 if (!metrics_state_manager_) { | 121 if (!metrics_state_manager_) { |
107 metrics_state_manager_ = metrics::MetricsStateManager::Create( | 122 metrics_state_manager_ = metrics::MetricsStateManager::Create( |
108 local_state_, | 123 local_state_, enabled_state_provider_.get(), |
109 base::Bind( | |
110 &ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled), | |
111 base::Bind(&PostStoreMetricsClientInfo), | 124 base::Bind(&PostStoreMetricsClientInfo), |
112 base::Bind(&GoogleUpdateSettings::LoadMetricsClientInfo)); | 125 base::Bind(&GoogleUpdateSettings::LoadMetricsClientInfo)); |
113 } | 126 } |
114 return metrics_state_manager_.get(); | 127 return metrics_state_manager_.get(); |
115 } | 128 } |
OLD | NEW |