15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file.
45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef CHROME_BROWSER_METRICS_METRICS_REPORTING_STATE_H_
65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define CHROME_BROWSER_METRICS_METRICS_REPORTING_STATE_H_
75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/callback.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef base::Callback<void(bool)> OnMetricsReportingCallbackType;
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Initiates a change to metrics reporting state to the new value of |enabled|.
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Starts or stops the metrics service based on the new state and then runs
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// |callback_fn| (which can be null) with the updated state (as the operation
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// may fail). On platforms other than CrOS and Android, also updates the
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// underlying pref.
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// TODO(gayane): Support setting the pref on all platforms.
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid InitiateMetricsReportingChange(
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    bool enabled,
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const OnMetricsReportingCallbackType& callback_fn);
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Returns whether MetricsReporting can be modified by the user (except CrOS and
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Android).
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool IsMetricsReportingUserChangable();
255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif  // CHROME_BROWSER_METRICS_METRICS_REPORTING_STATE_H_
27