Loading libs/input/tests/Android.bp +15 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,21 @@ cc_test { srcs: [ "PointerController_test.cpp", ], sanitize: { hwaddress: true, undefined: true, all_undefined: true, diag: { undefined: true, }, }, target: { host: { sanitize: { address: true, }, }, }, shared_libs: [ "libandroid_runtime", "libinputservice", Loading libs/input/tests/PointerController_test.cpp +26 −20 Original line number Diff line number Diff line Loading @@ -148,6 +148,25 @@ void MockPointerControllerPolicyInterface::onPointerDisplayIdChanged(int32_t dis latestPointerDisplayId = displayId; } class TestPointerController : public PointerController { public: TestPointerController(sp<android::gui::WindowInfosListener>& registeredListener, sp<PointerControllerPolicyInterface> policy, const sp<Looper>& looper, SpriteController& spriteController) : PointerController( policy, looper, spriteController, /*enabled=*/true, [®isteredListener](const sp<android::gui::WindowInfosListener>& listener) { // Register listener registeredListener = listener; }, [®isteredListener](const sp<android::gui::WindowInfosListener>& listener) { // Unregister listener if (registeredListener == listener) registeredListener = nullptr; }) {} ~TestPointerController() override {} }; class PointerControllerTest : public Test { protected: PointerControllerTest(); Loading @@ -159,6 +178,7 @@ protected: sp<MockPointerControllerPolicyInterface> mPolicy; std::unique_ptr<MockSpriteController> mSpriteController; std::shared_ptr<PointerController> mPointerController; sp<android::gui::WindowInfosListener> mRegisteredListener; private: void loopThread(); Loading @@ -181,11 +201,12 @@ PointerControllerTest::PointerControllerTest() : mPointerSprite(new NiceMock<Moc EXPECT_CALL(*mSpriteController, createSprite()) .WillOnce(Return(mPointerSprite)); mPointerController = PointerController::create(mPolicy, mLooper, *mSpriteController, /*enabled=*/true); mPointerController = std::make_unique<TestPointerController>(mRegisteredListener, mPolicy, mLooper, *mSpriteController); } PointerControllerTest::~PointerControllerTest() { mPointerController.reset(); mRunning.store(false, std::memory_order_relaxed); mThread.join(); } Loading Loading @@ -316,31 +337,16 @@ TEST_F(PointerControllerTest, notifiesPolicyWhenPointerDisplayChanges) { class PointerControllerWindowInfoListenerTest : public Test {}; class TestPointerController : public PointerController { public: TestPointerController(sp<android::gui::WindowInfosListener>& registeredListener, const sp<Looper>& looper, SpriteController& spriteController) : PointerController( new MockPointerControllerPolicyInterface(), looper, spriteController, /*enabled=*/true, [®isteredListener](const sp<android::gui::WindowInfosListener>& listener) { // Register listener registeredListener = listener; }, [®isteredListener](const sp<android::gui::WindowInfosListener>& listener) { // Unregister listener if (registeredListener == listener) registeredListener = nullptr; }) {} }; TEST_F(PointerControllerWindowInfoListenerTest, doesNotCrashIfListenerCalledAfterPointerControllerDestroyed) { sp<Looper> looper = new Looper(false); auto spriteController = NiceMock<MockSpriteController>(looper); sp<android::gui::WindowInfosListener> registeredListener; sp<android::gui::WindowInfosListener> localListenerCopy; sp<MockPointerControllerPolicyInterface> policy = new MockPointerControllerPolicyInterface(); { TestPointerController pointerController(registeredListener, looper, spriteController); TestPointerController pointerController(registeredListener, policy, looper, spriteController); ASSERT_NE(nullptr, registeredListener) << "WindowInfosListener was not registered"; localListenerCopy = registeredListener; } Loading Loading
libs/input/tests/Android.bp +15 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,21 @@ cc_test { srcs: [ "PointerController_test.cpp", ], sanitize: { hwaddress: true, undefined: true, all_undefined: true, diag: { undefined: true, }, }, target: { host: { sanitize: { address: true, }, }, }, shared_libs: [ "libandroid_runtime", "libinputservice", Loading
libs/input/tests/PointerController_test.cpp +26 −20 Original line number Diff line number Diff line Loading @@ -148,6 +148,25 @@ void MockPointerControllerPolicyInterface::onPointerDisplayIdChanged(int32_t dis latestPointerDisplayId = displayId; } class TestPointerController : public PointerController { public: TestPointerController(sp<android::gui::WindowInfosListener>& registeredListener, sp<PointerControllerPolicyInterface> policy, const sp<Looper>& looper, SpriteController& spriteController) : PointerController( policy, looper, spriteController, /*enabled=*/true, [®isteredListener](const sp<android::gui::WindowInfosListener>& listener) { // Register listener registeredListener = listener; }, [®isteredListener](const sp<android::gui::WindowInfosListener>& listener) { // Unregister listener if (registeredListener == listener) registeredListener = nullptr; }) {} ~TestPointerController() override {} }; class PointerControllerTest : public Test { protected: PointerControllerTest(); Loading @@ -159,6 +178,7 @@ protected: sp<MockPointerControllerPolicyInterface> mPolicy; std::unique_ptr<MockSpriteController> mSpriteController; std::shared_ptr<PointerController> mPointerController; sp<android::gui::WindowInfosListener> mRegisteredListener; private: void loopThread(); Loading @@ -181,11 +201,12 @@ PointerControllerTest::PointerControllerTest() : mPointerSprite(new NiceMock<Moc EXPECT_CALL(*mSpriteController, createSprite()) .WillOnce(Return(mPointerSprite)); mPointerController = PointerController::create(mPolicy, mLooper, *mSpriteController, /*enabled=*/true); mPointerController = std::make_unique<TestPointerController>(mRegisteredListener, mPolicy, mLooper, *mSpriteController); } PointerControllerTest::~PointerControllerTest() { mPointerController.reset(); mRunning.store(false, std::memory_order_relaxed); mThread.join(); } Loading Loading @@ -316,31 +337,16 @@ TEST_F(PointerControllerTest, notifiesPolicyWhenPointerDisplayChanges) { class PointerControllerWindowInfoListenerTest : public Test {}; class TestPointerController : public PointerController { public: TestPointerController(sp<android::gui::WindowInfosListener>& registeredListener, const sp<Looper>& looper, SpriteController& spriteController) : PointerController( new MockPointerControllerPolicyInterface(), looper, spriteController, /*enabled=*/true, [®isteredListener](const sp<android::gui::WindowInfosListener>& listener) { // Register listener registeredListener = listener; }, [®isteredListener](const sp<android::gui::WindowInfosListener>& listener) { // Unregister listener if (registeredListener == listener) registeredListener = nullptr; }) {} }; TEST_F(PointerControllerWindowInfoListenerTest, doesNotCrashIfListenerCalledAfterPointerControllerDestroyed) { sp<Looper> looper = new Looper(false); auto spriteController = NiceMock<MockSpriteController>(looper); sp<android::gui::WindowInfosListener> registeredListener; sp<android::gui::WindowInfosListener> localListenerCopy; sp<MockPointerControllerPolicyInterface> policy = new MockPointerControllerPolicyInterface(); { TestPointerController pointerController(registeredListener, looper, spriteController); TestPointerController pointerController(registeredListener, policy, looper, spriteController); ASSERT_NE(nullptr, registeredListener) << "WindowInfosListener was not registered"; localListenerCopy = registeredListener; } Loading