Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / metrics / metrics_services_manager.cc
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.
4
5 #include "chrome/browser/metrics/metrics_services_manager.h"
6
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"
11
12 MetricsServicesManager::MetricsServicesManager(PrefService* local_state)
13     : local_state_(local_state) {
14   DCHECK(local_state);
15 }
16
17 MetricsServicesManager::~MetricsServicesManager() {
18 }
19
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();
25 }
26
27 rappor::RapporService* MetricsServicesManager::GetRapporService() {
28   DCHECK(thread_checker_.CalledOnValidThread());
29   if (!rappor_service_)
30     rappor_service_.reset(new rappor::RapporService);
31   return rappor_service_.get();
32 }
33
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_));
40   }
41   return variations_service_.get();
42 }
43
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();
49 }