OLD | NEW |
---|---|
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/chromeos/touch_exploration_controller.h" | 5 #include "ui/chromeos/touch_exploration_controller.h" |
6 | 6 |
7 #include "base/test/simple_test_tick_clock.h" | 7 #include "base/test/simple_test_tick_clock.h" |
8 #include "base/time/time.h" | 8 #include "base/time/time.h" |
9 #include "ui/aura/client/cursor_client.h" | 9 #include "ui/aura/client/cursor_client.h" |
10 #include "ui/aura/test/aura_test_base.h" | 10 #include "ui/aura/test/aura_test_base.h" |
(...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
775 // Tap and hold at one location, and get a mouse move event in touch explore. | 775 // Tap and hold at one location, and get a mouse move event in touch explore. |
776 EnterTouchExplorationModeAtLocation(initial_touch_location); | 776 EnterTouchExplorationModeAtLocation(initial_touch_location); |
777 std::vector<ui::LocatedEvent*> events = | 777 std::vector<ui::LocatedEvent*> events = |
778 GetCapturedEventsOfType(ui::ET_MOUSE_MOVED); | 778 GetCapturedEventsOfType(ui::ET_MOUSE_MOVED); |
779 ASSERT_EQ(1U, events.size()); | 779 ASSERT_EQ(1U, events.size()); |
780 | 780 |
781 EXPECT_EQ(initial_touch_location, events[0]->location()); | 781 EXPECT_EQ(initial_touch_location, events[0]->location()); |
782 EXPECT_TRUE(events[0]->flags() & ui::EF_IS_SYNTHESIZED); | 782 EXPECT_TRUE(events[0]->flags() & ui::EF_IS_SYNTHESIZED); |
783 EXPECT_TRUE(events[0]->flags() & ui::EF_TOUCH_ACCESSIBILITY); | 783 EXPECT_TRUE(events[0]->flags() & ui::EF_TOUCH_ACCESSIBILITY); |
784 ClearCapturedEvents(); | 784 ClearCapturedEvents(); |
785 EXPECT_TRUE(IsInTouchToMouseMode()); | |
785 | 786 |
786 // Now tap and release at a different location. This should result in a | 787 // Now tap and release at a different location. This should result in a |
787 // single touch and release at the location of the first (held) tap, | 788 // single touch and release at the location of the first (held) tap, |
788 // not at the location of the second tap and release. | 789 // not at the location of the second tap and release. |
789 // After the release, there is still a finger in touch explore mode. | 790 // After the release, there is still a finger in touch explore mode. |
790 ui::TouchEvent split_tap_press( | 791 ui::TouchEvent split_tap_press( |
791 ui::ET_TOUCH_PRESSED, second_touch_location, 1, Now()); | 792 ui::ET_TOUCH_PRESSED, second_touch_location, 1, Now()); |
792 generator_->Dispatch(&split_tap_press); | 793 generator_->Dispatch(&split_tap_press); |
794 // To simulate the behavior of the real device, we manually disable | |
795 // mouse events. To not rely on manually setting the state, this is also | |
796 // tested in touch_exploration_controller_browsertest. | |
797 cursor_client()->DisableMouseEvents(); | |
793 ui::TouchEvent split_tap_release( | 798 ui::TouchEvent split_tap_release( |
794 ui::ET_TOUCH_RELEASED, second_touch_location, 1, Now()); | 799 ui::ET_TOUCH_RELEASED, second_touch_location, 1, Now()); |
795 generator_->Dispatch(&split_tap_release); | 800 generator_->Dispatch(&split_tap_release); |
796 EXPECT_FALSE(IsInNoFingersDownState()); | 801 EXPECT_FALSE(IsInNoFingersDownState()); |
802 // Releasing the second finger should re-enable mouse events putting us | |
803 // back into the touch exploration mode. | |
804 EXPECT_TRUE(IsInTouchToMouseMode()); | |
797 | 805 |
798 const ScopedVector<ui::LocatedEvent>& captured_events = GetCapturedEvents(); | 806 const ScopedVector<ui::LocatedEvent>& captured_events = GetCapturedEvents(); |
799 ASSERT_EQ(2U, captured_events.size()); | 807 ASSERT_EQ(2U, captured_events.size()); |
800 EXPECT_EQ(ui::ET_TOUCH_PRESSED, captured_events[0]->type()); | 808 EXPECT_EQ(ui::ET_TOUCH_PRESSED, captured_events[0]->type()); |
801 EXPECT_EQ(initial_touch_location, captured_events[0]->location()); | 809 EXPECT_EQ(initial_touch_location, captured_events[0]->location()); |
802 EXPECT_EQ(ui::ET_TOUCH_RELEASED, captured_events[1]->type()); | 810 EXPECT_EQ(ui::ET_TOUCH_RELEASED, captured_events[1]->type()); |
803 EXPECT_EQ(initial_touch_location, captured_events[1]->location()); | 811 EXPECT_EQ(initial_touch_location, captured_events[1]->location()); |
812 ClearCapturedEvents(); | |
813 | |
814 ui::TouchEvent touch_explore_release( | |
815 ui::ET_TOUCH_RELEASED, initial_touch_location, 0, Now()); | |
816 generator_->Dispatch(&touch_explore_release); | |
817 AdvanceSimulatedTimePastTapDelay(); | |
mfomitchev
2014/06/27 19:15:46
Hmm.. why do we advance the time? Doesn't seems li
evy
2014/06/30 23:28:47
We added single tap, which means that when you lif
| |
818 EXPECT_TRUE(IsInNoFingersDownState()); | |
804 } | 819 } |
805 | 820 |
806 // If split tap is started but the touch explore finger is released first, | 821 // If split tap is started but the touch explore finger is released first, |
807 // there should still be a touch press and release sent to the location of | 822 // there should still be a touch press and release sent to the location of |
808 // the last successful touch exploration. | 823 // the last successful touch exploration. |
809 // Both fingers should be released after the click goes through. | 824 // Both fingers should be released after the click goes through. |
810 TEST_F(TouchExplorationTest, SplitTapRelease) { | 825 TEST_F(TouchExplorationTest, SplitTapRelease) { |
811 SwitchTouchExplorationMode(true); | 826 SwitchTouchExplorationMode(true); |
812 | 827 |
813 gfx::Point initial_touch_location(11, 12); | 828 gfx::Point initial_touch_location(11, 12); |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
983 base::TimeDelta pressed_time = captured_events[0]->time_stamp(); | 998 base::TimeDelta pressed_time = captured_events[0]->time_stamp(); |
984 EXPECT_EQ(ui::ET_TOUCH_RELEASED, captured_events[1]->type()); | 999 EXPECT_EQ(ui::ET_TOUCH_RELEASED, captured_events[1]->type()); |
985 EXPECT_EQ(initial_touch_location, captured_events[1]->location()); | 1000 EXPECT_EQ(initial_touch_location, captured_events[1]->location()); |
986 base::TimeDelta released_time = captured_events[1]->time_stamp(); | 1001 base::TimeDelta released_time = captured_events[1]->time_stamp(); |
987 EXPECT_EQ(gesture_detector_config_.longpress_timeout, | 1002 EXPECT_EQ(gesture_detector_config_.longpress_timeout, |
988 released_time - pressed_time); | 1003 released_time - pressed_time); |
989 EXPECT_TRUE(IsInNoFingersDownState()); | 1004 EXPECT_TRUE(IsInNoFingersDownState()); |
990 } | 1005 } |
991 | 1006 |
992 } // namespace ui | 1007 } // namespace ui |
OLD | NEW |