Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(580)

Side by Side Diff: ui/touch_selection/touch_selection_controller_unittest.cc

Issue 872083002: Ease selection dragging between large/small text lines (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/touch_selection/touch_selection_controller.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/touch_selection/touch_selection_controller.h" 5 #include "ui/touch_selection/touch_selection_controller.h"
6 6
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "ui/events/test/motion_event_test_utils.h" 8 #include "ui/events/test/motion_event_test_utils.h"
9 9
10 using ui::test::MockMotionEvent; 10 using ui::test::MockMotionEvent;
(...skipping 712 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 EXPECT_FALSE(GetAndResetSelectionPointsSwapped()); 723 EXPECT_FALSE(GetAndResetSelectionPointsSwapped());
724 EXPECT_EQ(base_offset, GetLastSelectionStart()); 724 EXPECT_EQ(base_offset, GetLastSelectionStart());
725 EXPECT_EQ(extent_offset + gfx::Vector2dF(0, 5), GetLastSelectionEnd()); 725 EXPECT_EQ(extent_offset + gfx::Vector2dF(0, 5), GetLastSelectionEnd());
726 726
727 event = MockMotionEvent(MockMotionEvent::ACTION_UP, event_time, 10, 5); 727 event = MockMotionEvent(MockMotionEvent::ACTION_UP, event_time, 10, 5);
728 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 728 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
729 EXPECT_EQ(SELECTION_DRAG_STOPPED, GetLastEventType()); 729 EXPECT_EQ(SELECTION_DRAG_STOPPED, GetLastEventType());
730 EXPECT_FALSE(GetAndResetSelectionMoved()); 730 EXPECT_FALSE(GetAndResetSelectionMoved());
731 } 731 }
732 732
733 TEST_F(TouchSelectionControllerTest, SelectionDragExtremeLineSize) {
734 base::TimeTicks event_time = base::TimeTicks::Now();
735 controller().OnLongPressEvent();
736
737 float small_line_height = 1.f;
738 float large_line_height = 50.f;
739 gfx::RectF small_line_rect(0, 0, 0, small_line_height);
740 gfx::RectF large_line_rect(50, 50, 0, large_line_height);
741 bool visible = true;
742 ChangeSelection(small_line_rect, visible, large_line_rect, visible);
743 EXPECT_EQ(SELECTION_SHOWN, GetLastEventType());
744 EXPECT_EQ(small_line_rect.bottom_left(), GetLastEventAnchor());
745
746 // Start dragging the handle on the small line.
747 MockMotionEvent event(MockMotionEvent::ACTION_DOWN, event_time,
748 small_line_rect.x(), small_line_rect.y());
749 SetDraggingEnabled(true);
750 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
751 EXPECT_EQ(SELECTION_DRAG_STARTED, GetLastEventType());
752 // The drag coordinate for large lines should have be capped to a reasonable
mohsen 2015/01/23 23:35:07 nit: should have be capped -> should be capped?
jdduke (slow) 2015/01/23 23:55:23 Ah, good catch, fixed.
753 // offset, allowing seamless transition to neighboring lines with different
754 // sizes. The drag coordinate for small lines should have an offset
755 // commensurate with the small line size.
756 EXPECT_EQ(large_line_rect.bottom_left() - gfx::Vector2dF(0, 5.f),
757 GetLastSelectionStart());
758 EXPECT_EQ(small_line_rect.CenterPoint(), GetLastSelectionEnd());
759
760 small_line_rect += gfx::Vector2dF(25.f, 0);
761 event = MockMotionEvent(MockMotionEvent::ACTION_MOVE, event_time,
762 small_line_rect.x(), small_line_rect.y());
763 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
764 EXPECT_TRUE(GetAndResetSelectionMoved());
765 EXPECT_EQ(small_line_rect.CenterPoint(), GetLastSelectionEnd());
766 }
767
733 TEST_F(TouchSelectionControllerTest, Animation) { 768 TEST_F(TouchSelectionControllerTest, Animation) {
734 controller().OnTapEvent(); 769 controller().OnTapEvent();
735 controller().OnSelectionEditable(true); 770 controller().OnSelectionEditable(true);
736 771
737 gfx::RectF insertion_rect(5, 5, 0, 10); 772 gfx::RectF insertion_rect(5, 5, 0, 10);
738 773
739 bool visible = true; 774 bool visible = true;
740 ChangeInsertion(insertion_rect, visible); 775 ChangeInsertion(insertion_rect, visible);
741 EXPECT_FALSE(GetAndResetNeedsAnimate()); 776 EXPECT_FALSE(GetAndResetNeedsAnimate());
742 777
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
834 controller().OnSelectionEmpty(false); 869 controller().OnSelectionEmpty(false);
835 controller().HideAndDisallowShowingAutomatically(); 870 controller().HideAndDisallowShowingAutomatically();
836 gfx::RectF insertion_rect(5, 5, 0, 10); 871 gfx::RectF insertion_rect(5, 5, 0, 10);
837 ChangeInsertion(insertion_rect, visible); 872 ChangeInsertion(insertion_rect, visible);
838 controller().AllowShowingFromCurrentSelection(); 873 controller().AllowShowingFromCurrentSelection();
839 EXPECT_EQ(INSERTION_SHOWN, GetLastEventType()); 874 EXPECT_EQ(INSERTION_SHOWN, GetLastEventType());
840 EXPECT_EQ(insertion_rect.bottom_left(), GetLastEventAnchor()); 875 EXPECT_EQ(insertion_rect.bottom_left(), GetLastEventAnchor());
841 } 876 }
842 877
843 } // namespace ui 878 } // namespace ui
OLDNEW
« no previous file with comments | « ui/touch_selection/touch_selection_controller.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698