diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-06-21 01:20:53 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-06-21 01:20:53 +0000 |
commit | b13e81f82b5f4b701971326c1128ff00ecd3fe0b (patch) | |
tree | ebcc2cb0e13e109bd8a76d02b51ed3ff3e08ca50 | |
parent | 7b5c277ded84c0ad6bff51419dfa4814bd7187c5 (diff) | |
parent | 1db43995a5e1cda14aaa1079bbcd39a1c8ccb8fc (diff) | |
download | native-b13e81f82b5f4b701971326c1128ff00ecd3fe0b.tar.gz |
Snap for 10353861 from 1db43995a5e1cda14aaa1079bbcd39a1c8ccb8fc to udc-release
Change-Id: Ibed4382e52f3abe54ebed7ca1740e28f8dca297f
-rw-r--r-- | services/inputflinger/reader/mapper/TouchInputMapper.cpp | 4 | ||||
-rw-r--r-- | services/inputflinger/tests/InputReader_test.cpp | 34 |
2 files changed, 36 insertions, 2 deletions
diff --git a/services/inputflinger/reader/mapper/TouchInputMapper.cpp b/services/inputflinger/reader/mapper/TouchInputMapper.cpp index f4d50b8fa1..f2b0a4b0a7 100644 --- a/services/inputflinger/reader/mapper/TouchInputMapper.cpp +++ b/services/inputflinger/reader/mapper/TouchInputMapper.cpp @@ -1889,9 +1889,9 @@ std::list<NotifyArgs> TouchInputMapper::consumeRawTouches(nsecs_t when, nsecs_t uint32_t id = mCurrentRawState.rawPointerData.touchingIdBits.firstMarkedBit(); const RawPointerData::Pointer& pointer = mCurrentRawState.rawPointerData.pointerForId(id); // Skip checking whether the pointer is inside the physical frame if the device is in - // unscaled mode. + // unscaled or pointer mode. if (!isPointInsidePhysicalFrame(pointer.x, pointer.y) && - mDeviceMode != DeviceMode::UNSCALED) { + mDeviceMode != DeviceMode::UNSCALED && mDeviceMode != DeviceMode::POINTER) { // If exactly one pointer went down, check for virtual key hit. // Otherwise, we will drop the entire stroke. if (mCurrentRawState.rawPointerData.touchingIdBits.count() == 1) { diff --git a/services/inputflinger/tests/InputReader_test.cpp b/services/inputflinger/tests/InputReader_test.cpp index bfb371f02a..5141acb5b9 100644 --- a/services/inputflinger/tests/InputReader_test.cpp +++ b/services/inputflinger/tests/InputReader_test.cpp @@ -5903,6 +5903,40 @@ TEST_F(SingleTouchInputMapperTest, Process_IgnoresTouchesOutsidePhysicalFrame) { mFakeListener->assertNotifyMotionWasCalled(WithMotionAction(AMOTION_EVENT_ACTION_UP))); } +TEST_F(SingleTouchInputMapperTest, Process_DoesntCheckPhysicalFrameForTouchpads) { + std::shared_ptr<FakePointerController> fakePointerController = + std::make_shared<FakePointerController>(); + mFakePolicy->setPointerController(fakePointerController); + + addConfigurationProperty("touch.deviceType", "pointer"); + prepareAxes(POSITION); + prepareDisplay(ui::ROTATION_0); + auto& mapper = constructAndAddMapper<SingleTouchInputMapper>(); + + // Set a physical frame in the display viewport. + auto viewport = mFakePolicy->getDisplayViewportByType(ViewportType::INTERNAL); + viewport->physicalLeft = 20; + viewport->physicalTop = 600; + viewport->physicalRight = 30; + viewport->physicalBottom = 610; + mFakePolicy->updateViewport(*viewport); + configureDevice(InputReaderConfiguration::Change::DISPLAY_INFO); + + // Start the touch. + process(mapper, ARBITRARY_TIME, READ_TIME, EV_KEY, BTN_TOUCH, 1); + processSync(mapper); + + // Expect all input starting outside the physical frame to result in NotifyMotionArgs being + // produced. + const std::array<Point, 6> outsidePoints = { + {{0, 0}, {19, 605}, {31, 605}, {25, 599}, {25, 611}, {DISPLAY_WIDTH, DISPLAY_HEIGHT}}}; + for (const auto& p : outsidePoints) { + processMove(mapper, toRawX(p.x), toRawY(p.y)); + processSync(mapper); + EXPECT_NO_FATAL_FAILURE(mFakeListener->assertNotifyMotionWasCalled()); + } +} + TEST_F(SingleTouchInputMapperTest, Process_AllAxes_DefaultCalibration) { addConfigurationProperty("touch.deviceType", "touchScreen"); prepareDisplay(ui::ROTATION_0); |