| 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 <math.h> | 7 #include <math.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 | 9 |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 381 } | 381 } |
| 382 | 382 |
| 383 float GetMaxDistanceFromEdge() const { | 383 float GetMaxDistanceFromEdge() const { |
| 384 return touch_exploration_controller_->GetMaxDistanceFromEdge(); | 384 return touch_exploration_controller_->GetMaxDistanceFromEdge(); |
| 385 } | 385 } |
| 386 | 386 |
| 387 float GetSlopDistanceFromEdge() const { | 387 float GetSlopDistanceFromEdge() const { |
| 388 return touch_exploration_controller_->GetSlopDistanceFromEdge(); | 388 return touch_exploration_controller_->GetSlopDistanceFromEdge(); |
| 389 } | 389 } |
| 390 | 390 |
| 391 base::TimeDelta Now() { | 391 base::TimeTicks Now() { |
| 392 // This is the same as what EventTimeForNow() does, but here we do it | 392 // This is the same as what EventTimeForNow() does, but here we do it |
| 393 // with our simulated clock. | 393 // with our simulated clock. |
| 394 return base::TimeDelta::FromInternalValue( | 394 return simulated_clock_->NowTicks(); |
| 395 simulated_clock_->NowTicks().ToInternalValue()); | |
| 396 } | 395 } |
| 397 | 396 |
| 398 std::unique_ptr<test::EventGenerator> generator_; | 397 std::unique_ptr<test::EventGenerator> generator_; |
| 399 ui::GestureDetector::Config gesture_detector_config_; | 398 ui::GestureDetector::Config gesture_detector_config_; |
| 400 // Owned by |generator_|. | 399 // Owned by |generator_|. |
| 401 base::SimpleTestTickClock* simulated_clock_; | 400 base::SimpleTestTickClock* simulated_clock_; |
| 402 MockTouchExplorationControllerDelegate delegate_; | 401 MockTouchExplorationControllerDelegate delegate_; |
| 403 | 402 |
| 404 private: | 403 private: |
| 405 EventCapturer event_capturer_; | 404 EventCapturer event_capturer_; |
| (...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 829 generator_->PressTouch(); | 828 generator_->PressTouch(); |
| 830 // Advance to the finger passing through, and then to the longpress timeout. | 829 // Advance to the finger passing through, and then to the longpress timeout. |
| 831 AdvanceSimulatedTimePastTapDelay(); | 830 AdvanceSimulatedTimePastTapDelay(); |
| 832 simulated_clock_->Advance(gesture_detector_config_.longpress_timeout); | 831 simulated_clock_->Advance(gesture_detector_config_.longpress_timeout); |
| 833 generator_->ReleaseTouch(); | 832 generator_->ReleaseTouch(); |
| 834 | 833 |
| 835 std::vector<ui::LocatedEvent*> captured_events = GetCapturedLocatedEvents(); | 834 std::vector<ui::LocatedEvent*> captured_events = GetCapturedLocatedEvents(); |
| 836 ASSERT_EQ(2U, captured_events.size()); | 835 ASSERT_EQ(2U, captured_events.size()); |
| 837 EXPECT_EQ(ui::ET_TOUCH_PRESSED, captured_events[0]->type()); | 836 EXPECT_EQ(ui::ET_TOUCH_PRESSED, captured_events[0]->type()); |
| 838 EXPECT_EQ(tap_location, captured_events[0]->location()); | 837 EXPECT_EQ(tap_location, captured_events[0]->location()); |
| 839 base::TimeDelta pressed_time = captured_events[0]->time_stamp(); | 838 base::TimeTicks pressed_time = captured_events[0]->time_stamp(); |
| 840 EXPECT_EQ(ui::ET_TOUCH_RELEASED, captured_events[1]->type()); | 839 EXPECT_EQ(ui::ET_TOUCH_RELEASED, captured_events[1]->type()); |
| 841 EXPECT_EQ(tap_location, captured_events[1]->location()); | 840 EXPECT_EQ(tap_location, captured_events[1]->location()); |
| 842 base::TimeDelta released_time = captured_events[1]->time_stamp(); | 841 base::TimeTicks released_time = captured_events[1]->time_stamp(); |
| 843 EXPECT_EQ(released_time - pressed_time, | 842 EXPECT_EQ(released_time - pressed_time, |
| 844 gesture_detector_config_.longpress_timeout); | 843 gesture_detector_config_.longpress_timeout); |
| 845 } | 844 } |
| 846 | 845 |
| 847 // Single-tapping should send a touch press and release through to the location | 846 // Single-tapping should send a touch press and release through to the location |
| 848 // of the last successful touch exploration if the grace period has not | 847 // of the last successful touch exploration if the grace period has not |
| 849 // elapsed. | 848 // elapsed. |
| 850 TEST_F(TouchExplorationTest, SingleTap) { | 849 TEST_F(TouchExplorationTest, SingleTap) { |
| 851 SwitchTouchExplorationMode(true); | 850 SwitchTouchExplorationMode(true); |
| 852 | 851 |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1040 ui::TouchEvent split_tap_release( | 1039 ui::TouchEvent split_tap_release( |
| 1041 ui::ET_TOUCH_RELEASED, second_touch_location, 1, Now()); | 1040 ui::ET_TOUCH_RELEASED, second_touch_location, 1, Now()); |
| 1042 generator_->Dispatch(&split_tap_release); | 1041 generator_->Dispatch(&split_tap_release); |
| 1043 EXPECT_FALSE(IsInNoFingersDownState()); | 1042 EXPECT_FALSE(IsInNoFingersDownState()); |
| 1044 EXPECT_TRUE(IsInTouchToMouseMode()); | 1043 EXPECT_TRUE(IsInTouchToMouseMode()); |
| 1045 | 1044 |
| 1046 std::vector<ui::LocatedEvent*> captured_events = GetCapturedLocatedEvents(); | 1045 std::vector<ui::LocatedEvent*> captured_events = GetCapturedLocatedEvents(); |
| 1047 ASSERT_EQ(2U, captured_events.size()); | 1046 ASSERT_EQ(2U, captured_events.size()); |
| 1048 EXPECT_EQ(ui::ET_TOUCH_PRESSED, captured_events[0]->type()); | 1047 EXPECT_EQ(ui::ET_TOUCH_PRESSED, captured_events[0]->type()); |
| 1049 EXPECT_EQ(initial_touch_location, captured_events[0]->location()); | 1048 EXPECT_EQ(initial_touch_location, captured_events[0]->location()); |
| 1050 base::TimeDelta pressed_time = captured_events[0]->time_stamp(); | 1049 base::TimeTicks pressed_time = captured_events[0]->time_stamp(); |
| 1051 EXPECT_EQ(ui::ET_TOUCH_RELEASED, captured_events[1]->type()); | 1050 EXPECT_EQ(ui::ET_TOUCH_RELEASED, captured_events[1]->type()); |
| 1052 EXPECT_EQ(initial_touch_location, captured_events[1]->location()); | 1051 EXPECT_EQ(initial_touch_location, captured_events[1]->location()); |
| 1053 base::TimeDelta released_time = captured_events[1]->time_stamp(); | 1052 base::TimeTicks released_time = captured_events[1]->time_stamp(); |
| 1054 EXPECT_EQ(gesture_detector_config_.longpress_timeout, | 1053 EXPECT_EQ(gesture_detector_config_.longpress_timeout, |
| 1055 released_time - pressed_time); | 1054 released_time - pressed_time); |
| 1056 } | 1055 } |
| 1057 | 1056 |
| 1058 // If split tap is started but the touch explore finger is released first, | 1057 // If split tap is started but the touch explore finger is released first, |
| 1059 // there should still be a touch press and release sent to the location of | 1058 // there should still be a touch press and release sent to the location of |
| 1060 // the last successful touch exploration. If the remaining finger is held | 1059 // the last successful touch exploration. If the remaining finger is held |
| 1061 // as a longpress, there should be a delay between the sent touch and release | 1060 // as a longpress, there should be a delay between the sent touch and release |
| 1062 // events (right click).All fingers should be released after the click | 1061 // events (right click).All fingers should be released after the click |
| 1063 // goes through. | 1062 // goes through. |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1087 simulated_clock_->Advance(gesture_detector_config_.longpress_timeout); | 1086 simulated_clock_->Advance(gesture_detector_config_.longpress_timeout); |
| 1088 ui::TouchEvent split_tap_release( | 1087 ui::TouchEvent split_tap_release( |
| 1089 ui::ET_TOUCH_RELEASED, second_touch_location, 1, Now()); | 1088 ui::ET_TOUCH_RELEASED, second_touch_location, 1, Now()); |
| 1090 generator_->Dispatch(&split_tap_release); | 1089 generator_->Dispatch(&split_tap_release); |
| 1091 EXPECT_TRUE(IsInTouchToMouseMode()); | 1090 EXPECT_TRUE(IsInTouchToMouseMode()); |
| 1092 | 1091 |
| 1093 std::vector<ui::LocatedEvent*> captured_events = GetCapturedLocatedEvents(); | 1092 std::vector<ui::LocatedEvent*> captured_events = GetCapturedLocatedEvents(); |
| 1094 ASSERT_EQ(2U, captured_events.size()); | 1093 ASSERT_EQ(2U, captured_events.size()); |
| 1095 EXPECT_EQ(ui::ET_TOUCH_PRESSED, captured_events[0]->type()); | 1094 EXPECT_EQ(ui::ET_TOUCH_PRESSED, captured_events[0]->type()); |
| 1096 EXPECT_EQ(initial_touch_location, captured_events[0]->location()); | 1095 EXPECT_EQ(initial_touch_location, captured_events[0]->location()); |
| 1097 base::TimeDelta pressed_time = captured_events[0]->time_stamp(); | 1096 base::TimeTicks pressed_time = captured_events[0]->time_stamp(); |
| 1098 EXPECT_EQ(ui::ET_TOUCH_RELEASED, captured_events[1]->type()); | 1097 EXPECT_EQ(ui::ET_TOUCH_RELEASED, captured_events[1]->type()); |
| 1099 EXPECT_EQ(initial_touch_location, captured_events[1]->location()); | 1098 EXPECT_EQ(initial_touch_location, captured_events[1]->location()); |
| 1100 base::TimeDelta released_time = captured_events[1]->time_stamp(); | 1099 base::TimeTicks released_time = captured_events[1]->time_stamp(); |
| 1101 EXPECT_EQ(gesture_detector_config_.longpress_timeout, | 1100 EXPECT_EQ(gesture_detector_config_.longpress_timeout, |
| 1102 released_time - pressed_time); | 1101 released_time - pressed_time); |
| 1103 } | 1102 } |
| 1104 | 1103 |
| 1105 TEST_F(TouchExplorationTest, SplitTapMultiFinger) { | 1104 TEST_F(TouchExplorationTest, SplitTapMultiFinger) { |
| 1106 SwitchTouchExplorationMode(true); | 1105 SwitchTouchExplorationMode(true); |
| 1107 gfx::Point initial_touch_location(11, 12); | 1106 gfx::Point initial_touch_location(11, 12); |
| 1108 gfx::Point second_touch_location(33, 34); | 1107 gfx::Point second_touch_location(33, 34); |
| 1109 gfx::Point third_touch_location(16, 17); | 1108 gfx::Point third_touch_location(16, 17); |
| 1110 | 1109 |
| (...skipping 779 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1890 generator_->PressTouch(); | 1889 generator_->PressTouch(); |
| 1891 generator_->MoveTouch(initial_press); | 1890 generator_->MoveTouch(initial_press); |
| 1892 generator_->MoveTouch(*point); | 1891 generator_->MoveTouch(*point); |
| 1893 generator_->ReleaseTouch(); | 1892 generator_->ReleaseTouch(); |
| 1894 ASSERT_EQ(1U, delegate_.NumExitScreenSounds()); | 1893 ASSERT_EQ(1U, delegate_.NumExitScreenSounds()); |
| 1895 delegate_.ResetCountersToZero(); | 1894 delegate_.ResetCountersToZero(); |
| 1896 } | 1895 } |
| 1897 } | 1896 } |
| 1898 | 1897 |
| 1899 } // namespace ui | 1898 } // namespace ui |
| OLD | NEW |