Index: content/browser/renderer_host/input/touch_selection_controller_unittest.cc |
diff --git a/content/browser/renderer_host/input/touch_selection_controller_unittest.cc b/content/browser/renderer_host/input/touch_selection_controller_unittest.cc |
index f5a53bc80e1269df294d6d1711996e85e47bb964..5901058a6c47b562665a6418e5b7b1c922e2c6a1 100644 |
--- a/content/browser/renderer_host/input/touch_selection_controller_unittest.cc |
+++ b/content/browser/renderer_host/input/touch_selection_controller_unittest.cc |
@@ -410,6 +410,49 @@ TEST_F(TouchSelectionControllerTest, InsertionTapped) { |
EXPECT_EQ(INSERTION_SHOWN, GetLastEventType()); |
} |
+ |
+TEST_F(TouchSelectionControllerTest, InsertionNotResetByRepeatedTapOrPress) { |
+ base::TimeTicks event_time = base::TimeTicks::Now(); |
+ controller().OnTapEvent(); |
+ controller().OnSelectionEditable(true); |
+ SetDraggingEnabled(true); |
+ |
+ gfx::RectF anchor_rect(10, 0, 0, 10); |
+ bool visible = true; |
+ ChangeInsertion(anchor_rect, visible); |
+ EXPECT_EQ(INSERTION_SHOWN, GetLastEventType()); |
+ EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor()); |
+ |
+ // Tapping again shouldn't reset the active insertion point. |
+ controller().OnTapEvent(); |
+ MockMotionEvent event(MockMotionEvent::ACTION_DOWN, event_time, 0, 0); |
+ EXPECT_TRUE(controller().WillHandleTouchEvent(event)); |
+ EXPECT_EQ(INSERTION_SHOWN, GetLastEventType()); |
+ EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor()); |
+ |
+ event = MockMotionEvent(MockMotionEvent::ACTION_UP, event_time, 0, 0); |
+ EXPECT_TRUE(controller().WillHandleTouchEvent(event)); |
+ EXPECT_EQ(INSERTION_TAPPED, GetLastEventType()); |
+ EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor()); |
+ |
+ anchor_rect.Offset(5, 15); |
+ ChangeInsertion(anchor_rect, visible); |
+ EXPECT_EQ(INSERTION_MOVED, GetLastEventType()); |
+ EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor()); |
+ |
+ // Pressing shouldn't reset the active insertion point. |
+ controller().OnLongPressEvent(); |
+ event = MockMotionEvent(MockMotionEvent::ACTION_DOWN, event_time, 0, 0); |
+ EXPECT_TRUE(controller().WillHandleTouchEvent(event)); |
+ EXPECT_EQ(INSERTION_MOVED, GetLastEventType()); |
+ EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor()); |
+ |
+ event = MockMotionEvent(MockMotionEvent::ACTION_UP, event_time, 0, 0); |
+ EXPECT_TRUE(controller().WillHandleTouchEvent(event)); |
+ EXPECT_EQ(INSERTION_TAPPED, GetLastEventType()); |
+ EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor()); |
+} |
+ |
TEST_F(TouchSelectionControllerTest, SelectionBasic) { |
gfx::RectF anchor_rect(5, 5, 0, 10); |
gfx::RectF focus_rect(50, 5, 0, 10); |