// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef ASH_METRICS_LOGIN_METRICS_RECORDER_H_
#define ASH_METRICS_LOGIN_METRICS_RECORDER_H_

#include "ash/ash_export.h"

namespace ash {

// A metrics recorder that records user activity in login screen.
// This is tied to UserMetricsRecorder lifetime.
// Authentication related metrics are captured in
// chromeos/ash/components/login/auth/auth_events_recorder.h
class ASH_EXPORT LoginMetricsRecorder {
 public:
  // User clicks target on the lock screen. This enum is used to back an UMA
  // histogram and new values should be inserted immediately above kTargetCount.
  enum class LockScreenUserClickTarget {
    kShutDownButton = 0,
    kRestartButton,
    kSignOutButton,
    kSystemTray,
    kVirtualKeyboardTray,
    kImeTray,
    kNotificationTray,
    kParentAccessButton,
    kTargetCount,
  };

  // User clicks target on the login screen. This enum is used to back an UMA
  // histogram and new values should be inserted immediately above kTargetCount.
  enum class LoginScreenUserClickTarget {
    kShutDownButton = 0,
    kRestartButton,
    kBrowseAsGuestButton,
    kAddUserButton,
    kSystemTray,
    kVirtualKeyboardTray,
    kImeTray,
    kOsInstallButton,
    kTargetCount,
  };

  // User clicks target in OOBE. This enum is used to back an UMA
  // histogram and new values should be inserted immediately above kTargetCount.
  enum class OobeUserClickTarget {
    kShutDownButton = 0,
    kBrowseAsGuestButton,
    kSystemTray,
    kVirtualKeyboardTray,
    kImeTray,
    kEnterpriseEnrollmentButton,
    kSignIn,
    kOsInstallButton,
    kSchoolEnrollmentButton,
    kTargetCount,
  };

  // Helper enumeration for tray related user click targets on login and lock
  // screens. Values are translated to UMA histogram enums.
  enum class TrayClickTarget {
    kSystemTray,
    kVirtualKeyboardTray,
    kImeTray,
    kNotificationTray,
    kTargetCount,
  };

  // Helper enumeration for shelf buttons user click targets on login and lock
  // screens. Values are translated to UMA histogram enums.
  enum class ShelfButtonClickTarget {
    kShutDownButton,
    kRestartButton,
    kSignOutButton,
    kBrowseAsGuestButton,
    kAddUserButton,
    kCancelButton,
    kParentAccessButton,
    kEnterpriseEnrollmentButton,
    kOsInstallButton,
    kSignIn,
    kSchoolEnrollmentButton,
    kTargetCount,
  };

  LoginMetricsRecorder();

  LoginMetricsRecorder(const LoginMetricsRecorder&) = delete;
  LoginMetricsRecorder& operator=(const LoginMetricsRecorder&) = delete;

  ~LoginMetricsRecorder();

  // Methods used to record UMA stats.
  void RecordUserTrayClick(TrayClickTarget target);
  void RecordUserShelfButtonClick(ShelfButtonClickTarget target);
};

}  // namespace ash

#endif  // ASH_METRICS_LOGIN_METRICS_RECORDER_H_
