TEST_F(PointerEventFactoryTest, PenAsTouchAndMouseEvent) { PointerEvent* pointerEvent1 = createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart, true); createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 1, m_mappedIdStart+1, false); createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 2, m_mappedIdStart+2, false); createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart, true); createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 1, m_mappedIdStart+1, false); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 1, m_mappedIdStart+1, false); m_pointerEventFactory.remove(pointerEvent1->pointerId()); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+3, false); createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+3, false); createAndCheckTouchCancel(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+3, false); m_pointerEventFactory.clear(); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 1, m_mappedIdStart, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+1, false); createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 1, m_mappedIdStart, true); createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+1, false); createAndCheckTouchCancel(WebPointerProperties::PointerType::Pen, 1, m_mappedIdStart, true); createAndCheckTouchCancel(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+1, false); }
TEST_F(PointerEventFactoryTest, OutOfRange) { PointerEvent* pointerEvent1 = createAndCheckMouseEvent(WebPointerProperties::PointerType::Unknown, 0, m_mappedIdStart, true); createAndCheckMouseEvent(WebPointerProperties::PointerType::Unknown, 1, m_mappedIdStart+1, false); createAndCheckMouseEvent(WebPointerProperties::PointerType::Unknown, 2, m_mappedIdStart+2, false); createAndCheckTouchEvent(WebPointerProperties::PointerType::Unknown, 0, m_mappedIdStart, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Unknown, 3, m_mappedIdStart+3, false); createAndCheckMouseEvent(WebPointerProperties::PointerType::Unknown, 2, m_mappedIdStart+2, false); createAndCheckTouchCancel(WebPointerProperties::PointerType::Unknown, 3, m_mappedIdStart+3, false); m_pointerEventFactory.remove(pointerEvent1->pointerId()); createAndCheckTouchEvent(WebPointerProperties::PointerType::Unknown, 0, m_mappedIdStart+4, false); createAndCheckTouchEvent(WebPointerProperties::PointerType::Unknown, INT_MAX, m_mappedIdStart+5, false); m_pointerEventFactory.clear(); for (int i = 0; i < 100; ++i) { createAndCheckMouseEvent(WebPointerProperties::PointerType::Touch, i, m_mappedIdStart+i, i == 0); } for (int i = 0; i < 100; ++i) { createAndCheckTouchEvent(WebPointerProperties::PointerType::Mouse, i, m_expectedMouseId, true); } createAndCheckTouchCancel(WebPointerProperties::PointerType::Mouse, 0, m_expectedMouseId, true); }
TEST_F(PointerEventManagerTest, PenAsTouchAndMouseEvent) { RefPtrWillBeRawPtr<PointerEvent> pointerEvent1 = createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart, true); createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 1, m_mappedIdStart+1, false); createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 2, m_mappedIdStart+2, false); createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart, true); createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 1, m_mappedIdStart+1, false); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 1, m_mappedIdStart+1, false); m_pointerEventManager.remove(pointerEvent1); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+3, false); createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+3, false); createAndCheckTouchCancel(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+3, false); m_pointerEventManager.clear(); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 1, m_mappedIdStart, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+1, false); createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 1, m_mappedIdStart, true); createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+1, false); createAndCheckTouchCancel(WebPointerProperties::PointerType::Pen, 1, m_mappedIdStart, true); createAndCheckTouchCancel(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+1, false); }
TEST_F(PointerEventFactoryTest, TouchPointerReleasedAndPressedAgain) { EXPECT_FALSE(m_pointerEventFactory.isActive(m_mappedIdStart)); EXPECT_FALSE(m_pointerEventFactory.isActive(m_mappedIdStart+1)); EXPECT_FALSE(m_pointerEventFactory.isActiveButtonsState(m_mappedIdStart)); EXPECT_FALSE(m_pointerEventFactory.isActiveButtonsState(m_mappedIdStart+1)); PointerEvent* pointerEvent1 = createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true); PointerEvent* pointerEvent2 = createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 1, m_mappedIdStart+1, false); createAndCheckPointerTransitionEvent(pointerEvent1, EventTypeNames::pointerleave); createAndCheckPointerTransitionEvent(pointerEvent2, EventTypeNames::pointerenter); EXPECT_TRUE(m_pointerEventFactory.isActive(m_mappedIdStart)); EXPECT_TRUE(m_pointerEventFactory.isActive(m_mappedIdStart+1)); EXPECT_TRUE(m_pointerEventFactory.isActiveButtonsState(m_mappedIdStart)); EXPECT_TRUE(m_pointerEventFactory.isActiveButtonsState(m_mappedIdStart+1)); m_pointerEventFactory.remove(pointerEvent1->pointerId()); m_pointerEventFactory.remove(pointerEvent2->pointerId()); EXPECT_FALSE(m_pointerEventFactory.isActive(m_mappedIdStart)); EXPECT_FALSE(m_pointerEventFactory.isActive(m_mappedIdStart+1)); EXPECT_FALSE(m_pointerEventFactory.isActiveButtonsState(m_mappedIdStart)); EXPECT_FALSE(m_pointerEventFactory.isActiveButtonsState(m_mappedIdStart+1)); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 1, m_mappedIdStart+2, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart+3, false); m_pointerEventFactory.clear(); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 10, m_mappedIdStart, true); }
TEST_F(PointerEventFactoryTest, TouchPointerPrimaryRemovedWhileAnotherIsThere) { PointerEvent* pointerEvent1 = createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 1, m_mappedIdStart+1, false); m_pointerEventFactory.remove(pointerEvent1->pointerId()); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 2, m_mappedIdStart+2, false); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 1, m_mappedIdStart+1, false); }
TEST_F(PointerEventManagerTest, TouchPointerPrimaryRemovedWhileAnotherIsThere) { RefPtrWillBeRawPtr<PointerEvent> pointerEvent1 = createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 1, m_mappedIdStart+1, false); m_pointerEventManager.remove(pointerEvent1); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 2, m_mappedIdStart+2, false); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 1, m_mappedIdStart+1, false); }
TEST_F(PointerEventManagerTest, TouchPointerReleasedAndPressedAgain) { RefPtrWillBeRawPtr<PointerEvent> pointerEvent1 = createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true); RefPtrWillBeRawPtr<PointerEvent> pointerEvent2 = createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 1, m_mappedIdStart+1, false); m_pointerEventManager.remove(pointerEvent1); m_pointerEventManager.remove(pointerEvent2); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 1, m_mappedIdStart+2, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart+3, false); m_pointerEventManager.clear(); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 10, m_mappedIdStart, true); }
TEST_F(PointerEventFactoryTest, MouseAndTouchAndPen) { createAndCheckMouseEvent(WebPointerProperties::PointerType::Mouse, 0, m_expectedMouseId, true); PointerEvent* pointerEvent1 = createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+1, true); PointerEvent* pointerEvent2 = createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 1, m_mappedIdStart+2, false); PointerEvent* pointerEvent3 = createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 2, m_mappedIdStart+3, false); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+1, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 47213, m_mappedIdStart+4, false); m_pointerEventFactory.remove(pointerEvent1->pointerId()); m_pointerEventFactory.remove(pointerEvent2->pointerId()); m_pointerEventFactory.remove(pointerEvent3->pointerId()); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 100, m_mappedIdStart+5, true); m_pointerEventFactory.clear(); createAndCheckMouseEvent(WebPointerProperties::PointerType::Mouse, 0, m_expectedMouseId, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+1, true); }
TEST_F(PointerEventManagerTest, MouseAndTouchAndPen) { createAndCheckMouseEvent(WebPointerProperties::PointerType::Mouse, 0, m_expectedMouseId, true); RefPtrWillBeRawPtr<PointerEvent> pointerEvent1 = createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+1, true); RefPtrWillBeRawPtr<PointerEvent> pointerEvent2 = createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 1, m_mappedIdStart+2, false); RefPtrWillBeRawPtr<PointerEvent> pointerEvent3 = createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 2, m_mappedIdStart+3, false); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+1, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 47213, m_mappedIdStart+4, false); m_pointerEventManager.remove(pointerEvent1); m_pointerEventManager.remove(pointerEvent2); m_pointerEventManager.remove(pointerEvent3); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 100, m_mappedIdStart+5, true); m_pointerEventManager.clear(); createAndCheckMouseEvent(WebPointerProperties::PointerType::Mouse, 0, m_expectedMouseId, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mappedIdStart+1, true); }
TEST_F(PointerEventFactoryTest, TouchAndDrag) { EXPECT_FALSE(m_pointerEventFactory.isActive(m_mappedIdStart)); EXPECT_FALSE(m_pointerEventFactory.isActiveButtonsState(m_mappedIdStart)); PointerEvent* pointerEvent1 = createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true); PointerEvent* pointerEvent2 = createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true); EXPECT_TRUE(m_pointerEventFactory.isActive(m_mappedIdStart)); EXPECT_TRUE(m_pointerEventFactory.isActiveButtonsState(m_mappedIdStart)); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true, PlatformTouchPoint::TouchReleased); EXPECT_TRUE(m_pointerEventFactory.isActive(m_mappedIdStart)); EXPECT_FALSE(m_pointerEventFactory.isActiveButtonsState(m_mappedIdStart)); m_pointerEventFactory.remove(pointerEvent1->pointerId()); m_pointerEventFactory.remove(pointerEvent2->pointerId()); EXPECT_FALSE(m_pointerEventFactory.isActive(m_mappedIdStart)); EXPECT_FALSE(m_pointerEventFactory.isActiveButtonsState(m_mappedIdStart)); EXPECT_FALSE(m_pointerEventFactory.isActive(m_mappedIdStart+1)); EXPECT_FALSE(m_pointerEventFactory.isActiveButtonsState(m_mappedIdStart+1)); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart+1, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart+1, true); // Remove an obsolete (i.e. already removed) pointer event which should have no effect m_pointerEventFactory.remove(pointerEvent1->pointerId()); EXPECT_TRUE(m_pointerEventFactory.isActive(m_mappedIdStart+1)); EXPECT_TRUE(m_pointerEventFactory.isActiveButtonsState(m_mappedIdStart+1)); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart+1, true); createAndCheckTouchCancel(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart+1, true); EXPECT_TRUE(m_pointerEventFactory.isActive(m_mappedIdStart+1)); EXPECT_FALSE(m_pointerEventFactory.isActiveButtonsState(m_mappedIdStart+1)); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart+1, true); EXPECT_TRUE(m_pointerEventFactory.isActive(m_mappedIdStart+1)); EXPECT_TRUE(m_pointerEventFactory.isActiveButtonsState(m_mappedIdStart+1)); }
TEST_F(PointerEventManagerTest, TouchAndDrag) { RefPtrWillBeRawPtr<PointerEvent> pointerEvent1 = createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true); RefPtrWillBeRawPtr<PointerEvent> pointerEvent2 = createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true); m_pointerEventManager.remove(pointerEvent1); m_pointerEventManager.remove(pointerEvent2); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart+1, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart+1, true); // Remove an obsolete (i.e. already removed) pointer event which should have no effect m_pointerEventManager.remove(pointerEvent1); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart+1, true); createAndCheckTouchCancel(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart+1, true); createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mappedIdStart+1, true); }