mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1251915 - Ignore handling eTouchCancel events. r=roc
In my original design, I treat eTouchCancel to be like eTouchEnd for ending a caret dragging procedure. However when pointer events is enabled, it sents an eTouchCancel event after the eTouchStart event whose primary usage is to be converted to pointer events, which then cancels the normal caret dragging procedure. Moreover, when pointer events is disabled, we don't get eTouchCancel during a normal caret dragging scenario, so we don't really need to handle eTouchCancel anyway. MozReview-Commit-ID: GKju2Tp0q3Q
This commit is contained in:
parent
bf5c47a427
commit
d1a7279479
@ -577,9 +577,8 @@ AccessibleCaretEventHub::HandleTouchEvent(WidgetTouchEvent* aEvent)
|
||||
break;
|
||||
|
||||
case eTouchCancel:
|
||||
AC_LOGV("Before eTouchCancel, state: %s", mState->Name());
|
||||
rv = mState->OnRelease(this);
|
||||
AC_LOGV("After eTouchCancel, state: %s, consume: %d", mState->Name(), rv);
|
||||
AC_LOGV("Got eTouchCancel, state: %s", mState->Name());
|
||||
// Do nothing since we don't really care eTouchCancel anyway.
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -168,7 +168,7 @@ public:
|
||||
return Move(event);
|
||||
}
|
||||
|
||||
static UniquePtr<WidgetEvent> CreateTouchPressEvent(nscoord aX, nscoord aY)
|
||||
static UniquePtr<WidgetEvent> CreateTouchStartEvent(nscoord aX, nscoord aY)
|
||||
{
|
||||
return CreateTouchEvent(eTouchStart, aX, aY);
|
||||
}
|
||||
@ -178,11 +178,16 @@ public:
|
||||
return CreateTouchEvent(eTouchMove, aX, aY);
|
||||
}
|
||||
|
||||
static UniquePtr<WidgetEvent> CreateTouchReleaseEvent(nscoord aX, nscoord aY)
|
||||
static UniquePtr<WidgetEvent> CreateTouchEndEvent(nscoord aX, nscoord aY)
|
||||
{
|
||||
return CreateTouchEvent(eTouchEnd, aX, aY);
|
||||
}
|
||||
|
||||
static UniquePtr<WidgetEvent> CreateTouchCancelEvent(nscoord aX, nscoord aY)
|
||||
{
|
||||
return CreateTouchEvent(eTouchCancel, aX, aY);
|
||||
}
|
||||
|
||||
static UniquePtr<WidgetEvent> CreateWheelEvent(EventMessage aMessage)
|
||||
{
|
||||
auto event = MakeUnique<WidgetWheelEvent>(true, aMessage, nullptr);
|
||||
@ -252,7 +257,7 @@ TEST_F(AccessibleCaretEventHubTester, TestMousePressReleaseOnNoCaret)
|
||||
|
||||
TEST_F(AccessibleCaretEventHubTester, TestTouchPressReleaseOnNoCaret)
|
||||
{
|
||||
TestPressReleaseOnNoCaret(CreateTouchPressEvent, CreateTouchReleaseEvent);
|
||||
TestPressReleaseOnNoCaret(CreateTouchStartEvent, CreateTouchEndEvent);
|
||||
}
|
||||
|
||||
template <typename PressEventCreator, typename ReleaseEventCreator>
|
||||
@ -284,7 +289,7 @@ TEST_F(AccessibleCaretEventHubTester, TestMousePressReleaseOnCaret)
|
||||
|
||||
TEST_F(AccessibleCaretEventHubTester, TestTouchPressReleaseOnCaret)
|
||||
{
|
||||
TestPressReleaseOnCaret(CreateTouchPressEvent, CreateTouchReleaseEvent);
|
||||
TestPressReleaseOnCaret(CreateTouchStartEvent, CreateTouchEndEvent);
|
||||
}
|
||||
|
||||
template <typename PressEventCreator, typename ReleaseEventCreator>
|
||||
@ -327,8 +332,8 @@ TEST_F(AccessibleCaretEventHubTester, TestMousePressMoveReleaseOnNoCaret)
|
||||
|
||||
TEST_F(AccessibleCaretEventHubTester, TestTouchPressMoveReleaseOnNoCaret)
|
||||
{
|
||||
TestPressMoveReleaseOnNoCaret(CreateTouchPressEvent, CreateTouchMoveEvent,
|
||||
CreateTouchReleaseEvent);
|
||||
TestPressMoveReleaseOnNoCaret(CreateTouchStartEvent, CreateTouchMoveEvent,
|
||||
CreateTouchEndEvent);
|
||||
}
|
||||
|
||||
template <typename PressEventCreator, typename MoveEventCreator,
|
||||
@ -381,8 +386,8 @@ TEST_F(AccessibleCaretEventHubTester, TestMousePressMoveReleaseOnCaret)
|
||||
|
||||
TEST_F(AccessibleCaretEventHubTester, TestTouchPressMoveReleaseOnCaret)
|
||||
{
|
||||
TestPressMoveReleaseOnCaret(CreateTouchPressEvent, CreateTouchMoveEvent,
|
||||
CreateTouchReleaseEvent);
|
||||
TestPressMoveReleaseOnCaret(CreateTouchStartEvent, CreateTouchMoveEvent,
|
||||
CreateTouchEndEvent);
|
||||
}
|
||||
|
||||
template <typename PressEventCreator, typename MoveEventCreator,
|
||||
@ -439,6 +444,65 @@ AccessibleCaretEventHubTester::TestPressMoveReleaseOnCaret(
|
||||
nsEventStatus_eConsumeNoDefault);
|
||||
}
|
||||
|
||||
TEST_F(AccessibleCaretEventHubTester,
|
||||
TestTouchStartMoveEndOnCaretWithTouchCancelIgnored)
|
||||
{
|
||||
nscoord x0 = 0, y0 = 0;
|
||||
nscoord x1 = 100, y1 = 100;
|
||||
nscoord x2 = 300, y2 = 300;
|
||||
nscoord x3 = 400, y3 = 400;
|
||||
|
||||
{
|
||||
InSequence dummy;
|
||||
|
||||
EXPECT_CALL(*mHub->GetMockAccessibleCaretManager(), PressCaret(_))
|
||||
.WillOnce(Return(NS_OK));
|
||||
|
||||
EXPECT_CALL(*mHub->GetMockAccessibleCaretManager(), DragCaret(_))
|
||||
.WillOnce(Return(NS_OK));
|
||||
|
||||
EXPECT_CALL(*mHub->GetMockAccessibleCaretManager(), ReleaseCaret())
|
||||
.WillOnce(Return(NS_OK));
|
||||
}
|
||||
|
||||
// All the eTouchCancel events should be ignored in this test.
|
||||
|
||||
HandleEventAndCheckState(CreateTouchStartEvent(x0, y0),
|
||||
MockAccessibleCaretEventHub::PressCaretState(),
|
||||
nsEventStatus_eConsumeNoDefault);
|
||||
|
||||
HandleEventAndCheckState(CreateTouchCancelEvent(x0, y0),
|
||||
MockAccessibleCaretEventHub::PressCaretState(),
|
||||
nsEventStatus_eIgnore);
|
||||
|
||||
// A small move with the distance between (x0, y0) and (x1, y1) below the
|
||||
// tolerance value.
|
||||
HandleEventAndCheckState(CreateTouchMoveEvent(x1, y1),
|
||||
MockAccessibleCaretEventHub::PressCaretState(),
|
||||
nsEventStatus_eConsumeNoDefault);
|
||||
|
||||
HandleEventAndCheckState(CreateTouchCancelEvent(x1, y1),
|
||||
MockAccessibleCaretEventHub::PressCaretState(),
|
||||
nsEventStatus_eIgnore);
|
||||
|
||||
// A large move forms a valid drag since the distance between (x0, y0) and
|
||||
// (x2, y2) is above the tolerance value.
|
||||
HandleEventAndCheckState(CreateTouchMoveEvent(x2, y2),
|
||||
MockAccessibleCaretEventHub::DragCaretState(),
|
||||
nsEventStatus_eConsumeNoDefault);
|
||||
|
||||
HandleEventAndCheckState(CreateTouchCancelEvent(x2, y2),
|
||||
MockAccessibleCaretEventHub::DragCaretState(),
|
||||
nsEventStatus_eIgnore);
|
||||
|
||||
HandleEventAndCheckState(CreateTouchEndEvent(x3, y3),
|
||||
MockAccessibleCaretEventHub::NoActionState(),
|
||||
nsEventStatus_eConsumeNoDefault);
|
||||
|
||||
HandleEventAndCheckState(CreateTouchCancelEvent(x3, y3),
|
||||
MockAccessibleCaretEventHub::NoActionState(),
|
||||
nsEventStatus_eIgnore);}
|
||||
|
||||
TEST_F(AccessibleCaretEventHubTester, TestMouseLongTapWithSelectWordSuccessful)
|
||||
{
|
||||
TestLongTapWithSelectWordSuccessful(CreateMousePressEvent,
|
||||
@ -447,8 +511,8 @@ TEST_F(AccessibleCaretEventHubTester, TestMouseLongTapWithSelectWordSuccessful)
|
||||
|
||||
TEST_F(AccessibleCaretEventHubTester, TestTouchLongTapWithSelectWordSuccessful)
|
||||
{
|
||||
TestLongTapWithSelectWordSuccessful(CreateTouchPressEvent,
|
||||
CreateTouchReleaseEvent);
|
||||
TestLongTapWithSelectWordSuccessful(CreateTouchStartEvent,
|
||||
CreateTouchEndEvent);
|
||||
}
|
||||
|
||||
template <typename PressEventCreator, typename ReleaseEventCreator>
|
||||
@ -531,8 +595,8 @@ TEST_F(AccessibleCaretEventHubTester, TestMouseLongTapWithSelectWordFailed)
|
||||
|
||||
TEST_F(AccessibleCaretEventHubTester, TestTouchLongTapWithSelectWordFailed)
|
||||
{
|
||||
TestLongTapWithSelectWordFailed(CreateTouchPressEvent,
|
||||
CreateTouchReleaseEvent);
|
||||
TestLongTapWithSelectWordFailed(CreateTouchStartEvent,
|
||||
CreateTouchEndEvent);
|
||||
}
|
||||
|
||||
template <typename PressEventCreator, typename ReleaseEventCreator>
|
||||
@ -566,8 +630,8 @@ AccessibleCaretEventHubTester::TestLongTapWithSelectWordFailed(
|
||||
|
||||
TEST_F(AccessibleCaretEventHubTester, TestTouchEventDrivenAsyncPanZoomScroll)
|
||||
{
|
||||
TestEventDrivenAsyncPanZoomScroll(CreateTouchPressEvent, CreateTouchMoveEvent,
|
||||
CreateTouchReleaseEvent);
|
||||
TestEventDrivenAsyncPanZoomScroll(CreateTouchStartEvent, CreateTouchMoveEvent,
|
||||
CreateTouchEndEvent);
|
||||
}
|
||||
|
||||
TEST_F(AccessibleCaretEventHubTester, TestMouseEventDrivenAsyncPanZoomScroll)
|
||||
|
Loading…
Reference in New Issue
Block a user