Index: ui/touch_selection/touch_selection_controller_unittest.cc |
diff --git a/ui/touch_selection/touch_selection_controller_unittest.cc b/ui/touch_selection/touch_selection_controller_unittest.cc |
index 4f7d42bd1db9d3fa1680c26f0b5f730816f99c17..6093e1799805c22f4a28c9f63b5e2ca19a3e6730 100644 |
--- a/ui/touch_selection/touch_selection_controller_unittest.cc |
+++ b/ui/touch_selection/touch_selection_controller_unittest.cc |
@@ -145,16 +145,16 @@ class TouchSelectionControllerTest : public testing::Test, |
} |
void OnLongPressEvent() { |
- ASSERT_FALSE(controller().WillHandleLongPressEvent(base::TimeTicks(), |
- kIgnoredPoint)); |
+ controller().HandleLongPressEvent(base::TimeTicks(), |
+ kIgnoredPoint); |
} |
void OnTapEvent() { |
- ASSERT_FALSE(controller().WillHandleTapEvent(kIgnoredPoint, 1)); |
+ controller().HandleTapEvent(kIgnoredPoint, 1); |
} |
void OnDoubleTapEvent() { |
- ASSERT_FALSE(controller().WillHandleTapEvent(kIgnoredPoint, 2)); |
+ controller().HandleTapEvent(kIgnoredPoint, 2); |
} |
void Animate() { |
@@ -240,20 +240,7 @@ TEST_F(TouchSelectionControllerTest, InsertionBasic) { |
gfx::RectF insertion_rect(5, 5, 0, 10); |
bool visible = true; |
- // Insertion handles are not shown until automatic showing is enabled. |
- ChangeInsertion(insertion_rect, visible); |
- EXPECT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_ESTABLISHED)); |
- EXPECT_EQ(gfx::PointF(), GetLastEventStart()); |
OnTapEvent(); |
- |
- // Insertion handles are not shown until the selection region is |
- // marked editable. |
- ChangeInsertion(insertion_rect, visible); |
- EXPECT_THAT(GetAndResetEvents(), IsEmpty()); |
- EXPECT_EQ(gfx::PointF(), GetLastEventStart()); |
- |
- OnTapEvent(); |
- controller().OnSelectionEditable(true); |
ChangeInsertion(insertion_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), ElementsAre(INSERTION_HANDLE_SHOWN)); |
EXPECT_EQ(insertion_rect.bottom_left(), GetLastEventStart()); |
@@ -270,89 +257,11 @@ TEST_F(TouchSelectionControllerTest, InsertionBasic) { |
ClearInsertion(); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_DISSOLVED, INSERTION_HANDLE_CLEARED)); |
-} |
- |
-TEST_F(TouchSelectionControllerTest, InsertionClearedWhenNoLongerEditable) { |
- gfx::RectF insertion_rect(5, 5, 0, 10); |
- bool visible = true; |
- OnTapEvent(); |
- controller().OnSelectionEditable(true); |
- |
- ChangeInsertion(insertion_rect, visible); |
- EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, INSERTION_HANDLE_SHOWN)); |
- EXPECT_EQ(insertion_rect.bottom_left(), GetLastEventStart()); |
- |
- controller().OnSelectionEditable(false); |
- EXPECT_THAT(GetAndResetEvents(), ElementsAre(INSERTION_HANDLE_CLEARED)); |
-} |
- |
-TEST_F(TouchSelectionControllerTest, InsertionEmptyEditable) { |
- gfx::RectF insertion_rect(5, 5, 0, 10); |
- bool visible = true; |
- controller().OnSelectionEditable(true); |
- |
- // Taps on an empty editable region should be ignored |
- OnTapEvent(); |
- controller().OnSelectionEmpty(true); |
- ChangeInsertion(insertion_rect, visible); |
- EXPECT_EQ(gfx::PointF(), GetLastEventStart()); |
- |
- // Once the region becomes non-empty, taps should show the insertion handle. |
- OnTapEvent(); |
- controller().OnSelectionEmpty(false); |
- ChangeInsertion(insertion_rect, visible); |
- EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, INSERTION_HANDLE_SHOWN)); |
- EXPECT_EQ(insertion_rect.bottom_left(), GetLastEventStart()); |
- |
- // Reset the selection. |
- controller().HideAndDisallowShowingAutomatically(); |
- EXPECT_THAT(GetAndResetEvents(), ElementsAre(INSERTION_HANDLE_CLEARED)); |
- |
- // Long-pressing should show the handle even if the editable region is empty. |
- insertion_rect.Offset(2, -2); |
- OnLongPressEvent(); |
- controller().OnSelectionEmpty(true); |
- ChangeInsertion(insertion_rect, visible); |
- EXPECT_THAT(GetAndResetEvents(), ElementsAre(INSERTION_HANDLE_SHOWN)); |
- EXPECT_EQ(insertion_rect.bottom_left(), GetLastEventStart()); |
- |
- // Single Tap on an empty edit field should clear insertion handle. |
- OnTapEvent(); |
- EXPECT_THAT(GetAndResetEvents(), ElementsAre(INSERTION_HANDLE_CLEARED)); |
-} |
- |
-TEST_F(TouchSelectionControllerTest, InsertionAppearsAfterTapFollowingTyping) { |
- gfx::RectF insertion_rect(5, 5, 0, 10); |
- bool visible = true; |
- |
- // Simulate the user tapping an empty text field. |
- OnTapEvent(); |
- controller().OnSelectionEditable(true); |
- controller().OnSelectionEmpty(true); |
- ChangeInsertion(insertion_rect, visible); |
- EXPECT_EQ(gfx::PointF(), GetLastEventStart()); |
- |
- // Simulate the cursor moving while a user is typing. |
- insertion_rect.Offset(10, 0); |
- controller().OnSelectionEmpty(false); |
- ChangeInsertion(insertion_rect, visible); |
- EXPECT_EQ(gfx::PointF(), GetLastEventStart()); |
- |
- // If the user taps the *same* position as the cursor at the end of the text |
- // entry, the handle should appear. |
- OnTapEvent(); |
- ChangeInsertion(insertion_rect, visible); |
- EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, INSERTION_HANDLE_SHOWN)); |
- EXPECT_EQ(insertion_rect.bottom_left(), GetLastEventStart()); |
+ ElementsAre(INSERTION_HANDLE_CLEARED)); |
} |
TEST_F(TouchSelectionControllerTest, InsertionToSelectionTransition) { |
OnLongPressEvent(); |
- controller().OnSelectionEditable(true); |
gfx::RectF start_rect(5, 5, 0, 10); |
gfx::RectF end_rect(50, 5, 0, 10); |
@@ -360,7 +269,7 @@ TEST_F(TouchSelectionControllerTest, InsertionToSelectionTransition) { |
ChangeInsertion(start_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, INSERTION_HANDLE_SHOWN)); |
+ ElementsAre(INSERTION_HANDLE_SHOWN)); |
EXPECT_EQ(start_rect.bottom_left(), GetLastEventStart()); |
ChangeSelection(start_rect, visible, end_rect, visible); |
@@ -373,7 +282,7 @@ TEST_F(TouchSelectionControllerTest, InsertionToSelectionTransition) { |
ElementsAre(SELECTION_HANDLES_CLEARED, INSERTION_HANDLE_SHOWN)); |
EXPECT_EQ(end_rect.bottom_left(), GetLastEventStart()); |
- controller().HideAndDisallowShowingAutomatically(); |
+ ClearInsertion(); |
EXPECT_THAT(GetAndResetEvents(), ElementsAre(INSERTION_HANDLE_CLEARED)); |
OnTapEvent(); |
@@ -385,7 +294,6 @@ TEST_F(TouchSelectionControllerTest, InsertionToSelectionTransition) { |
TEST_F(TouchSelectionControllerTest, InsertionDragged) { |
base::TimeTicks event_time = base::TimeTicks::Now(); |
OnTapEvent(); |
- controller().OnSelectionEditable(true); |
// The touch sequence should not be handled if insertion is not active. |
MockMotionEvent event(MockMotionEvent::ACTION_DOWN, event_time, 0, 0); |
@@ -396,7 +304,7 @@ TEST_F(TouchSelectionControllerTest, InsertionDragged) { |
bool visible = true; |
ChangeInsertion(start_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, INSERTION_HANDLE_SHOWN)); |
+ ElementsAre(INSERTION_HANDLE_SHOWN)); |
EXPECT_EQ(start_rect.bottom_left(), GetLastEventStart()); |
// The touch sequence should be handled only if the drawable reports a hit. |
@@ -439,14 +347,13 @@ TEST_F(TouchSelectionControllerTest, InsertionDragged) { |
TEST_F(TouchSelectionControllerTest, InsertionDeactivatedWhileDragging) { |
base::TimeTicks event_time = base::TimeTicks::Now(); |
OnTapEvent(); |
- controller().OnSelectionEditable(true); |
float line_height = 10.f; |
gfx::RectF start_rect(10, 0, 0, line_height); |
bool visible = true; |
ChangeInsertion(start_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, INSERTION_HANDLE_SHOWN)); |
+ ElementsAre(INSERTION_HANDLE_SHOWN)); |
EXPECT_EQ(start_rect.bottom_left(), GetLastEventStart()); |
// Enable dragging so that the following ACTION_DOWN starts handle dragging. |
@@ -494,14 +401,13 @@ TEST_F(TouchSelectionControllerTest, InsertionDeactivatedWhileDragging) { |
TEST_F(TouchSelectionControllerTest, InsertionTapped) { |
base::TimeTicks event_time = base::TimeTicks::Now(); |
OnTapEvent(); |
- controller().OnSelectionEditable(true); |
SetDraggingEnabled(true); |
gfx::RectF start_rect(10, 0, 0, 10); |
bool visible = true; |
ChangeInsertion(start_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, INSERTION_HANDLE_SHOWN)); |
+ ElementsAre(INSERTION_HANDLE_SHOWN)); |
MockMotionEvent event(MockMotionEvent::ACTION_DOWN, event_time, 0, 0); |
EXPECT_TRUE(controller().WillHandleTouchEvent(event)); |
@@ -517,8 +423,7 @@ TEST_F(TouchSelectionControllerTest, InsertionTapped) { |
OnTapEvent(); |
ChangeInsertion(start_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_DISSOLVED, INSERTION_HANDLE_CLEARED, |
- SELECTION_ESTABLISHED, INSERTION_HANDLE_SHOWN)); |
+ ElementsAre(INSERTION_HANDLE_CLEARED, INSERTION_HANDLE_SHOWN)); |
// No tap should be signalled if the time between DOWN and UP was too long. |
event = MockMotionEvent(MockMotionEvent::ACTION_DOWN, event_time, 0, 0); |
@@ -536,8 +441,7 @@ TEST_F(TouchSelectionControllerTest, InsertionTapped) { |
OnTapEvent(); |
ChangeInsertion(start_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_DISSOLVED, INSERTION_HANDLE_CLEARED, |
- SELECTION_ESTABLISHED, INSERTION_HANDLE_SHOWN)); |
+ ElementsAre(INSERTION_HANDLE_CLEARED, INSERTION_HANDLE_SHOWN)); |
// No tap should be signalled if the drag was too long. |
event = MockMotionEvent(MockMotionEvent::ACTION_DOWN, event_time, 0, 0); |
@@ -554,8 +458,7 @@ TEST_F(TouchSelectionControllerTest, InsertionTapped) { |
OnTapEvent(); |
ChangeInsertion(start_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_DISSOLVED, INSERTION_HANDLE_CLEARED, |
- SELECTION_ESTABLISHED, INSERTION_HANDLE_SHOWN)); |
+ ElementsAre(INSERTION_HANDLE_CLEARED, INSERTION_HANDLE_SHOWN)); |
// No tap should be signalled if the touch sequence is cancelled. |
event = MockMotionEvent(MockMotionEvent::ACTION_DOWN, event_time, 0, 0); |
@@ -569,14 +472,13 @@ TEST_F(TouchSelectionControllerTest, InsertionTapped) { |
TEST_F(TouchSelectionControllerTest, InsertionNotResetByRepeatedTapOrPress) { |
base::TimeTicks event_time = base::TimeTicks::Now(); |
OnTapEvent(); |
- controller().OnSelectionEditable(true); |
SetDraggingEnabled(true); |
gfx::RectF anchor_rect(10, 0, 0, 10); |
bool visible = true; |
ChangeInsertion(anchor_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, INSERTION_HANDLE_SHOWN)); |
+ ElementsAre(INSERTION_HANDLE_SHOWN)); |
EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventStart()); |
// Tapping again shouldn't reset the active insertion point. |
@@ -599,7 +501,6 @@ TEST_F(TouchSelectionControllerTest, InsertionNotResetByRepeatedTapOrPress) { |
// Pressing shouldn't reset the active insertion point. |
OnLongPressEvent(); |
- controller().OnSelectionEmpty(true); |
event = MockMotionEvent(MockMotionEvent::ACTION_DOWN, event_time, 0, 0); |
EXPECT_TRUE(controller().WillHandleTouchEvent(event)); |
EXPECT_THAT(GetAndResetEvents(), ElementsAre(INSERTION_HANDLE_DRAG_STARTED)); |
@@ -617,14 +518,10 @@ TEST_F(TouchSelectionControllerTest, SelectionBasic) { |
gfx::RectF end_rect(50, 5, 0, 10); |
bool visible = true; |
- // Selection events are ignored until automatic showing is enabled. |
- ChangeSelection(start_rect, visible, end_rect, visible); |
- EXPECT_EQ(gfx::PointF(), GetLastEventStart()); |
- |
OnLongPressEvent(); |
ChangeSelection(start_rect, visible, end_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, SELECTION_HANDLES_SHOWN)); |
+ ElementsAre(SELECTION_HANDLES_SHOWN)); |
EXPECT_EQ(start_rect.bottom_left(), GetLastEventStart()); |
start_rect.Offset(1, 0); |
@@ -636,8 +533,7 @@ TEST_F(TouchSelectionControllerTest, SelectionBasic) { |
ClearSelection(); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_DISSOLVED, SELECTION_HANDLES_CLEARED)); |
- EXPECT_EQ(gfx::PointF(), GetLastEventStart()); |
+ ElementsAre(SELECTION_HANDLES_CLEARED)); |
} |
TEST_F(TouchSelectionControllerTest, SelectionAllowedByDoubleTap) { |
@@ -648,7 +544,7 @@ TEST_F(TouchSelectionControllerTest, SelectionAllowedByDoubleTap) { |
OnDoubleTapEvent(); |
ChangeSelection(start_rect, visible, end_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, SELECTION_HANDLES_SHOWN)); |
+ ElementsAre(SELECTION_HANDLES_SHOWN)); |
EXPECT_EQ(start_rect.bottom_left(), GetLastEventStart()); |
} |
@@ -657,14 +553,12 @@ TEST_F(TouchSelectionControllerTest, SelectionAllowedByDoubleTapOnEditable) { |
gfx::RectF end_rect(50, 5, 0, 10); |
bool visible = true; |
- controller().OnSelectionEditable(true); |
- |
// If the user double tap selects text in an editable region, the first tap |
// will register insertion and the second tap selection. |
OnTapEvent(); |
ChangeInsertion(start_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, INSERTION_HANDLE_SHOWN)); |
+ ElementsAre(INSERTION_HANDLE_SHOWN)); |
OnDoubleTapEvent(); |
ChangeSelection(start_rect, visible, end_rect, visible); |
@@ -691,7 +585,7 @@ TEST_F(TouchSelectionControllerTest, SelectionAllowsEmptyUpdateAfterLongPress) { |
ChangeSelection(start_rect, visible, end_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, SELECTION_HANDLES_SHOWN)); |
+ ElementsAre(SELECTION_HANDLES_SHOWN)); |
} |
TEST_F(TouchSelectionControllerTest, SelectionRepeatedLongPress) { |
@@ -702,7 +596,7 @@ TEST_F(TouchSelectionControllerTest, SelectionRepeatedLongPress) { |
OnLongPressEvent(); |
ChangeSelection(start_rect, visible, end_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, SELECTION_HANDLES_SHOWN)); |
+ ElementsAre(SELECTION_HANDLES_SHOWN)); |
EXPECT_EQ(start_rect.bottom_left(), GetLastEventStart()); |
EXPECT_EQ(end_rect.bottom_left(), GetLastEventEnd()); |
@@ -731,7 +625,7 @@ TEST_F(TouchSelectionControllerTest, SelectionDragged) { |
bool visible = true; |
ChangeSelection(start_rect, visible, end_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, SELECTION_HANDLES_SHOWN)); |
+ ElementsAre(SELECTION_HANDLES_SHOWN)); |
EXPECT_EQ(start_rect.bottom_left(), GetLastEventStart()); |
// The touch sequence should be handled only if the drawable reports a hit. |
@@ -788,7 +682,7 @@ TEST_F(TouchSelectionControllerTest, SelectionDraggedWithOverlap) { |
bool visible = true; |
ChangeSelection(start_rect, visible, end_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, SELECTION_HANDLES_SHOWN)); |
+ ElementsAre(SELECTION_HANDLES_SHOWN)); |
EXPECT_EQ(start_rect.bottom_left(), GetLastEventStart()); |
// The ACTION_DOWN should lock to the closest handle. |
@@ -827,7 +721,7 @@ TEST_F(TouchSelectionControllerTest, SelectionDraggedToSwitchBaseAndExtent) { |
bool visible = true; |
ChangeSelection(start_rect, visible, end_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, SELECTION_HANDLES_SHOWN)); |
+ ElementsAre(SELECTION_HANDLES_SHOWN)); |
EXPECT_EQ(start_rect.bottom_left(), GetLastEventStart()); |
SetDraggingEnabled(true); |
@@ -948,7 +842,7 @@ TEST_F(TouchSelectionControllerTest, SelectionDragExtremeLineSize) { |
bool visible = true; |
ChangeSelection(small_line_rect, visible, large_line_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, SELECTION_HANDLES_SHOWN)); |
+ ElementsAre(SELECTION_HANDLES_SHOWN)); |
EXPECT_EQ(small_line_rect.bottom_left(), GetLastEventStart()); |
// Start dragging the handle on the small line. |
@@ -975,7 +869,6 @@ TEST_F(TouchSelectionControllerTest, SelectionDragExtremeLineSize) { |
TEST_F(TouchSelectionControllerTest, Animation) { |
OnTapEvent(); |
- controller().OnSelectionEditable(true); |
gfx::RectF insertion_rect(5, 5, 0, 10); |
@@ -1007,7 +900,6 @@ TEST_F(TouchSelectionControllerTest, TemporarilyHidden) { |
TouchSelectionControllerTestApi test_controller(&controller()); |
OnTapEvent(); |
- controller().OnSelectionEditable(true); |
gfx::RectF insertion_rect(5, 5, 0, 10); |
@@ -1045,7 +937,7 @@ TEST_F(TouchSelectionControllerTest, SelectionClearOnTap) { |
OnLongPressEvent(); |
ChangeSelection(start_rect, visible, end_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, SELECTION_HANDLES_SHOWN)); |
+ ElementsAre(SELECTION_HANDLES_SHOWN)); |
// Selection should not be cleared if the selection bounds have not changed. |
OnTapEvent(); |
@@ -1055,118 +947,7 @@ TEST_F(TouchSelectionControllerTest, SelectionClearOnTap) { |
OnTapEvent(); |
ClearSelection(); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_DISSOLVED, SELECTION_HANDLES_CLEARED)); |
- EXPECT_EQ(gfx::PointF(), GetLastEventStart()); |
-} |
- |
-TEST_F(TouchSelectionControllerTest, NoSelectionAfterLongpressThenTap) { |
- gfx::RectF start_rect(5, 5, 0, 10); |
- gfx::RectF end_rect(50, 5, 0, 10); |
- bool visible = true; |
- |
- // Tap-triggered selections should not be allowed. |
- OnLongPressEvent(); |
- OnTapEvent(); |
- ChangeSelection(start_rect, visible, end_rect, visible); |
- EXPECT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_ESTABLISHED)); |
- |
- // Subsequent longpress selections will be allowed. |
- OnLongPressEvent(); |
- ChangeSelection(start_rect, visible, end_rect, visible); |
- EXPECT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_HANDLES_SHOWN)); |
- |
- // Tapping again shouldn't have any effect on subsequent selection events. |
- OnTapEvent(); |
- end_rect.Offset(10, 10); |
- ChangeSelection(start_rect, visible, end_rect, visible); |
- EXPECT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_HANDLES_MOVED)); |
- ClearSelection(); |
- EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_DISSOLVED, SELECTION_HANDLES_CLEARED)); |
-} |
- |
-TEST_F(TouchSelectionControllerTest, AllowShowingFromCurrentSelection) { |
- gfx::RectF start_rect(5, 5, 0, 10); |
- gfx::RectF end_rect(50, 5, 0, 10); |
- bool visible = true; |
- |
- // The selection should not be activated, as it wasn't yet allowed. |
- ChangeSelection(start_rect, visible, end_rect, visible); |
- EXPECT_EQ(gfx::PointF(), GetLastEventStart()); |
- |
- // A longpress should have no immediate effect. |
- OnLongPressEvent(); |
- |
- // Now explicitly allow showing from the previously supplied bounds. |
- controller().AllowShowingFromCurrentSelection(); |
- EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, SELECTION_HANDLES_SHOWN)); |
- EXPECT_EQ(start_rect.bottom_left(), GetLastEventStart()); |
- |
- // Repeated calls to show from the current selection should be ignored. |
- controller().AllowShowingFromCurrentSelection(); |
- EXPECT_THAT(GetAndResetEvents(), IsEmpty()); |
- EXPECT_EQ(start_rect.bottom_left(), GetLastEventStart()); |
- |
- // Trying to show from an empty selection will have no result. |
- ClearSelection(); |
- EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_DISSOLVED, SELECTION_HANDLES_CLEARED)); |
- controller().AllowShowingFromCurrentSelection(); |
- EXPECT_THAT(GetAndResetEvents(), IsEmpty()); |
- |
- // Showing the insertion handle should also be supported. |
- controller().OnSelectionEditable(true); |
- controller().OnSelectionEmpty(false); |
- controller().HideAndDisallowShowingAutomatically(); |
- gfx::RectF insertion_rect(5, 5, 0, 10); |
- ChangeInsertion(insertion_rect, visible); |
- controller().AllowShowingFromCurrentSelection(); |
- EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, INSERTION_HANDLE_SHOWN)); |
- EXPECT_EQ(insertion_rect.bottom_left(), GetLastEventStart()); |
-} |
- |
-TEST_F(TouchSelectionControllerTest, HandlesShowOnTapInsideRect) { |
- bool visible = false; |
- gfx::RectF start_rect(5, 5, 0, 10); |
- gfx::RectF end_rect(50, 5, 0, 10); |
- gfx::PointF inner_point(25, 10); |
- gfx::PointF outer_point(100, 100); |
- |
- // Establish a selection without handles from 5 to 50 with height 10. |
- ChangeSelection(start_rect, visible, end_rect, visible); |
- EXPECT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_ESTABLISHED)); |
- |
- // A point outside the rect should not be handled. |
- EXPECT_FALSE(controller().WillHandleTapEvent(outer_point, 1)); |
- EXPECT_THAT(GetAndResetEvents(), IsEmpty()); |
- |
- // A point inside the rect should be handled. |
- EXPECT_TRUE(controller().WillHandleTapEvent(inner_point, 1)); |
- EXPECT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_HANDLES_SHOWN)); |
-} |
- |
-TEST_F(TouchSelectionControllerTest, HandlesShowOnLongPressInsideRect) { |
- bool visible = false; |
- gfx::RectF start_rect(5, 5, 0, 10); |
- gfx::RectF end_rect(50, 5, 0, 10); |
- gfx::PointF inner_point(25, 10); |
- gfx::PointF outer_point(100, 100); |
- |
- // Establish a selection without handles from 5 to 50 with height 10. |
- ChangeSelection(start_rect, visible, end_rect, visible); |
- EXPECT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_ESTABLISHED)); |
- |
- // A point outside the rect should not be handled. |
- EXPECT_FALSE( |
- controller().WillHandleLongPressEvent(base::TimeTicks(), outer_point)); |
- EXPECT_THAT(GetAndResetEvents(), IsEmpty()); |
- |
- // A point inside the rect should be handled. |
- EXPECT_TRUE( |
- controller().WillHandleLongPressEvent(base::TimeTicks(), inner_point)); |
- EXPECT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_HANDLES_SHOWN)); |
+ ElementsAre(SELECTION_HANDLES_CLEARED)); |
} |
TEST_F(TouchSelectionControllerTest, LongPressDrag) { |
@@ -1185,7 +966,7 @@ TEST_F(TouchSelectionControllerTest, LongPressDrag) { |
OnLongPressEvent(); |
ChangeSelection(start_rect, visible, end_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, SELECTION_HANDLES_SHOWN)); |
+ ElementsAre(SELECTION_HANDLES_SHOWN)); |
EXPECT_EQ(start_rect.bottom_left(), GetLastEventStart()); |
// The handles should remain invisible while the touch release and longpress |
@@ -1251,7 +1032,7 @@ TEST_F(TouchSelectionControllerTest, LongPressNoDrag) { |
OnLongPressEvent(); |
ChangeSelection(start_rect, visible, end_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, SELECTION_HANDLES_SHOWN)); |
+ ElementsAre(SELECTION_HANDLES_SHOWN)); |
EXPECT_EQ(start_rect.bottom_left(), GetLastEventStart()); |
// The handles should remain invisible while the touch release and longpress |
@@ -1283,7 +1064,7 @@ TEST_F(TouchSelectionControllerTest, NoLongPressDragIfDisabled) { |
OnLongPressEvent(); |
ChangeSelection(start_rect, visible, end_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, SELECTION_HANDLES_SHOWN)); |
+ ElementsAre(SELECTION_HANDLES_SHOWN)); |
EXPECT_EQ(start_rect.bottom_left(), GetLastEventStart()); |
EXPECT_TRUE(test_controller.GetStartVisible()); |
EXPECT_TRUE(test_controller.GetEndVisible()); |
@@ -1304,46 +1085,6 @@ TEST_F(TouchSelectionControllerTest, NoLongPressDragIfDisabled) { |
EXPECT_TRUE(test_controller.GetEndVisible()); |
} |
-// When there is a selection on the page and long-press drag is performed |
-// somewhere that has nothing to select, long-press drag selector should not get |
-// activated so the page can scroll. |
-TEST_F(TouchSelectionControllerTest, LongPressDragScroll) { |
- EnableLongPressDragSelection(); |
- TouchSelectionControllerTestApi test_controller(&controller()); |
- |
- gfx::RectF start_rect(10, 0, 0, 10); |
- gfx::RectF end_rect(20, 0, 0, 10); |
- gfx::PointF touch_point(0, 0); |
- bool visible = true; |
- MockMotionEvent event; |
- |
- // Pre-select something. |
- ChangeSelection(start_rect, visible, end_rect, visible); |
- EXPECT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_ESTABLISHED)); |
- |
- // Start the touch sequence and perform the long-press out of the existing |
- // selection. |
- EXPECT_FALSE(controller().WillHandleTouchEvent( |
- event.PressPoint(touch_point.x(), touch_point.y()))); |
- OnLongPressEvent(); |
- |
- // Drag down. Selection controller should not consume the touch-move event. |
- touch_point.Offset(0, 2 * kDefaulTapSlop); |
- EXPECT_FALSE(controller().WillHandleTouchEvent( |
- event.MovePoint(0, touch_point.x(), touch_point.y()))); |
- |
- // Begin page scroll and update the selection. Selection handles should not be |
- // shown which means long-press drag selector is not activated. |
- controller().OnScrollBeginEvent(); |
- start_rect.Offset(0, 2 * kDefaulTapSlop); |
- end_rect.Offset(0, 2 * kDefaulTapSlop); |
- ChangeSelection(start_rect, visible, end_rect, visible); |
- EXPECT_THAT(GetAndResetEvents(), IsEmpty()); |
- |
- // Release the touch sequence. |
- EXPECT_FALSE(controller().WillHandleTouchEvent(event.ReleasePoint())); |
-} |
- |
TEST_F(TouchSelectionControllerTest, RectBetweenBounds) { |
gfx::RectF start_rect(5, 5, 0, 10); |
gfx::RectF end_rect(50, 5, 0, 10); |
@@ -1354,7 +1095,7 @@ TEST_F(TouchSelectionControllerTest, RectBetweenBounds) { |
OnLongPressEvent(); |
ChangeSelection(start_rect, visible, end_rect, visible); |
ASSERT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, SELECTION_HANDLES_SHOWN)); |
+ ElementsAre(SELECTION_HANDLES_SHOWN)); |
EXPECT_EQ(gfx::RectF(5, 5, 45, 10), controller().GetRectBetweenBounds()); |
// The result of |GetRectBetweenBounds| should be available within the |
@@ -1387,7 +1128,7 @@ TEST_F(TouchSelectionControllerTest, RectBetweenBounds) { |
ClearSelection(); |
ASSERT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_DISSOLVED, SELECTION_HANDLES_CLEARED)); |
+ ElementsAre(SELECTION_HANDLES_CLEARED)); |
EXPECT_EQ(gfx::RectF(), controller().GetRectBetweenBounds()); |
} |
@@ -1402,7 +1143,7 @@ TEST_F(TouchSelectionControllerTest, SelectionNoOrientationChangeWhenSwapped) { |
bool visible = true; |
ChangeSelection(start_rect, visible, end_rect, visible); |
EXPECT_THAT(GetAndResetEvents(), |
- ElementsAre(SELECTION_ESTABLISHED, SELECTION_HANDLES_SHOWN)); |
+ ElementsAre(SELECTION_HANDLES_SHOWN)); |
EXPECT_EQ(start_rect.bottom_left(), GetLastEventStart()); |
EXPECT_EQ(test_controller.GetStartHandleOrientation(), |
TouchHandleOrientation::LEFT); |