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
3 // found in the LICENSE file.
5 #include "chrome/browser/metrics/metrics_services_manager.h"
7 #include "chrome/browser/metrics/metrics_service.h"
8 #include "chrome/browser/metrics/metrics_state_manager.h"
9 #include "chrome/browser/metrics/variations/variations_service.h"
10 #include "components/rappor/rappor_service.h"
12 MetricsServicesManager::MetricsServicesManager(PrefService* local_state)
13 : local_state_(local_state) {
17 MetricsServicesManager::~MetricsServicesManager() {
20 MetricsService* MetricsServicesManager::GetMetricsService() {
21 DCHECK(thread_checker_.CalledOnValidThread());
22 if (!metrics_service_)
23 metrics_service_.reset(new MetricsService(GetMetricsStateManager()));
24 return metrics_service_.get();
27 rappor::RapporService* MetricsServicesManager::GetRapporService() {
28 DCHECK(thread_checker_.CalledOnValidThread());
30 rappor_service_.reset(new rappor::RapporService);
31 return rappor_service_.get();
34 chrome_variations::VariationsService*
35 MetricsServicesManager::GetVariationsService() {
36 DCHECK(thread_checker_.CalledOnValidThread());
37 if (!variations_service_) {
38 variations_service_.reset(
39 chrome_variations::VariationsService::Create(local_state_));
41 return variations_service_.get();
44 metrics::MetricsStateManager* MetricsServicesManager::GetMetricsStateManager() {
45 DCHECK(thread_checker_.CalledOnValidThread());
46 if (!metrics_state_manager_)
47 metrics_state_manager_ = metrics::MetricsStateManager::Create(local_state_);
48 return metrics_state_manager_.get();