Introduce a MetricsServicesManager class.
This class now owns MetricsService, VariationsService
and RapporService as well as MetricsStateManager.
The motivation is to be able to pass MetricsStateManager
to VariationsService (in a followup CL), so that it
can be used for simulation.
BUG=315807
Review URL: https://codereview.chromium.org/263093003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@269144 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/metrics/metrics_services_manager.cc b/chrome/browser/metrics/metrics_services_manager.cc
new file mode 100644
index 0000000..95d0ac9
--- /dev/null
+++ b/chrome/browser/metrics/metrics_services_manager.cc
@@ -0,0 +1,49 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/metrics/metrics_services_manager.h"
+
+#include "chrome/browser/metrics/metrics_service.h"
+#include "chrome/browser/metrics/metrics_state_manager.h"
+#include "chrome/browser/metrics/variations/variations_service.h"
+#include "components/rappor/rappor_service.h"
+
+MetricsServicesManager::MetricsServicesManager(PrefService* local_state)
+ : local_state_(local_state) {
+ DCHECK(local_state);
+}
+
+MetricsServicesManager::~MetricsServicesManager() {
+}
+
+MetricsService* MetricsServicesManager::GetMetricsService() {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ if (!metrics_service_)
+ metrics_service_.reset(new MetricsService(GetMetricsStateManager()));
+ return metrics_service_.get();
+}
+
+rappor::RapporService* MetricsServicesManager::GetRapporService() {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ if (!rappor_service_)
+ rappor_service_.reset(new rappor::RapporService);
+ return rappor_service_.get();
+}
+
+chrome_variations::VariationsService*
+MetricsServicesManager::GetVariationsService() {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ if (!variations_service_) {
+ variations_service_.reset(
+ chrome_variations::VariationsService::Create(local_state_));
+ }
+ return variations_service_.get();
+}
+
+metrics::MetricsStateManager* MetricsServicesManager::GetMetricsStateManager() {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ if (!metrics_state_manager_)
+ metrics_state_manager_ = metrics::MetricsStateManager::Create(local_state_);
+ return metrics_state_manager_.get();
+}