// Copyright 2018 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 CHROMEOS_COMPONENTS_PROXIMITY_AUTH_SMART_LOCK_METRICS_RECORDER_H_ #define CHROMEOS_COMPONENTS_PROXIMITY_AUTH_SMART_LOCK_METRICS_RECORDER_H_ class SmartLockMetricsRecorder { public: SmartLockMetricsRecorder(); ~SmartLockMetricsRecorder(); // This enum is tied directly to a UMA enum defined in // //tools/metrics/histograms/enums.xml, and should always reflect it (do not // change one without changing the other). Entries should be never modified // or deleted. Only additions possible. enum class SmartLockGetRemoteStatusResultFailureReason { kTimedOutBluetoothDisabled = 0, kTimedOutCouldNotEstablishAuthenticatedChannel = 1, kTimedOutDidNotReceiveRemoteStatusUpdate = 2, kUserEnteredPasswordWhileBluetoothDisabled = 3, kUserEnteredPasswordWhileConnecting = 4, kAuthenticatedChannelDropped = 5, kMaxValue = kAuthenticatedChannelDropped }; // This enum is tied directly to a UMA enum defined in // //tools/metrics/histograms/enums.xml, and should always reflect it (do not // change one without changing the other). Entries should be never modified // or deleted. Only additions possible. enum class SmartLockAuthResultFailureReason { kUnlockNotAllowed = 0, kDeprecatedAlreadyAttemptingAuth = 1, kEmptyUserAccount = 2, kInvalidAccoundId = 3, kAuthAttemptCannotStart = 4, kNoPendingOrActiveHost = 5, kAuthenticatedChannelDropped = 6, kFailedToSendUnlockRequest = 7, kFailedToDecryptSignInChallenge = 8, kFailedtoNotifyHostDeviceThatSmartLockWasUsed = 9, kAuthAttemptTimedOut = 10, kUnlockEventSentButNotAttemptingAuth = 11, kUnlockRequestSentButNotAttemptingAuth = 12, kLoginDisplayHostDoesNotExist = 13, kUserControllerSignInFailure = 14, kMaxValue = kUserControllerSignInFailure }; enum class SmartLockAuthMethodChoice { kSmartLock = 0, kOther = 1, kMaxValue = kOther }; enum class SmartLockAuthEventPasswordState { kUnknownState = 0, kNoPairing = 1, kPairingChanged = 2, kUserHardlock = 3, kServiceNotActive = 4, kNoBluetooth = 5, kBluetoothConnecting = 6, kCouldNotConnectToPhone = 7, kNotAuthenticated = 8, kPhoneLocked = 9, kRssiTooLow = 10, kAuthenticatedPhone = 11, kLoginFailed = 12, kPairingAdded = 13, kNoScreenlockStateHandler = 14, kPhoneLockedAndRssiTooLow = 15, kForcedReauth = 16, kLoginWithSmartLockDisabled = 17, kPhoneNotLockable = 18, kPrimaryUserAbsent = 19, kMaxValue = kPrimaryUserAbsent }; static void RecordSmartLockUnlockAuthMethodChoice( SmartLockAuthMethodChoice auth_method_choice); static void RecordSmartLockSignInAuthMethodChoice( SmartLockAuthMethodChoice auth_method_choice); static void RecordAuthResultUnlockSuccess(bool success = true); static void RecordAuthResultUnlockFailure( SmartLockAuthResultFailureReason failure_reason); static void RecordAuthResultSignInSuccess(bool success = true); static void RecordAuthResultSignInFailure( SmartLockAuthResultFailureReason failure_reason); static void RecordAuthMethodChoiceUnlockPasswordState( SmartLockAuthEventPasswordState password_state); static void RecordAuthMethodChoiceSignInPasswordState( SmartLockAuthEventPasswordState password_state); }; #endif // CHROMEOS_COMPONENTS_PROXIMITY_AUTH_SMART_LOCK_METRICS_RECORDER_H_