// Copyright 2016 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_REPORTING_DEFAULT_STATE_H_
#define COMPONENTS_METRICS_METRICS_REPORTING_DEFAULT_STATE_H_

class PrefRegistrySimple;
class PrefService;

namespace metrics {

// Metrics reporting default state. This relates to the state of the enable
// checkbox shown on first-run. This enum is used to store values in a pref, and
// shouldn't be renumbered.
enum EnableMetricsDefault {
  // We only record the value during first-run. The default of existing
  // installs is considered unknown.
  DEFAULT_UNKNOWN,
  // The first-run checkbox was unchecked by default.
  OPT_IN,
  // The first-run checkbox was checked by default.
  OPT_OUT,
};

// Register prefs relating to metrics reporting state. Currently only registers
// a pref for metrics reporting default opt-in state.
void RegisterMetricsReportingStatePrefs(PrefRegistrySimple* registry);

// Sets whether metrics reporting was opt-in or not. If it was opt-in, then the
// enable checkbox on first-run was default unchecked. If it was opt-out, then
// the checkbox was default checked. This should only be set once, and only
// during first-run.
void RecordMetricsReportingDefaultState(PrefService* local_state,
                                        EnableMetricsDefault default_state);

// Same as above, but does not verify the current state is UNKNOWN.
void ForceRecordMetricsReportingDefaultState(
    PrefService* local_state,
    EnableMetricsDefault default_state);

// Gets information about the default value for the enable metrics reporting
// checkbox shown during first-run.
EnableMetricsDefault GetMetricsReportingDefaultState(PrefService* local_state);

}  // namespace metrics

#endif  // COMPONENTS_METRICS_METRICS_REPORTING_DEFAULT_STATE_H_
