| 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 |