blob: 24fc1d5f433d12e56c4e41acc47923d9a00c131c [file] [log] [blame]
[email protected]c3cac952014-05-09 01:51:181// 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#ifndef CHROME_BROWSER_METRICS_METRICS_SERVICES_MANAGER_H_
6#define CHROME_BROWSER_METRICS_METRICS_SERVICES_MANAGER_H_
7
8#include "base/basictypes.h"
9#include "base/memory/scoped_ptr.h"
10#include "base/threading/thread_checker.h"
11
[email protected]037642f2014-05-29 20:40:5012class ChromeMetricsServiceClient;
[email protected]c3cac952014-05-09 01:51:1813class MetricsService;
14class PrefService;
15
[email protected]544246e2014-06-06 11:22:2816namespace base {
17class FilePath;
18}
19
[email protected]c3cac952014-05-09 01:51:1820namespace metrics {
21class MetricsStateManager;
22}
23
24namespace rappor {
25class RapporService;
26}
27
28namespace chrome_variations {
29class VariationsService;
30}
31
32// MetricsServicesManager is a helper class that has ownership over the various
[email protected]037642f2014-05-29 20:40:5033// metrics-related services in Chrome: MetricsService (via its client),
34// RapporService and VariationsService.
[email protected]c3cac952014-05-09 01:51:1835class MetricsServicesManager {
36 public:
37 // Creates the MetricsServicesManager with the |local_state| prefs service.
38 explicit MetricsServicesManager(PrefService* local_state);
39 virtual ~MetricsServicesManager();
40
[email protected]4a55a712014-06-08 16:50:3441 // Returns the MetricsService, creating it if it hasn't been created yet (and
42 // additionally creating the ChromeMetricsServiceClient in that case).
[email protected]c3cac952014-05-09 01:51:1843 MetricsService* GetMetricsService();
44
45 // Returns the GetRapporService, creating it if it hasn't been created yet.
46 rappor::RapporService* GetRapporService();
47
48 // Returns the VariationsService, creating it if it hasn't been created yet.
49 chrome_variations::VariationsService* GetVariationsService();
50
[email protected]544246e2014-06-06 11:22:2851 // Should be called when a plugin loading error occurs.
52 void OnPluginLoadingError(const base::FilePath& plugin_path);
53
[email protected]c3cac952014-05-09 01:51:1854 private:
[email protected]4a55a712014-06-08 16:50:3455 // Returns the ChromeMetricsServiceClient, creating it if it hasn't been
56 // created yet (and additionally creating the MetricsService in that case).
57 ChromeMetricsServiceClient* GetChromeMetricsServiceClient();
58
[email protected]c3cac952014-05-09 01:51:1859 metrics::MetricsStateManager* GetMetricsStateManager();
60
[email protected]3c70256f2014-05-22 03:02:1261 // Returns true iff metrics reporting is enabled.
62 bool IsMetricsReportingEnabled() const;
63
[email protected]c3cac952014-05-09 01:51:1864 // Ensures that all functions are called from the same thread.
65 base::ThreadChecker thread_checker_;
66
67 // Weak pointer to the local state prefs store.
68 PrefService* local_state_;
69
70 // MetricsStateManager which is passed as a parameter to service constructors.
71 scoped_ptr<metrics::MetricsStateManager> metrics_state_manager_;
72
[email protected]037642f2014-05-29 20:40:5073 // Chrome embedder implementation of the MetricsServiceClient. Owns the
74 // MetricsService.
75 scoped_ptr<ChromeMetricsServiceClient> metrics_service_client_;
[email protected]c3cac952014-05-09 01:51:1876
77 // The RapporService, for RAPPOR metric uploads.
78 scoped_ptr<rappor::RapporService> rappor_service_;
79
80 // The VariationsService, for server-side experiments infrastructure.
81 scoped_ptr<chrome_variations::VariationsService> variations_service_;
82
83 DISALLOW_COPY_AND_ASSIGN(MetricsServicesManager);
84};
85
86#endif // CHROME_BROWSER_METRICS_METRICS_SERVICES_MANAGER_H_