blob: cb1588ba7dc7ed2eba3a8f6ef96479ccf289bb19 [file] [log] [blame]
// 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_CHROMEOS_LOGIN_EASY_UNLOCK_EASY_UNLOCK_METRICS_H_
#define CHROME_BROWSER_CHROMEOS_LOGIN_EASY_UNLOCK_EASY_UNLOCK_METRICS_H_
namespace base {
class TimeDelta;
}
namespace chromeos {
// Tracking login events for Easy unlock metrics.
// This enum is used to define the buckets for an enumerated UMA histogram.
// Hence,
// (a) existing enumerated constants should never be deleted or reordered, and
// (b) new constants should only be appended at the end of the enumeration.
enum EasyUnlockAuthEvent {
// User is successfully authenticated using Easy Unlock.
EASY_UNLOCK_SUCCESS = 0,
// Easy Unlock failed to authenticate the user.
EASY_UNLOCK_FAILURE = 1,
// Password is used because there is no pairing data.
PASSWORD_ENTRY_NO_PAIRING = 2,
// Password is used because pairing data is changed.
PASSWORD_ENTRY_PAIRING_CHANGED = 3,
// Password is used because of user hardlock.
PASSWORD_ENTRY_USER_HARDLOCK = 4,
// Password is used because Easy unlock service is not active.
PASSWORD_ENTRY_SERVICE_NOT_ACTIVE = 5,
// Password is used because Bluetooth is not on.
PASSWORD_ENTRY_NO_BLUETOOTH = 6,
// Password is used because Easy unlock is connecting.
PASSWORD_ENTRY_BLUETOOTH_CONNECTING = 7,
// Password is used because no eligible phones found.
PASSWORD_ENTRY_NO_PHONE = 8,
// Password is used because phone could not be authenticated.
PASSWORD_ENTRY_PHONE_NOT_AUTHENTICATED = 9,
// Password is used because phone is locked.
PASSWORD_ENTRY_PHONE_LOCKED = 10,
// Password is used because phone does not have lock screen.
PASSWORD_ENTRY_PHONE_NOT_LOCKABLE = 11,
// Password is used because phone is not close enough (roughly, at least 30
// feet away).
PASSWORD_ENTRY_RSSI_TOO_LOW = 12,
// Password is used because phone is not supported.
PASSWORD_ENTRY_PHONE_UNSUPPORTED = 13,
// Password is used because user types in password. This is unlikely to happen
// though.
PASSWORD_ENTRY_WITH_AUTHENTICATED_PHONE = 14,
// Password is used because phone is not right next to the Chromebook.
PASSWORD_ENTRY_TX_POWER_TOO_HIGH = 15, // DEPRECATED
// Password is used because Easy sign-in failed.
PASSWORD_ENTRY_LOGIN_FAILED = 16,
// Password is used because pairing data is changed for a "new" Chromebook
// (where there was no previous pairing data).
PASSWORD_ENTRY_PAIRING_ADDED = 17,
// Password is used because there is no screenlock state handler. Most likely
// because EasyUnlock is disabled, e.g. Bluetooth adapter not ready.
PASSWORD_ENTRY_NO_SCREENLOCK_STATE_HANDLER = 18,
// Password is used because the phone is (a) locked, and (b) not right next to
// the Chromebook.
PASSWORD_ENTRY_PHONE_LOCKED_AND_RSSI_TOO_LOW = 19,
// Password entry was forced due to the reauth policy (e.g. the user must type
// their password every 20 hours).
PASSWORD_ENTRY_FORCED_REAUTH = 20,
// Password entry was forced because sign-in with Smart Lock is disabled.
PASSWORD_ENTRY_LOGIN_DISABLED = 21,
EASY_UNLOCK_AUTH_EVENT_COUNT // Must be the last entry.
};
void RecordEasyUnlockDidUserManuallyUnlockPhone(bool did_unlock);
void RecordEasyUnlockSigninDuration(const base::TimeDelta& duration);
void RecordEasyUnlockSigninEvent(EasyUnlockAuthEvent event);
void RecordEasyUnlockScreenUnlockDuration(const base::TimeDelta& duration);
void RecordEasyUnlockScreenUnlockEvent(EasyUnlockAuthEvent event);
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_LOGIN_EASY_UNLOCK_EASY_UNLOCK_METRICS_H_