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

Side by Side Diff: chrome/browser/metrics/chrome_metrics_services_manager_client.cc

Issue 1958003003: Splitting the concept of UMA consent, and should UMA report. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months 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/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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698