// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMEOS_ASH_COMPONENTS_HID_DETECTION_FAKE_HID_DETECTION_MANAGER_H_
#define CHROMEOS_ASH_COMPONENTS_HID_DETECTION_FAKE_HID_DETECTION_MANAGER_H_
#include "base/functional/callback.h"
#include "base/memory/weak_ptr.h"
#include "chromeos/ash/components/hid_detection/hid_detection_manager.h"
namespace ash::hid_detection {
class FakeHidDetectionManager : public HidDetectionManager {
public:
FakeHidDetectionManager();
~FakeHidDetectionManager() override;
// Mocks the HID detection status being updated.
void SetHidStatusTouchscreenDetected(bool touchscreen_detected);
void SetHidStatusPointerMetadata(InputMetadata metadata);
void SetHidStatusKeyboardMetadata(InputMetadata metadata);
void SetPairingState(std::optional<BluetoothHidPairingState> pairing_state);
base::WeakPtr<FakeHidDetectionManager> GetWeakPtr();
bool is_hid_detection_active() const { return is_hid_detection_active_; }
private:
// HidDetectionManager:
void GetIsHidDetectionRequired(
base::OnceCallback<void(bool)> callback) override;
void PerformStartHidDetection() override;
void PerformStopHidDetection() override;
HidDetectionManager::HidDetectionStatus ComputeHidDetectionStatus()
const override;
bool is_hid_detection_active_ = false;
InputMetadata pointer_metadata_;
InputMetadata keyboard_metadata_;
bool touchscreen_detected_ = false;
std::optional<BluetoothHidPairingState> pairing_state_;
base::WeakPtrFactory<FakeHidDetectionManager> weak_ptr_factory_{this};
};
} // namespace ash::hid_detection
#endif // CHROMEOS_ASH_COMPONENTS_HID_DETECTION_FAKE_HID_DETECTION_MANAGER_H_