#ifndef DEVICE_BLUETOOTH_CHROMEOS_BLUETOOTH_UTILS_H_
#define DEVICE_BLUETOOTH_CHROMEOS_BLUETOOTH_UTILS_H_
#include "device/bluetooth/bluetooth_adapter.h"
#include "device/bluetooth/bluetooth_device.h"
#include "device/bluetooth/bluetooth_export.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
namespace base {
class TimeDelta;
}
namespace device {
enum class BluetoothFilterType {
ALL = 0,
KNOWN,
};
enum class DeviceSelectionUISurfaces {
kSettings,
kSystemTray,
};
enum class PoweredStateOperation {
kEnable,
kDisable,
};
enum class UserInitiatedReconnectionUISurfaces {
kSettings,
kSystemTray,
};
enum class ConnectionFailureReason {
kUnknownError = 0,
kSystemError = 1,
kAuthFailed = 2,
kAuthTimeout = 3,
kFailed = 4,
kUnknownConnectionError = 5,
kUnsupportedDevice = 6,
kNotConnectable = 7,
kAuthCanceled = 8,
kAuthRejected = 9,
kInprogress = 10,
kMaxValue = kInprogress
};
enum class BluetoothUiSurface {
kSettingsDeviceListSubpage = 0,
kSettingsDeviceDetailSubpage = 1,
kSettingsPairingDialog = 2,
kBluetoothQuickSettings = 3,
kStandalonePairingDialog = 4,
kConnectionToast = 6,
kDisconnectedToast = 7,
kOobeHidDetection = 8,
kPairedToast = 9,
kMaxValue = kPairedToast
};
enum class ForgetResult {
kFailure = 0,
kSuccess = 1,
kMaxValue = kSuccess,
};
enum class DisconnectResult {
kFailure = 0,
kSuccess = 1,
kMaxValue = kSuccess
};
enum class SetNicknameResult {
kInvalidNicknameFormat = 0,
kDeviceNotFound = 1,
kPrefsUnavailable = 2,
kSuccess = 3,
kMaxValue = kSuccess,
};
enum class BluetoothTransportType {
kUnknown = 0,
kClassic = 1,
kLE = 2,
kDual = 3,
kInvalid = 4,
kMaxValue = kInvalid
};
DEVICE_BLUETOOTH_EXPORT device::BluetoothAdapter::DeviceList
FilterBluetoothDeviceList(const BluetoothAdapter::DeviceList& devices,
BluetoothFilterType filter_type,
int max_devices);
DEVICE_BLUETOOTH_EXPORT bool IsUnsupportedDevice(
const device::BluetoothDevice* device);
DEVICE_BLUETOOTH_EXPORT void RecordPairingResult(
absl::optional<ConnectionFailureReason> failure_reason,
BluetoothTransport transport,
base::TimeDelta duration);
DEVICE_BLUETOOTH_EXPORT void RecordUserInitiatedReconnectionAttemptResult(
absl::optional<ConnectionFailureReason> failure_reason,
UserInitiatedReconnectionUISurfaces surface);
DEVICE_BLUETOOTH_EXPORT void RecordDeviceSelectionDuration(
base::TimeDelta duration,
DeviceSelectionUISurfaces surface,
bool was_paired,
BluetoothTransport transport);
DEVICE_BLUETOOTH_EXPORT void RecordPoweredStateOperationResult(
PoweredStateOperation operation,
bool success);
DEVICE_BLUETOOTH_EXPORT void RecordPoweredState(bool is_powered);
DEVICE_BLUETOOTH_EXPORT void RecordForgetResult(ForgetResult forget_result);
DEVICE_BLUETOOTH_EXPORT void RecordDeviceDisconnect(
BluetoothDeviceType device_type);
DEVICE_BLUETOOTH_EXPORT void RecordUserInitiatedDisconnectResult(
DisconnectResult disconnect_result,
BluetoothTransport transport);
DEVICE_BLUETOOTH_EXPORT void RecordUiSurfaceDisplayed(
BluetoothUiSurface ui_surface);
DEVICE_BLUETOOTH_EXPORT void RecordUserInitiatedReconnectionAttemptDuration(
absl::optional<ConnectionFailureReason> failure_reason,
BluetoothTransport transport,
base::TimeDelta duration);
DEVICE_BLUETOOTH_EXPORT void RecordSetDeviceNickName(SetNicknameResult success);
}
#endif