12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- // 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.
- #ifndef COMPONENTS_METRICS_METRICS_SERVICE_ACCESSOR_H_
- #define COMPONENTS_METRICS_METRICS_SERVICE_ACCESSOR_H_
- #include <stdint.h>
- #include "base/strings/string_piece.h"
- #include "components/variations/synthetic_trials.h"
- class PrefService;
- namespace metrics {
- class MetricsService;
- // This class limits and documents access to metrics service helper methods.
- // These methods are protected so each user has to inherit own program-specific
- // specialization and enable access there by declaring friends.
- class MetricsServiceAccessor {
- public:
- MetricsServiceAccessor(const MetricsServiceAccessor&) = delete;
- MetricsServiceAccessor& operator=(const MetricsServiceAccessor&) = delete;
- // Returns the value assigned by
- // SetForceIsMetricsReportingEnabledPrefLookup(). Default value is false.
- static bool IsForceMetricsReportingEnabledPrefLookup();
- protected:
- // Constructor declared as protected to enable inheritance. Descendants should
- // disallow instantiation.
- MetricsServiceAccessor() {}
- // Returns whether metrics reporting is enabled, using the value of the
- // kMetricsReportingEnabled pref in |pref_service| to determine whether user
- // has enabled reporting.
- static bool IsMetricsReportingEnabled(PrefService* pref_service);
- // Registers a field trial name and group with |metrics_service| (if not
- // null), to be used to annotate a UMA report with a particular configuration
- // state. The |annotation_mode| parameter determines when UMA reports should
- // start being annotated with this trial and group. Returns true on success.
- // See the comment on SyntheticTrialRegistry::RegisterSyntheticFieldTrial()
- // and ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial() for more
- // details.
- static bool RegisterSyntheticFieldTrial(
- MetricsService* metrics_service,
- base::StringPiece trial_name,
- base::StringPiece group_name,
- variations::SyntheticTrialAnnotationMode annotation_mode);
- // IsMetricsReportingEnabled() in non-official builds unconditionally returns
- // false. This results in different behavior for tests running in official vs
- // non-official builds. To get consistent behavior call this with true, which
- // forces non-official builds to look at the prefs value official builds look
- // at.
- static void SetForceIsMetricsReportingEnabledPrefLookup(bool value);
- };
- } // namespace metrics
- #endif // COMPONENTS_METRICS_METRICS_SERVICE_ACCESSOR_H_
|