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

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

Issue 312293002: Paste popup is positioning properly during content scroll. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed review comments and line breaks. 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 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 controller().OnSelectionEditable(true); 367 controller().OnSelectionEditable(true);
368 SetDraggingEnabled(true); 368 SetDraggingEnabled(true);
369 369
370 gfx::RectF start_rect(10, 0, 0, 10); 370 gfx::RectF start_rect(10, 0, 0, 10);
371 bool visible = true; 371 bool visible = true;
372 ChangeInsertion(start_rect, visible); 372 ChangeInsertion(start_rect, visible);
373 EXPECT_EQ(INSERTION_SHOWN, GetLastEventType()); 373 EXPECT_EQ(INSERTION_SHOWN, GetLastEventType());
374 374
375 MockMotionEvent event(MockMotionEvent::ACTION_DOWN, event_time, 0, 0); 375 MockMotionEvent event(MockMotionEvent::ACTION_DOWN, event_time, 0, 0);
376 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 376 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
377 EXPECT_EQ(INSERTION_SHOWN, GetLastEventType()); 377 //TODO(AKV): this test case has to be modified once crbug.com/394093 is fixed.
378 EXPECT_EQ(INSERTION_DRAG_STARTED, GetLastEventType());
378 379
379 event = MockMotionEvent(MockMotionEvent::ACTION_UP, event_time, 0, 0); 380 event = MockMotionEvent(MockMotionEvent::ACTION_UP, event_time, 0, 0);
380 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 381 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
381 EXPECT_EQ(INSERTION_TAPPED, GetLastEventType()); 382 EXPECT_EQ(INSERTION_TAPPED, GetLastEventType());
382 383
383 // Reset the insertion. 384 // Reset the insertion.
384 ClearInsertion(); 385 ClearInsertion();
385 controller().OnTapEvent(); 386 controller().OnTapEvent();
386 ChangeInsertion(start_rect, visible); 387 ChangeInsertion(start_rect, visible);
387 ASSERT_EQ(INSERTION_SHOWN, GetLastEventType()); 388 ASSERT_EQ(INSERTION_SHOWN, GetLastEventType());
388 389
389 // No tap should be signalled if the time between DOWN and UP was too long. 390 // No tap should be signalled if the time between DOWN and UP was too long.
390 event = MockMotionEvent(MockMotionEvent::ACTION_DOWN, event_time, 0, 0); 391 event = MockMotionEvent(MockMotionEvent::ACTION_DOWN, event_time, 0, 0);
391 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 392 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
392 event = MockMotionEvent(MockMotionEvent::ACTION_UP, 393 event = MockMotionEvent(MockMotionEvent::ACTION_UP,
393 event_time + base::TimeDelta::FromSeconds(1), 394 event_time + base::TimeDelta::FromSeconds(1),
394 0, 395 0,
395 0); 396 0);
396 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 397 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
397 EXPECT_EQ(INSERTION_SHOWN, GetLastEventType()); 398 EXPECT_EQ(INSERTION_DRAG_STARTED, GetLastEventType());
398 399
399 // Reset the insertion. 400 // Reset the insertion.
400 ClearInsertion(); 401 ClearInsertion();
401 controller().OnTapEvent(); 402 controller().OnTapEvent();
402 ChangeInsertion(start_rect, visible); 403 ChangeInsertion(start_rect, visible);
403 ASSERT_EQ(INSERTION_SHOWN, GetLastEventType()); 404 ASSERT_EQ(INSERTION_SHOWN, GetLastEventType());
404 405
405 // No tap should be signalled if the touch sequence is cancelled. 406 // No tap should be signalled if the touch sequence is cancelled.
406 event = MockMotionEvent(MockMotionEvent::ACTION_DOWN, event_time, 0, 0); 407 event = MockMotionEvent(MockMotionEvent::ACTION_DOWN, event_time, 0, 0);
407 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 408 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
408 event = MockMotionEvent(MockMotionEvent::ACTION_CANCEL, event_time, 0, 0); 409 event = MockMotionEvent(MockMotionEvent::ACTION_CANCEL, event_time, 0, 0);
409 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 410 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
410 EXPECT_EQ(INSERTION_SHOWN, GetLastEventType()); 411 EXPECT_EQ(INSERTION_DRAG_STARTED, GetLastEventType());
411 } 412 }
412 413
413 TEST_F(TouchSelectionControllerTest, InsertionNotResetByRepeatedTapOrPress) { 414 TEST_F(TouchSelectionControllerTest, InsertionNotResetByRepeatedTapOrPress) {
414 base::TimeTicks event_time = base::TimeTicks::Now(); 415 base::TimeTicks event_time = base::TimeTicks::Now();
415 controller().OnTapEvent(); 416 controller().OnTapEvent();
416 controller().OnSelectionEditable(true); 417 controller().OnSelectionEditable(true);
417 SetDraggingEnabled(true); 418 SetDraggingEnabled(true);
418 419
419 gfx::RectF anchor_rect(10, 0, 0, 10); 420 gfx::RectF anchor_rect(10, 0, 0, 10);
420 bool visible = true; 421 bool visible = true;
421 ChangeInsertion(anchor_rect, visible); 422 ChangeInsertion(anchor_rect, visible);
422 EXPECT_EQ(INSERTION_SHOWN, GetLastEventType()); 423 EXPECT_EQ(INSERTION_SHOWN, GetLastEventType());
423 EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor()); 424 EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor());
424 425
425 // Tapping again shouldn't reset the active insertion point. 426 // Tapping again shouldn't reset the active insertion point.
426 controller().OnTapEvent(); 427 controller().OnTapEvent();
427 MockMotionEvent event(MockMotionEvent::ACTION_DOWN, event_time, 0, 0); 428 MockMotionEvent event(MockMotionEvent::ACTION_DOWN, event_time, 0, 0);
428 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 429 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
429 EXPECT_EQ(INSERTION_SHOWN, GetLastEventType()); 430 EXPECT_EQ(INSERTION_DRAG_STARTED, GetLastEventType());
430 EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor()); 431 EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor());
431 432
432 event = MockMotionEvent(MockMotionEvent::ACTION_UP, event_time, 0, 0); 433 event = MockMotionEvent(MockMotionEvent::ACTION_UP, event_time, 0, 0);
433 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 434 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
434 EXPECT_EQ(INSERTION_TAPPED, GetLastEventType()); 435 EXPECT_EQ(INSERTION_TAPPED, GetLastEventType());
435 EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor()); 436 EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor());
436 437
437 anchor_rect.Offset(5, 15); 438 anchor_rect.Offset(5, 15);
438 ChangeInsertion(anchor_rect, visible); 439 ChangeInsertion(anchor_rect, visible);
439 EXPECT_EQ(INSERTION_MOVED, GetLastEventType()); 440 EXPECT_EQ(INSERTION_MOVED, GetLastEventType());
440 EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor()); 441 EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor());
441 442
442 // Pressing shouldn't reset the active insertion point. 443 // Pressing shouldn't reset the active insertion point.
443 controller().OnLongPressEvent(); 444 controller().OnLongPressEvent();
444 controller().OnSelectionEmpty(true); 445 controller().OnSelectionEmpty(true);
445 event = MockMotionEvent(MockMotionEvent::ACTION_DOWN, event_time, 0, 0); 446 event = MockMotionEvent(MockMotionEvent::ACTION_DOWN, event_time, 0, 0);
446 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 447 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
447 EXPECT_EQ(INSERTION_MOVED, GetLastEventType()); 448 EXPECT_EQ(INSERTION_DRAG_STARTED, GetLastEventType());
448 EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor()); 449 EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor());
449 450
450 event = MockMotionEvent(MockMotionEvent::ACTION_UP, event_time, 0, 0); 451 event = MockMotionEvent(MockMotionEvent::ACTION_UP, event_time, 0, 0);
451 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 452 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
452 EXPECT_EQ(INSERTION_TAPPED, GetLastEventType()); 453 EXPECT_EQ(INSERTION_TAPPED, GetLastEventType());
453 EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor()); 454 EXPECT_EQ(anchor_rect.bottom_left(), GetLastEventAnchor());
454 } 455 }
455 456
456 TEST_F(TouchSelectionControllerTest, SelectionBasic) { 457 TEST_F(TouchSelectionControllerTest, SelectionBasic) {
457 gfx::RectF start_rect(5, 5, 0, 10); 458 gfx::RectF start_rect(5, 5, 0, 10);
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 619
619 visible = true; 620 visible = true;
620 ChangeInsertion(insertion_rect, visible); 621 ChangeInsertion(insertion_rect, visible);
621 EXPECT_FALSE(GetAndResetNeedsAnimate()); 622 EXPECT_FALSE(GetAndResetNeedsAnimate());
622 623
623 controller().SetTemporarilyHidden(false); 624 controller().SetTemporarilyHidden(false);
624 EXPECT_TRUE(GetAndResetNeedsAnimate()); 625 EXPECT_TRUE(GetAndResetNeedsAnimate());
625 } 626 }
626 627
627 } // namespace content 628 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698