Loading libs/input/rust/input.rs +24 −0 Original line number Diff line number Diff line Loading @@ -35,7 +35,20 @@ pub enum SourceClass { bitflags! { /// Source of the input device or input events. #[derive(Debug, PartialEq)] pub struct Source: u32 { // Constants from SourceClass, added here for compatibility reasons /// SourceClass::Button const SourceClassButton = SourceClass::Button as u32; /// SourceClass::Pointer const SourceClassPointer = SourceClass::Pointer as u32; /// SourceClass::Navigation const SourceClassNavigation = SourceClass::Navigation as u32; /// SourceClass::Position const SourceClassPosition = SourceClass::Position as u32; /// SourceClass::Joystick const SourceClassJoystick = SourceClass::Joystick as u32; /// SOURCE_UNKNOWN const Unknown = input_bindgen::AINPUT_SOURCE_UNKNOWN; /// SOURCE_KEYBOARD Loading Loading @@ -190,3 +203,14 @@ impl Source { self.bits() & class_bits == class_bits } } #[cfg(test)] mod tests { use crate::input::SourceClass; use crate::Source; #[test] fn convert_source_class_pointer() { let source = Source::from_bits(input_bindgen::AINPUT_SOURCE_CLASS_POINTER).unwrap(); assert!(source.is_from_class(SourceClass::Pointer)); } } libs/input/tests/InputVerifier_test.cpp +25 −0 Original line number Diff line number Diff line Loading @@ -20,10 +20,35 @@ namespace android { using android::base::Result; TEST(InputVerifierTest, CreationWithInvalidUtfStringDoesNotCrash) { constexpr char bytes[] = {static_cast<char>(0xC0), static_cast<char>(0x80)}; const std::string name(bytes, sizeof(bytes)); InputVerifier verifier(name); } TEST(InputVerifierTest, ProcessSourceClassPointer) { InputVerifier verifier("Verify testOnTouchEventScroll"); std::vector<PointerProperties> properties; properties.push_back({}); properties.back().clear(); properties.back().id = 0; properties.back().toolType = ToolType::UNKNOWN; std::vector<PointerCoords> coords; coords.push_back({}); coords.back().clear(); coords.back().setAxisValue(AMOTION_EVENT_AXIS_X, 75); coords.back().setAxisValue(AMOTION_EVENT_AXIS_Y, 300); const Result<void> result = verifier.processMovement(/*deviceId=*/0, AINPUT_SOURCE_CLASS_POINTER, AMOTION_EVENT_ACTION_DOWN, /*pointerCount=*/properties.size(), properties.data(), coords.data(), /*flags=*/0); ASSERT_TRUE(result.ok()); } } // namespace android Loading
libs/input/rust/input.rs +24 −0 Original line number Diff line number Diff line Loading @@ -35,7 +35,20 @@ pub enum SourceClass { bitflags! { /// Source of the input device or input events. #[derive(Debug, PartialEq)] pub struct Source: u32 { // Constants from SourceClass, added here for compatibility reasons /// SourceClass::Button const SourceClassButton = SourceClass::Button as u32; /// SourceClass::Pointer const SourceClassPointer = SourceClass::Pointer as u32; /// SourceClass::Navigation const SourceClassNavigation = SourceClass::Navigation as u32; /// SourceClass::Position const SourceClassPosition = SourceClass::Position as u32; /// SourceClass::Joystick const SourceClassJoystick = SourceClass::Joystick as u32; /// SOURCE_UNKNOWN const Unknown = input_bindgen::AINPUT_SOURCE_UNKNOWN; /// SOURCE_KEYBOARD Loading Loading @@ -190,3 +203,14 @@ impl Source { self.bits() & class_bits == class_bits } } #[cfg(test)] mod tests { use crate::input::SourceClass; use crate::Source; #[test] fn convert_source_class_pointer() { let source = Source::from_bits(input_bindgen::AINPUT_SOURCE_CLASS_POINTER).unwrap(); assert!(source.is_from_class(SourceClass::Pointer)); } }
libs/input/tests/InputVerifier_test.cpp +25 −0 Original line number Diff line number Diff line Loading @@ -20,10 +20,35 @@ namespace android { using android::base::Result; TEST(InputVerifierTest, CreationWithInvalidUtfStringDoesNotCrash) { constexpr char bytes[] = {static_cast<char>(0xC0), static_cast<char>(0x80)}; const std::string name(bytes, sizeof(bytes)); InputVerifier verifier(name); } TEST(InputVerifierTest, ProcessSourceClassPointer) { InputVerifier verifier("Verify testOnTouchEventScroll"); std::vector<PointerProperties> properties; properties.push_back({}); properties.back().clear(); properties.back().id = 0; properties.back().toolType = ToolType::UNKNOWN; std::vector<PointerCoords> coords; coords.push_back({}); coords.back().clear(); coords.back().setAxisValue(AMOTION_EVENT_AXIS_X, 75); coords.back().setAxisValue(AMOTION_EVENT_AXIS_Y, 300); const Result<void> result = verifier.processMovement(/*deviceId=*/0, AINPUT_SOURCE_CLASS_POINTER, AMOTION_EVENT_ACTION_DOWN, /*pointerCount=*/properties.size(), properties.data(), coords.data(), /*flags=*/0); ASSERT_TRUE(result.ok()); } } // namespace android