chromium/ash/system/bluetooth/hid_preserving_controller/hid_preserving_bluetooth_metrics.h

// Copyright 2024 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_SYSTEM_BLUETOOTH_HID_PRESERVING_CONTROLLER_HID_PRESERVING_BLUETOOTH_METRICS_H_
#define ASH_SYSTEM_BLUETOOTH_HID_PRESERVING_CONTROLLER_HID_PRESERVING_BLUETOOTH_METRICS_H_

#include <stddef.h>

#include "ash/ash_export.h"
#include "ash/public/mojom/hid_preserving_bluetooth_state_controller.mojom.h"

namespace ash::bluetooth {

inline constexpr char kPoweredDisableDialogBehavior[] =
    "Bluetooth.ChromeOS.PoweredState.Disable.HidWarningDialogBehavior";
inline constexpr char kUserAction[] =
    "Bluetooth.ChromeOS.DisconnectHidWarningDialog.UserAction";
inline constexpr char kDialogSource[] =
    "Bluetooth.ChromeOS.DisconnectHidWarningDialog.Source";

// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
enum class UserAction { kKeepOn = 0, kTurnOff = 1, kMaxValue = kTurnOff };

// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
enum class DialogSource {
  kOsSettings = 0,
  kQuickSettings = 1,
  kMaxValue = kQuickSettings
};

// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
enum class DisabledBehavior {
  kWarningDialogShown = 0,
  kWarningDialogNotShown = 1,
  kMaxValue = kWarningDialogNotShown
};

ASH_EXPORT void RecordHidPoweredStateDisableBehavior(bool dialog_shown);

ASH_EXPORT void RecordHidWarningUserAction(bool disabled_bluetooth);

ASH_EXPORT void RecordHidWarningDialogSource(
    mojom::HidWarningDialogSource dialog_source);

}  // namespace ash::bluetooth

#endif  // ASH_SYSTEM_BLUETOOTH_HID_PRESERVING_CONTROLLER_HID_PRESERVING_BLUETOOTH_METRICS_H_