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

Side by Side Diff: content/browser/renderer_host/input/touch_selection_controller_unittest.cc

Issue 469483002: [Android] Route selection event updates to ContentViewClient (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleanup Created 6 years, 4 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
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 "content/browser/renderer_host/input/touch_selection_controller.h" 5 #include "content/browser/renderer_host/input/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/mock_motion_event.h" 8 #include "ui/events/test/mock_motion_event.h"
9 9
10 using ui::test::MockMotionEvent; 10 using ui::test::MockMotionEvent;
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 502
503 // The SelectBetweenCoordinates() result should reflect the movement. Note 503 // The SelectBetweenCoordinates() result should reflect the movement. Note
504 // that the start coordinate will always reflect the "fixed" handle's 504 // that the start coordinate will always reflect the "fixed" handle's
505 // position, in this case the position from |end_rect|. 505 // position, in this case the position from |end_rect|.
506 // Note that the reported position is offset from the center of the 506 // Note that the reported position is offset from the center of the
507 // input rects (i.e., the middle of the corresponding text line). 507 // input rects (i.e., the middle of the corresponding text line).
508 gfx::PointF fixed_offset = end_rect.CenterPoint(); 508 gfx::PointF fixed_offset = end_rect.CenterPoint();
509 gfx::PointF start_offset = start_rect.CenterPoint(); 509 gfx::PointF start_offset = start_rect.CenterPoint();
510 event = MockMotionEvent(MockMotionEvent::ACTION_MOVE, event_time, 0, 5); 510 event = MockMotionEvent(MockMotionEvent::ACTION_MOVE, event_time, 0, 5);
511 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 511 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
512 EXPECT_EQ(SELECTION_DRAG_STARTED, GetLastEventType());
512 EXPECT_TRUE(GetAndResetSelectionMoved()); 513 EXPECT_TRUE(GetAndResetSelectionMoved());
513 EXPECT_EQ(fixed_offset, GetLastSelectionStart()); 514 EXPECT_EQ(fixed_offset, GetLastSelectionStart());
514 EXPECT_EQ(start_offset + gfx::Vector2dF(0, 5), GetLastSelectionEnd()); 515 EXPECT_EQ(start_offset + gfx::Vector2dF(0, 5), GetLastSelectionEnd());
515 516
516 event = MockMotionEvent(MockMotionEvent::ACTION_MOVE, event_time, 5, 5); 517 event = MockMotionEvent(MockMotionEvent::ACTION_MOVE, event_time, 5, 5);
517 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 518 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
518 EXPECT_TRUE(GetAndResetSelectionMoved()); 519 EXPECT_TRUE(GetAndResetSelectionMoved());
519 EXPECT_EQ(fixed_offset, GetLastSelectionStart()); 520 EXPECT_EQ(fixed_offset, GetLastSelectionStart());
520 EXPECT_EQ(start_offset + gfx::Vector2dF(5, 5), GetLastSelectionEnd()); 521 EXPECT_EQ(start_offset + gfx::Vector2dF(5, 5), GetLastSelectionEnd());
521 522
522 event = MockMotionEvent(MockMotionEvent::ACTION_MOVE, event_time, 10, 5); 523 event = MockMotionEvent(MockMotionEvent::ACTION_MOVE, event_time, 10, 5);
523 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 524 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
524 EXPECT_TRUE(GetAndResetSelectionMoved()); 525 EXPECT_TRUE(GetAndResetSelectionMoved());
525 EXPECT_EQ(fixed_offset, GetLastSelectionStart()); 526 EXPECT_EQ(fixed_offset, GetLastSelectionStart());
526 EXPECT_EQ(start_offset + gfx::Vector2dF(10, 5), GetLastSelectionEnd()); 527 EXPECT_EQ(start_offset + gfx::Vector2dF(10, 5), GetLastSelectionEnd());
527 528
528 event = MockMotionEvent(MockMotionEvent::ACTION_UP, event_time, 10, 5); 529 event = MockMotionEvent(MockMotionEvent::ACTION_UP, event_time, 10, 5);
529 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 530 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
531 EXPECT_EQ(SELECTION_DRAG_STOPPED, GetLastEventType());
530 EXPECT_FALSE(GetAndResetSelectionMoved()); 532 EXPECT_FALSE(GetAndResetSelectionMoved());
531 533
532 // Once the drag is complete, no more touch events should be consumed until 534 // Once the drag is complete, no more touch events should be consumed until
533 // the next ACTION_DOWN. 535 // the next ACTION_DOWN.
534 EXPECT_FALSE(controller().WillHandleTouchEvent(event)); 536 EXPECT_FALSE(controller().WillHandleTouchEvent(event));
535 } 537 }
536 538
537 TEST_F(TouchSelectionControllerTest, SelectionDraggedWithOverlap) { 539 TEST_F(TouchSelectionControllerTest, SelectionDraggedWithOverlap) {
538 base::TimeTicks event_time = base::TimeTicks::Now(); 540 base::TimeTicks event_time = base::TimeTicks::Now();
539 controller().OnLongPressEvent(); 541 controller().OnLongPressEvent();
540 542
541 float line_height = 10.f; 543 float line_height = 10.f;
542 gfx::RectF start_rect(0, 0, 0, line_height); 544 gfx::RectF start_rect(0, 0, 0, line_height);
543 gfx::RectF end_rect(50, 0, 0, line_height); 545 gfx::RectF end_rect(50, 0, 0, line_height);
544 bool visible = true; 546 bool visible = true;
545 ChangeSelection(start_rect, visible, end_rect, visible); 547 ChangeSelection(start_rect, visible, end_rect, visible);
546 EXPECT_EQ(SELECTION_SHOWN, GetLastEventType()); 548 EXPECT_EQ(SELECTION_SHOWN, GetLastEventType());
547 EXPECT_EQ(start_rect.bottom_left(), GetLastEventAnchor()); 549 EXPECT_EQ(start_rect.bottom_left(), GetLastEventAnchor());
548 550
549 // The ACTION_DOWN should lock to the closest handle. 551 // The ACTION_DOWN should lock to the closest handle.
550 gfx::PointF end_offset = end_rect.CenterPoint(); 552 gfx::PointF end_offset = end_rect.CenterPoint();
551 gfx::PointF fixed_offset = start_rect.CenterPoint(); 553 gfx::PointF fixed_offset = start_rect.CenterPoint();
552 float touch_down_x = (end_offset.x() + fixed_offset.x()) / 2 + 1.f; 554 float touch_down_x = (end_offset.x() + fixed_offset.x()) / 2 + 1.f;
553 MockMotionEvent event( 555 MockMotionEvent event(
554 MockMotionEvent::ACTION_DOWN, event_time, touch_down_x, 0); 556 MockMotionEvent::ACTION_DOWN, event_time, touch_down_x, 0);
555 SetDraggingEnabled(true); 557 SetDraggingEnabled(true);
556 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 558 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
559 EXPECT_EQ(SELECTION_DRAG_STARTED, GetLastEventType());
557 EXPECT_FALSE(GetAndResetSelectionMoved()); 560 EXPECT_FALSE(GetAndResetSelectionMoved());
558 561
559 // Even though the ACTION_MOVE is over the start handle, it should continue 562 // Even though the ACTION_MOVE is over the start handle, it should continue
560 // targetting the end handle that consumed the ACTION_DOWN. 563 // targetting the end handle that consumed the ACTION_DOWN.
561 event = MockMotionEvent(MockMotionEvent::ACTION_MOVE, event_time, 0, 0); 564 event = MockMotionEvent(MockMotionEvent::ACTION_MOVE, event_time, 0, 0);
562 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 565 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
563 EXPECT_TRUE(GetAndResetSelectionMoved()); 566 EXPECT_TRUE(GetAndResetSelectionMoved());
564 EXPECT_EQ(fixed_offset, GetLastSelectionStart()); 567 EXPECT_EQ(fixed_offset, GetLastSelectionStart());
565 EXPECT_EQ(end_offset - gfx::Vector2dF(touch_down_x, 0), 568 EXPECT_EQ(end_offset - gfx::Vector2dF(touch_down_x, 0),
566 GetLastSelectionEnd()); 569 GetLastSelectionEnd());
567 570
568 event = MockMotionEvent(MockMotionEvent::ACTION_UP, event_time, 0, 0); 571 event = MockMotionEvent(MockMotionEvent::ACTION_UP, event_time, 0, 0);
569 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 572 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
573 EXPECT_EQ(SELECTION_DRAG_STOPPED, GetLastEventType());
570 EXPECT_FALSE(GetAndResetSelectionMoved()); 574 EXPECT_FALSE(GetAndResetSelectionMoved());
571 } 575 }
572 576
573 TEST_F(TouchSelectionControllerTest, Animation) { 577 TEST_F(TouchSelectionControllerTest, Animation) {
574 controller().OnTapEvent(); 578 controller().OnTapEvent();
575 controller().OnSelectionEditable(true); 579 controller().OnSelectionEditable(true);
576 580
577 gfx::RectF insertion_rect(5, 5, 0, 10); 581 gfx::RectF insertion_rect(5, 5, 0, 10);
578 582
579 bool visible = true; 583 bool visible = true;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
619 623
620 visible = true; 624 visible = true;
621 ChangeInsertion(insertion_rect, visible); 625 ChangeInsertion(insertion_rect, visible);
622 EXPECT_FALSE(GetAndResetNeedsAnimate()); 626 EXPECT_FALSE(GetAndResetNeedsAnimate());
623 627
624 controller().SetTemporarilyHidden(false); 628 controller().SetTemporarilyHidden(false);
625 EXPECT_TRUE(GetAndResetNeedsAnimate()); 629 EXPECT_TRUE(GetAndResetNeedsAnimate());
626 } 630 }
627 631
628 } // namespace content 632 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698