1717#define LOG_TAG " InputVerifier"
1818
1919#include < android-base/logging.h>
20+ #include < com_android_input_flags.h>
2021#include < input/InputVerifier.h>
2122#include " input_cxx_bridge.rs.h"
2223
@@ -26,25 +27,33 @@ using android::input::RustPointerProperties;
2627
2728using DeviceId = int32_t ;
2829
30+ namespace input_flags = com::android::input::flags;
31+
2932namespace android {
3033
3134// --- InputVerifier ---
3235
3336InputVerifier::InputVerifier (const std::string& name)
34- : mVerifier (android::input::verifier::create(rust::String::lossy(name))){};
37+ : mVerifier (
38+ android::input::verifier::create (rust::String::lossy(name),
39+ input_flags::enable_button_state_verification())) {
40+ }
3541
3642Result<void > InputVerifier::processMovement (DeviceId deviceId, int32_t source, int32_t action,
37- uint32_t pointerCount,
43+ int32_t actionButton, uint32_t pointerCount,
3844 const PointerProperties* pointerProperties,
39- const PointerCoords* pointerCoords, int32_t flags) {
45+ const PointerCoords* pointerCoords, int32_t flags,
46+ int32_t buttonState) {
4047 std::vector<RustPointerProperties> rpp;
4148 for (size_t i = 0 ; i < pointerCount; i++) {
4249 rpp.emplace_back (RustPointerProperties{.id = pointerProperties[i].id });
4350 }
4451 rust::Slice<const RustPointerProperties> properties{rpp.data (), rpp.size ()};
4552 rust::String errorMessage =
4653 android::input::verifier::process_movement (*mVerifier , deviceId, source, action,
47- properties, static_cast <uint32_t >(flags));
54+ actionButton, properties,
55+ static_cast <uint32_t >(flags),
56+ static_cast <uint32_t >(buttonState));
4857 if (errorMessage.empty ()) {
4958 return {};
5059 } else {
0 commit comments