1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
// 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.
#include "chromeos/ash/components/hid_detection/fake_hid_detection_manager.h"
namespace ash::hid_detection {
namespace {
bool IsInputMissing(const HidDetectionManager::InputMetadata& metadata) {
return metadata.state == HidDetectionManager::InputState::kSearching ||
metadata.state ==
HidDetectionManager::InputState::kPairingViaBluetooth;
}
} // namespace
FakeHidDetectionManager::FakeHidDetectionManager() = default;
FakeHidDetectionManager::~FakeHidDetectionManager() = default;
void FakeHidDetectionManager::SetHidStatusTouchscreenDetected(
bool touchscreen_detected) {
touchscreen_detected_ = touchscreen_detected;
if (!is_hid_detection_active_)
return;
NotifyHidDetectionStatusChanged();
}
void FakeHidDetectionManager::SetHidStatusPointerMetadata(
InputMetadata metadata) {
pointer_metadata_ = metadata;
if (!is_hid_detection_active_)
return;
NotifyHidDetectionStatusChanged();
}
void FakeHidDetectionManager::SetHidStatusKeyboardMetadata(
InputMetadata metadata) {
keyboard_metadata_ = metadata;
if (!is_hid_detection_active_)
return;
NotifyHidDetectionStatusChanged();
}
void FakeHidDetectionManager::SetPairingState(
std::optional<BluetoothHidPairingState> pairing_state) {
pairing_state_ = std::move(pairing_state);
NotifyHidDetectionStatusChanged();
}
base::WeakPtr<FakeHidDetectionManager> FakeHidDetectionManager::GetWeakPtr() {
return weak_ptr_factory_.GetWeakPtr();
}
void FakeHidDetectionManager::GetIsHidDetectionRequired(
base::OnceCallback<void(bool)> callback) {
std::move(callback).Run(IsInputMissing(pointer_metadata_) ||
IsInputMissing(keyboard_metadata_));
}
void FakeHidDetectionManager::PerformStartHidDetection() {
DCHECK(!is_hid_detection_active_);
is_hid_detection_active_ = true;
NotifyHidDetectionStatusChanged();
}
void FakeHidDetectionManager::PerformStopHidDetection() {
DCHECK(is_hid_detection_active_);
is_hid_detection_active_ = false;
}
HidDetectionManager::HidDetectionStatus
FakeHidDetectionManager::ComputeHidDetectionStatus() const {
std::optional<BluetoothHidPairingState> pairing_state;
if (pairing_state_.has_value()) {
pairing_state = BluetoothHidPairingState{
pairing_state_.value().code, pairing_state_.value().num_keys_entered};
}
return HidDetectionStatus(pointer_metadata_, keyboard_metadata_,
touchscreen_detected_, std::move(pairing_state));
}
} // namespace ash::hid_detection
|