diff options
-rw-r--r-- | services/inputflinger/reader/include/EventHub.h | 2 | ||||
-rw-r--r-- | services/inputflinger/tests/fuzzers/MapperHelpers.h | 30 |
2 files changed, 31 insertions, 1 deletions
diff --git a/services/inputflinger/reader/include/EventHub.h b/services/inputflinger/reader/include/EventHub.h index 5dce074600..adbfdebfb0 100644 --- a/services/inputflinger/reader/include/EventHub.h +++ b/services/inputflinger/reader/include/EventHub.h @@ -88,6 +88,7 @@ std::ostream& operator<<(std::ostream& out, const std::optional<RawAbsoluteAxisI * If any new classes are added, we need to add them in rust input side too. */ enum class InputDeviceClass : uint32_t { + // LINT.IfChange /* The input device is a keyboard or has buttons. */ KEYBOARD = android::os::IInputConstants::DEVICE_CLASS_KEYBOARD, @@ -144,6 +145,7 @@ enum class InputDeviceClass : uint32_t { /* The input device is external (not built-in). */ EXTERNAL = android::os::IInputConstants::DEVICE_CLASS_EXTERNAL, + // LINT.ThenChange(frameworks/native/services/inputflinger/tests/fuzzers/MapperHelpers.h) }; enum class SysfsClass : uint32_t { diff --git a/services/inputflinger/tests/fuzzers/MapperHelpers.h b/services/inputflinger/tests/fuzzers/MapperHelpers.h index 4d7bcc17a7..bba7389eed 100644 --- a/services/inputflinger/tests/fuzzers/MapperHelpers.h +++ b/services/inputflinger/tests/fuzzers/MapperHelpers.h @@ -34,6 +34,28 @@ constexpr size_t kValidTypes[] = {EV_SW, android::EventHubInterface::DEVICE_ADDED, android::EventHubInterface::DEVICE_REMOVED}; +static const android::InputDeviceClass kInputDeviceClasses[] = { + android::InputDeviceClass::KEYBOARD, + android::InputDeviceClass::ALPHAKEY, + android::InputDeviceClass::TOUCH, + android::InputDeviceClass::CURSOR, + android::InputDeviceClass::TOUCH_MT, + android::InputDeviceClass::DPAD, + android::InputDeviceClass::GAMEPAD, + android::InputDeviceClass::SWITCH, + android::InputDeviceClass::JOYSTICK, + android::InputDeviceClass::VIBRATOR, + android::InputDeviceClass::MIC, + android::InputDeviceClass::EXTERNAL_STYLUS, + android::InputDeviceClass::ROTARY_ENCODER, + android::InputDeviceClass::SENSOR, + android::InputDeviceClass::BATTERY, + android::InputDeviceClass::LIGHT, + android::InputDeviceClass::TOUCHPAD, + android::InputDeviceClass::VIRTUAL, + android::InputDeviceClass::EXTERNAL, +}; + constexpr size_t kValidCodes[] = { SYN_REPORT, ABS_MT_SLOT, @@ -105,7 +127,13 @@ public: void addProperty(std::string key, std::string value) { mFuzzConfig.addProperty(key, value); } ftl::Flags<InputDeviceClass> getDeviceClasses(int32_t deviceId) const override { - return ftl::Flags<InputDeviceClass>(mFdp->ConsumeIntegral<uint32_t>()); + uint32_t flags = 0; + for (auto inputDeviceClass : kInputDeviceClasses) { + if (mFdp->ConsumeBool()) { + flags |= static_cast<uint32_t>(inputDeviceClass); + } + } + return ftl::Flags<InputDeviceClass>(flags); } InputDeviceIdentifier getDeviceIdentifier(int32_t deviceId) const override { return mIdentifier; |