Chromium Code Reviews| Index: chrome/browser/metrics/metrics_services_manager.cc |
| diff --git a/chrome/browser/metrics/metrics_services_manager.cc b/chrome/browser/metrics/metrics_services_manager.cc |
| index 6e71aa172019752bf66f1e3cdaabc5b293a67efc..684611f2bdcd7d07fd495d35c589cb5c537bd7d5 100644 |
| --- a/chrome/browser/metrics/metrics_services_manager.cc |
| +++ b/chrome/browser/metrics/metrics_services_manager.cc |
| @@ -4,45 +4,18 @@ |
| #include "chrome/browser/metrics/metrics_services_manager.h" |
| -#include <string> |
| - |
| -#include "base/command_line.h" |
| #include "base/logging.h" |
| -#include "base/prefs/pref_service.h" |
| -#include "chrome/browser/browser_process.h" |
| -#include "chrome/browser/metrics/chrome_metrics_service_accessor.h" |
| -#include "chrome/browser/metrics/chrome_metrics_service_client.h" |
| -#include "chrome/browser/metrics/metrics_reporting_state.h" |
| -#include "chrome/browser/metrics/variations/chrome_variations_service_client.h" |
| -#include "chrome/browser/metrics/variations/ui_string_overrider_factory.h" |
| -#include "chrome/browser/profiles/profile.h" |
| -#include "chrome/browser/profiles/profile_manager.h" |
| -#include "chrome/browser/ui/browser_otr_state.h" |
| -#include "chrome/common/chrome_switches.h" |
| -#include "chrome/common/pref_names.h" |
| -#include "chrome/installer/util/google_update_settings.h" |
| +#include "chrome/browser/metrics/metrics_services_manager_client.h" |
| #include "components/metrics/metrics_service.h" |
| +#include "components/metrics/metrics_service_client.h" |
| #include "components/metrics/metrics_state_manager.h" |
| #include "components/rappor/rappor_service.h" |
| #include "components/variations/service/variations_service.h" |
| -#include "content/public/browser/browser_thread.h" |
| - |
| -#if defined(OS_CHROMEOS) |
| -#include "chrome/browser/chromeos/settings/cros_settings.h" |
| -#endif |
| -// Posts |GoogleUpdateSettings::StoreMetricsClientInfo| on blocking pool thread |
| -// because it needs access to IO and cannot work from UI thread. |
| -void PostStoreMetricsClientInfo(const metrics::ClientInfo& client_info) { |
| - content::BrowserThread::GetBlockingPool()->PostTask(FROM_HERE, |
| - base::Bind(&GoogleUpdateSettings::StoreMetricsClientInfo, client_info)); |
| -} |
| - |
| -MetricsServicesManager::MetricsServicesManager(PrefService* local_state) |
| - : local_state_(local_state), |
| - may_upload_(false), |
| - may_record_(false) { |
| - DCHECK(local_state); |
| +MetricsServicesManager::MetricsServicesManager( |
| + scoped_ptr<MetricsServicesManagerClient> client) |
| + : client_(client.Pass()), may_upload_(false), may_record_(false) { |
| + DCHECK(client_); |
| } |
| MetricsServicesManager::~MetricsServicesManager() { |
| @@ -50,74 +23,39 @@ MetricsServicesManager::~MetricsServicesManager() { |
| metrics::MetricsService* MetricsServicesManager::GetMetricsService() { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| - return GetChromeMetricsServiceClient()->metrics_service(); |
| + return client_->GetMetricsService(GetMetricsServiceClient()); |
|
Alexei Svitkine (slow)
2015/10/19 16:47:19
This is a bit convoluted. Can we just expose metri
blundell
2015/10/20 10:36:45
Yep! I meant to ask you about whether you thought
|
| } |
| rappor::RapporService* MetricsServicesManager::GetRapporService() { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| if (!rappor_service_) { |
| - rappor_service_.reset(new rappor::RapporService( |
| - local_state_, base::Bind(&chrome::IsOffTheRecordSessionActive))); |
| - rappor_service_->Initialize(g_browser_process->system_request_context()); |
| + rappor_service_ = client_->CreateRapporService(); |
| + rappor_service_->Initialize(client_->GetURLRequestContext()); |
| } |
| return rappor_service_.get(); |
| } |
| variations::VariationsService* MetricsServicesManager::GetVariationsService() { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| - if (!variations_service_) { |
| - variations_service_ = variations::VariationsService::Create( |
| - make_scoped_ptr(new ChromeVariationsServiceClient()), local_state_, |
| - GetMetricsStateManager(), switches::kDisableBackgroundNetworking, |
| - chrome_variations::CreateUIStringOverrider()); |
| - } |
| + if (!variations_service_) |
| + variations_service_ = client_->CreateVariationsService(); |
| return variations_service_.get(); |
| } |
| void MetricsServicesManager::OnPluginLoadingError( |
| const base::FilePath& plugin_path) { |
| - GetChromeMetricsServiceClient()->LogPluginLoadingError(plugin_path); |
| + GetMetricsServiceClient()->OnPluginLoadingError(plugin_path); |
|
Alexei Svitkine (slow)
2015/10/19 16:47:19
Hmm, I wonder if we should just plumb this through
blundell
2015/10/20 10:36:45
The functionality here is implemented at the //chr
|
| } |
| -ChromeMetricsServiceClient* |
| -MetricsServicesManager::GetChromeMetricsServiceClient() { |
| +metrics::MetricsServiceClient* |
| +MetricsServicesManager::GetMetricsServiceClient() { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| if (!metrics_service_client_) { |
|
Alexei Svitkine (slow)
2015/10/19 16:47:19
Nit: No {}'s
blundell
2015/10/20 10:36:45
Done.
|
| - metrics_service_client_ = ChromeMetricsServiceClient::Create( |
| - GetMetricsStateManager(), local_state_); |
| + metrics_service_client_ = client_->CreateMetricsServiceClient(); |
| } |
| return metrics_service_client_.get(); |
| } |
| -metrics::MetricsStateManager* MetricsServicesManager::GetMetricsStateManager() { |
| - DCHECK(thread_checker_.CalledOnValidThread()); |
| - if (!metrics_state_manager_) { |
| - metrics_state_manager_ = metrics::MetricsStateManager::Create( |
| - local_state_, |
| - base::Bind( |
| - &ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled), |
| - base::Bind(&PostStoreMetricsClientInfo), |
| - base::Bind(&GoogleUpdateSettings::LoadMetricsClientInfo)); |
| - } |
| - return metrics_state_manager_.get(); |
| -} |
| - |
| -bool MetricsServicesManager::GetSafeBrowsingState() { |
| - // Start listening for updates to SB service state. This is done here instead |
| - // of in the constructor to avoid errors from trying to instantiate SB |
| - // service before the IO thread exists. |
| - SafeBrowsingService* sb_service = g_browser_process->safe_browsing_service(); |
| - if (!sb_state_subscription_ && sb_service) { |
| - // base::Unretained(this) is safe here since this object owns the |
| - // sb_state_subscription_ which owns the pointer. |
| - sb_state_subscription_ = sb_service->RegisterStateCallback( |
| - base::Bind(&MetricsServicesManager::UpdateRunningServices, |
| - base::Unretained(this))); |
| - } |
| - |
| - return sb_service && sb_service->enabled_by_prefs(); |
| -} |
| - |
| void MetricsServicesManager::UpdatePermissions(bool may_record, |
| bool may_upload) { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| @@ -134,13 +72,7 @@ void MetricsServicesManager::UpdateRunningServices() { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| metrics::MetricsService* metrics = GetMetricsService(); |
| - const base::CommandLine* cmdline = base::CommandLine::ForCurrentProcess(); |
| - |
| - const bool only_do_metrics_recording = |
| - cmdline->HasSwitch(switches::kMetricsRecordingOnly) || |
| - cmdline->HasSwitch(switches::kEnableBenchmarking); |
| - |
| - if (only_do_metrics_recording) { |
| + if (client_->OnlyDoMetricsRecording()) { |
| metrics->StartRecordingForTests(); |
| GetRapporService()->Update( |
| rappor::UMA_RAPPOR_GROUP | rappor::SAFEBROWSING_RAPPOR_GROUP, |
| @@ -164,14 +96,14 @@ void MetricsServicesManager::UpdateRunningServices() { |
| #if defined(GOOGLE_CHROME_BUILD) |
| if (may_record_) |
| recording_groups |= rappor::UMA_RAPPOR_GROUP; |
| - if (GetSafeBrowsingState()) |
| + if (client_->IsSafeBrowsingEnabled( |
| + base::Bind(&MetricsServicesManager::UpdateRunningServices, |
| + base::Unretained(this))) |
|
Alexei Svitkine (slow)
2015/10/19 16:47:19
Nit: Make a local var for this callback to make th
blundell
2015/10/20 10:36:45
Done.
|
| recording_groups |= rappor::SAFEBROWSING_RAPPOR_GROUP; |
| #endif // defined(GOOGLE_CHROME_BUILD) |
| GetRapporService()->Update(recording_groups, may_upload_); |
| } |
| void MetricsServicesManager::UpdateUploadPermissions(bool may_upload) { |
| - return UpdatePermissions( |
| - ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled(), |
| - may_upload); |
| + return UpdatePermissions(client_->IsMetricsReportingEnabled(), may_upload); |
| } |