summaryrefslogtreecommitdiff
path: root/libs/input
AgeCommit message (Collapse)Author
2025-03-24Merge "Delete deprecate deprecate_uiautomation_input_injection flag" into main Antonio Kantek
2025-03-21Delete deprecate deprecate_uiautomation_input_injection flag Antonio Kantek
This flag was not used during the deprecation of the UiAutomation test APIs in changelist https://googleplex-android-review.googlesource.com/q/I205f26ce9d33f5f304093ef18177d818fc3422c5. Test: m Flag: EXEMPT deleting unused feature flag Bug: 277261245 Change-Id: Ib6f075ba86151256dbfa9d12a67093c9af2a2ec0
2025-03-21Add a unit test for receiving 'finish' message after channel close Siarhei Vishniakou
After the input channel is closed, the messages that were previously written to the fd should still be readable. However, in some cases, if the fd is closed with data in the fd's buffer, the data may be discarded. This is confirmed by the attached unit test. Add an explanation of this to the InputChannel implementation, so that this behaviour is documented. Bug: 376713684 Test: TEST=libinput_tests; m $TEST && adb sync data && adb shell -t /data/nativetest64/$TEST/$TEST --gtest_filter="*ReceiveAfterClose*" --gtest_repeat=100000 --gtest_break_on_failure Test: TEST=libinput_tests; m $TEST && $ANDROID_HOST_OUT/nativetest64/$TEST/$TEST --gtest_filter="*ReceiveAfterClose*" --gtest_repeat=100000 --gtest_break_on_failure Flag: TEST_ONLY Change-Id: I67a6a6432c4756283c8f2cca3c01210a3bcdb42e
2025-03-19InputDispatcher: Provide a way to transfer the entire gesture Siarhei Vishniakou
In this CL, we modify the behaviour of 'transferTouchGesture' to also allow the caller to request that the entire gesture is transferred to the destination window. Suppose the original window receives ACTION_DOWN and calls transferTouchGesture to the destination window. Before this CL, the subsequent pointers would always be routed to the original window. In this CL, the caller of 'transferTouchGesture' can choose to transfer the 'entire gesture', meaning that subsequent pointers from the same gesture that land in the original window would automatically be sent to the destination window. Bug: 397979572 Test: TEST=inputflinger_tests; m $TEST && $ANDROID_HOST_OUT/nativetest64/$TEST/$TEST Flag: com.android.input.flags.allow_transfer_of_entire_gesture Change-Id: I760ddb8aa8f329d0b21788e6d6e83c802015ee1d
2025-03-11Add display topology to input dump Arpit Singh
Add display topology to dump in Dispatcher and Choreographer for debugging. Bug: 245989146 Test: dumpsys input Flag: EXEMPT log only update Change-Id: I8e9eb4d5c3c88e1cb6aeaa35db07006b003aad93
2025-03-11Merge "[CD Cursor] Add DisplayTopologyValidator" into main Arpit Singh
2025-03-10[CD Cursor] Add DisplayTopologyValidator Arpit Singh
Add a DisplayTopologyValidator to verify assumptions made in the PointerChoreographer and InputDispatcher, some sanity checks on the topology graph to flag issues realted to topology for debugging. The validator will be used in the InputManager to validated and discard invalid topology updates. Test: atest inputflinger_tests Bug: 401219231 Flag: com.android.input.flags.enable_display_topology_validation Change-Id: I624bc32b73144cc047f317ef889f7f07cc1c3dfc
2025-03-10Merge "Add dev option override flag to connected display cursor flag" into main Treehugger Robot
2025-03-10Add dev option override flag to connected display cursor flag Arpit Singh
Adding the dev option flag that guards the dev option UI before checking the override value. We will fall back to connected displays cursor flag if dev option override is not available. Test: manual and presubmit Bug: 401213103 Flag: EXEMPT only changes the flagging logic Change-Id: Ib9fb9a66deaf1d58b36218039d1854e287be7ce5
2025-03-07Merge "Remove remove_input_channel_from_windowstate flag" into main Treehugger Robot
2025-03-06Remove remove_input_channel_from_windowstate flag Siarhei Vishniakou
This flag has been rolled out completely a while back. Bug: 323450804 Flag: EXEMPT removing remove_input_channel_from_windowstate Test: none Change-Id: I724fea0a0fed846710b5dc119c9513e10e71112d
2025-03-06Merge "Cleanup hide_pointer_indicators_for_secure_windows flag" into main Treehugger Robot
2025-03-06Merge "Cleanup touchpad_typing_palm_rejection flag" into main Treehugger Robot
2025-03-06Cleanup hide_pointer_indicators_for_secure_windows flag Arpit Singh
Flag is in nextfood so we can remove it. Bug: 325252005 Test: atest --host inputflinger_tests Flag: EXEMPT removing hide_pointer_indicators_for_secure_windows Change-Id: I8b1695d19e30f3bf15eb316edd99c0a61412df78
2025-03-06Cleanup touchpad_typing_palm_rejection flag Arpit Singh
Flag is in nextfood so we can remove it. Bug: 301055381 Test: atest --host inputflinger_tests Flag: EXEMPT removing enable_touchpad_typing_palm_rejection Change-Id: I70afd61eb5f38719c928c002cc24ed99218ce6b5
2025-03-04Merge "CapturedTouchpadEventConverter: clean up relative axes flag" into main Treehugger Robot
2025-03-03CapturedTouchpadEventConverter: clean up relative axes flag Harry Cutts
This is now launched, so we can safely remove it. Bug: 374937381 Test: atest --host inputflinger_tests:CapturedTouchpadEventConverterTest Test: atest CtsHardwareTestCases:android.hardware.input.cts.tests.SonyDualshock4BluetoothTest Flag: EXEMPT removing com.android.input.flags.include_relative_axis_values_for_captured_touchpads Change-Id: I98912368cab71c8bb8691228e1e8dcab4e491634
2025-02-25[CD Cursor] Apply selection logic to change cursor displayId nergi
In connected displays scenario, this tracks the latest display the cursor is at, within the DisplayTopology. By default, this will be set to topology primary display, and updated when mouse crossed to another display. Note: If associatedDisplay is in different topology, mouse will simply be on the associatedDisplay, keeping existing behavior Doc: go/connected-displays-cursor-behavior Bug: 396568321 Test: atest inputflinger_tests Test: atest InputTests Test: atest CtsInputTestCases Flag: com.android.input.flags.connected_displays_associated_display_cursor_bugfix Change-Id: I6a68d9cd5a4de06896e0e29104c25b8a4493b852
2025-02-21Merge "InputVerifier: add panic message for source conversion" into main Harry Cutts
2025-02-20Create a bugfix flag to modify associatedDisplay cursor in CD nergi
Bug: 396568321 Test: None Flag: EXEMPT adding new flag Change-Id: I640ea9095246f932e8367907c42634b3941adec5
2025-02-20InputVerifier: add panic message for source conversion Harry Cutts
We've seen a crash due to this failing, without many details on why, so add an explicit check for the conversion with a more descriptive message for next time. Bug: 397706159 Test: modify InputVerifier.cpp to pass an invalid source, enable verification, and check that any input event causes a panic with the appropriate message: $ adb shell 'stop && setprop log.tag.InputDispatcherVerifyEvents DEBUG && start' Flag: EXEMPT log only update Change-Id: I0aa07cd14c8afdcd204daa0fb4660466e6c0be42
2025-02-18Merge "HardwareStateConverter: clean up palm reporting flag" into main Treehugger Robot
2025-02-18HardwareStateConverter: clean up palm reporting flag Harry Cutts
This rolled out almost a year ago. Bug: 245989146 Test: $ atest --host inputflinger_tests Flag: EXEMPT removing com.android.input.flags.report_palms_to_gestures_library Change-Id: I7ab0381d20405fed14ac97453a59dfd7af3513c9
2025-02-17Move utility functions related to isFromSource to Input.h Arpit Singh
Moving following function to a common file to avoid duplication. 1. isStylusHoverEvent 2. isFromMouse 3. isFromTouchpad 4. isFromDrawingTablet 5. isHoverAction 6. isMouseOrTouchpad Test: atest inputflinger_tests Bug: 245989146 Flag: EXEMPT refactor Change-Id: I9538646f126e792897c525e7e698f6acde4aaa22
2025-02-14[CD Cursor] Devopts override for connected displays flag Arpit Singh
Add and use a sysprop based override for connected displays cursor flag. Override is expected to require an restart on change. Allowing us to cache its value. Test: atest inputflinger_tests Bug: 362719483 Flag: com.android.input.flags.connected_displays_cursor Change-Id: I8634e61eb57c82b2b4c904239a4d407ce69f97d8
2025-02-11Merge "InputReader: prevent merging pointer sub-devices" into main Kenneth Albanowski
2025-02-11InputReader: prevent merging pointer sub-devices Kenneth Albanowski
If input devices have the same identifier, they are usually merged, on the assumption that they are separate sub-devices that likely got split out by the kernel. This stops the merging of multiple pointer-like input devices, as InputReader is not designed to cope with these properly. This situation is commonly seen with integrated touchscreen/stylus ICs that report touchscreen and stylus input events via distinct HID collections/reports on a single HID device. Bug: 389689566 Test: Target booted, confirmed unmerged devices in InputReaderState via dumpsys inputflinger Test: atest inputflinger_tests # on target, with flag enabled & disabled Test: TEST=inputflinger_tests; m $TEST && $ANDROID_HOST_OUT/nativetest64/$TEST/$TEST Flag: com.android.input.flags.prevent_merging_input_pointer_devices Change-Id: Iac36f29ed5aa1bf915bf9ad665b237378e967a4f
2025-02-07InputVerifier: make action_button a field of the action enum Harry Cutts
Only MotionEvents with a button press or release action should have an action button. Let's express this in the data structure by making action_button a field of the relevant MotionActions, instead of a separate field of MotionEvent that could potentially be set on non-button actions. This involves moving the translation from input_bindgen constants to MotionAction into lib.rs, which I think makes more sense (as it keeps the language interfacing code contained there), but also means we have to move one piece of validation there too. Bug: 245989146 Test: $ atest --host libinput_rust_test Test: enable the verifier, check everything works as usual Flag: EXEMPT refactor Change-Id: Ida17429b0e12247b63a3ae44bab63e421d9fff0f
2025-02-07InputVerifier: use `let ... else` when converting flags and buttons Harry Cutts
Bug: 245989146 Test: enable the verifier, check everything works as usual Flag: EXEMPT refactor Change-Id: I3debc83da82168f9c5a7e3eccb2f8dc6edbabaed
2025-02-07InputVerifier: put parameters into a struct Harry Cutts
This makes it clearer which parameter is which when calling, and also allows us to make the tests much more succinct by using struct update syntax. Bug: 245989146 Test: $ atest --host libinput_rust_test Flag: EXEMPT refactor Change-Id: If68332d652186b7283435cbc41af78bf12aa5b94
2025-02-05InputVerifier: verify button events and states (attempt 2) Harry Cutts
Check the following things: * BUTTON_PRESS and _RELEASE actions have a single, valid action button * No redundant BUTTON_PRESS or _RELEASE actions (i.e. for buttons that are already pressed or released) * Button state remains consistent throughout the stream, i.e.: * Buttons are only added to the state by BUTTON_PRESS (though DOWN events can have "pending" buttons on them) * Buttons are only removed from the state by BUTTON_RELEASE * When a DOWN event has pending buttons in its state, it is immediately followed by a BUTTON_PRESS for each one We could also verify that press and release events for primary, secondary, and tertiary buttons are accompanied by down and up events. However, I couldn't find any documentation that states which buttons should result in down or up events, so I haven't implemented this for now. This is the second attempt to land this change, due to the original causing test failures. Change I5c259c13d433d3010d2cf9c6fe01e08ba5990ef7 fixes the failures. v2 also adds a separate flag for button state verification, as it is actually used in production to check events injected by assistive technologies, whether or not the flag that I previously thought was guarding it is enabled. Test: connect a mouse and a touchpad, enable the verifier, play around with the buttons, and check that any issues found by the verifier appear to be legitimate. (I found b/391298464 , and checked that the verifier caught a button problem with a partial fix to b/372571823 .) Test: atest --host libinput_rust_tests Test: atest --host frameworks/native/libs/input/tests/InputVerifier_test.cpp Test: atest --host \ frameworks/native/services/inputflinger/tests/InputDispatcher_test.cpp Bug: 392870542 Flag: com.android.input.flags.enable_button_state_verification Change-Id: I46f489b26df8785563e41e58135b6b5de4ff62a2
2025-02-03input: run bpfmt -w -s on all Android.bp files Harry Cutts
The bpfmt presubmit lint check has been reporting formatting issues on some recent CLs, so just make all the suggested formatting fixes in one CL to get them out of the way. This CL was made by running the following command: $ prebuilts/build-tools/linux-x86/bin/bpfmt -w -s \ frameworks/native/libs/input/**Android.bp frameworks/native/services/inputflinger/**Android.bp The only manual change was in services/inputflinger/Android.bp, where I removed the comments from the checkinput target's required list, since they don't make sense if it's just going to be alphabetically sorted. Bug: 245989146 Change-Id: Ie1d38c8ac1cab1c2011176f8d566cc922305d0b5 Test: Treehugger Flag: EXEMPT refactor
2025-01-30Merge "inputflinger: Remove anonymous namespaces from headers" into main Prabir Pradhan
2025-01-29Merge "Move external MultiTouch test into InputMapperUnitTest" into main Treehugger Robot
2025-01-29Merge "InputVerifier: use named parameters to format! where possible" into main Treehugger Robot
2025-01-29Merge "Tracks whether an injected MotionEvent came from an accessibility ↵ Daniel Norman
tool." into main
2025-01-29inputflinger: Remove anonymous namespaces from headers Prabir Pradhan
Use an internal namespace instead of anonymous ones in headers to avoid potential ODR violations, as per C++ guidelines. Bug: 245989146 Change-Id: I0fbb3da5722738bb22b34591af4797a9fef185d4 Test: Build Flag: TEST_ONLY
2025-01-29Move external MultiTouch test into InputMapperUnitTest Siarhei Vishniakou
This test is broken because it relies on an incorrect ACTION_CANCEL event being generated. Move this test over to the new InputMapperUnitTest infra before fixing it in subsequent CLs. Bug: 378308551 Test: TEST=inputflinger_tests; m $TEST && $ANDROID_HOST_OUT/nativetest64/$TEST/$TEST Flag: TEST_ONLY Change-Id: I016fb66f7fcbe957cd5b6e8ca86513cb8c372cd3
2025-01-29Flag cleanup: enable_input_filter_rust_impl Vaibhav Devmurari
Bug: 294546335 Test: manual Flag: EXEMPT cleanup Change-Id: I9dafa7965f11663f9df4ffb8f636571582c942e3
2025-01-28InputVerifier: use named parameters to format! where possible Harry Cutts
...so long as a call can name all of its parameters, to avoid confusion around which positional parameters go where. Bug: 245989146 Test: m Flag: EXEMPT refactor Change-Id: Ia40aa0dbc51b990a867451f00cbf3b961fc3210f
2025-01-28Merge "Pointer sensitivity: Adjust base gain range" into main Michael Checo
2025-01-28Pointer sensitivity: Adjust base gain range Michael Checo
This CL updates the `calculateBaseGain` function to use a base gain range of [1.0, 2.5] instead of [0.5, 1.5]. This change ensures that the pointer movement is more responsive to changes in sensitivity. Bug: b/384552392 Test: Manual Flag: com.android.hardware.input.pointer_acceleration Change-Id: I5db7b1473fd5b6869f02fc4ef7aa1458a0df6f58
2025-01-27Tracks whether an injected MotionEvent came from an accessibility tool. Daniel Norman
This property can be checked by the View to allow sensitive views to ignore gestures injected by non-tool accessibility services. Sensitive views should continue responding to gestures injected by Accessibility Tools. Note: The files in this change do not reference the new flag, but this change is a no-op if the flag is not enabled. See other change in this topic. Bug: 284180538 Flag: android.view.accessibility.prevent_a11y_nontool_from_injecting_into_sensitive_views Test: atest InputDispatcher_test.cpp Test: See other change in topic for tests using this property Change-Id: I40ba79852045aaefe84f7ab87d5e08c42509f1e7
2025-01-24Merge "Revert "InputVerifier: verify button events and states"" into main Priyanka Advani (xWF)
2025-01-24Revert "InputVerifier: verify button events and states" Priyanka Advani (xWF)
This reverts commit fb477b1399b4501acdb2516b6a0a00765dd8aba3. Reason for revert: Droidmonitor created revert due to b/392150793. Will be verifying through ABTD before submission. Change-Id: Ie2c9d9e4271addf5b198e34875ee02082b0132ba
2025-01-24Merge "InputVerifier: verify button events and states" into main Treehugger Robot
2025-01-24Merge "Add Razer and Glorious O2 wireless mice to blocklist" into main Vaibhav Devmurari
2025-01-24Add Razer and Glorious O2 wireless mice to blocklist Vaibhav Devmurari
Bug: 391675407 Test: manually connecting the mice Test: atest --host libinput_rust_test Flag: EXEMPT config change Change-Id: I8b7d2465130fd20fd214b601808c82e2846c12ff
2025-01-23InputVerifier: verify button events and states Harry Cutts
Check the following things: * BUTTON_PRESS and _RELEASE actions have a single, valid action button * No redundant BUTTON_PRESS or _RELEASE actions (i.e. for buttons that are already pressed or released) * Button state remains consistent throughout the stream, i.e.: * Buttons are only added to the state by BUTTON_PRESS (though DOWN events can have "pending" buttons on them) * Buttons are only removed from the state by BUTTON_RELEASE * When a DOWN event has pending buttons in its state, it is immediately followed by a BUTTON_PRESS for each one We could also verify that press and release events for primary, secondary, and tertiary buttons are accompanied by down and up events. However, I couldn't find any documentation that states which buttons should result in down or up events, so I haven't implemented this for now. Test: connect a mouse and a touchpad, enable the verifier, play around with the buttons, and check that any issues found by the verifier appear to be legitimate. (I found b/391298464, and checked that the verifier caught a button problem with a partial fix to b/372571823.) Test: atest --host libinput_rust_tests Test: atest --host frameworks/native/libs/input/tests/InputVerifier_test.cpp Test: atest --host \ frameworks/native/services/inputflinger/tests/InputDispatcher_test.cpp Bug: 372571823 Flag: com.android.input.flags.enable_inbound_event_verification Change-Id: I59b886bfb632f0f26ee58c40f82f447f5ea59b41
2025-01-22Introduce feature flag for UiAutomation inject event test/hidden APIs Antonio Kantek
UiAutomation#injectInputEvent and UiAutomation#injectInputEventToInputFilter hidden/test API should be deprecate in favor of UinputDevice, HidDevice, and InjectInputInProcess for in-process input event injection. Flag: com.android.input.flags.deprecate_uiautomation_input_injection Test: m Bug: 277261245 Change-Id: I4b7aacbb842b2e970df60669ef172a293dc8d04c