// 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 CHROME_BROWSER_SIGNIN_SIGNIN_STATUS_METRICS_PROVIDER_CHROMEOS_H_
#define CHROME_BROWSER_SIGNIN_SIGNIN_STATUS_METRICS_PROVIDER_CHROMEOS_H_

#include "base/gtest_prod_util.h"
#include "base/macros.h"
#include "components/signin/core/browser/signin_status_metrics_provider_base.h"

// Record and report the browser sign-in status on ChromeOS during each UMA
// session. On ChromeOS, the browser can only be at unsigned-in status when
// browsing as a guest, or before the user logs in (i.e. the user sees a login
// window.) When user logs out, the browser process is terminated. Therefore,
// the browser's sign-in status during one UMA session can only be alway
// signed-in, or always unsigned-in, or changing from unsigned-in to signed-in.
class SigninStatusMetricsProviderChromeOS
    : public SigninStatusMetricsProviderBase {
 public:
  SigninStatusMetricsProviderChromeOS();
  ~SigninStatusMetricsProviderChromeOS() override;

  // SigninStatusMetricsProviderBase:
  void ProvideCurrentSessionData(
      metrics::ChromeUserMetricsExtension* uma_proto) override;

 private:
  FRIEND_TEST_ALL_PREFIXES(SigninStatusMetricsProviderChromeOS,
                           ComputeSigninStatusToUpload);

  // Sets the |signin_status_| purely based on if the user is currently logged
  // in to a non-guest profile.
  void SetCurrentSigninStatus();

  // Compute the sign-in status to upload to UMA log given the recorded sign-in
  // status and if user is logged in now.
  SigninStatus ComputeSigninStatusToUpload(SigninStatus recorded_status,
                                           bool logged_in_now);

  DISALLOW_COPY_AND_ASSIGN(SigninStatusMetricsProviderChromeOS);
};

#endif  // CHROME_BROWSER_SIGNIN_SIGNIN_STATUS_METRICS_PROVIDER_CHROMEOS_H_
