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

Unified Diff: ui/chromeos/touch_exploration_controller_unittest.cc

Issue 334223007: Fix multi-finger click no entry bug in TouchExplorationController (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@split_tap
Patch Set: formatting fixes Created 6 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/chromeos/touch_exploration_controller.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/chromeos/touch_exploration_controller_unittest.cc
diff --git a/ui/chromeos/touch_exploration_controller_unittest.cc b/ui/chromeos/touch_exploration_controller_unittest.cc
index 124abd025175196f29599038cacde16c9eec7759..07c05fbdca083450db3fb17bf2e27ab6f2373331 100644
--- a/ui/chromeos/touch_exploration_controller_unittest.cc
+++ b/ui/chromeos/touch_exploration_controller_unittest.cc
@@ -819,7 +819,6 @@ TEST_F(TouchExplorationTest, SplitTapLongPress) {
// Tap and hold at one location, and get a mouse move event in touch explore.
EnterTouchExplorationModeAtLocation(initial_touch_location);
-
std::vector<ui::LocatedEvent*> events =
GetCapturedEventsOfType(ui::ET_MOUSE_MOVED);
ASSERT_EQ(1U, events.size());
@@ -864,7 +863,6 @@ TEST_F(TouchExplorationTest, SplitTapReleaseLongPress) {
// Tap and hold at one location, and get a mouse move event in touch explore.
EnterTouchExplorationModeAtLocation(initial_touch_location);
-
std::vector<ui::LocatedEvent*> events =
GetCapturedEventsOfType(ui::ET_MOUSE_MOVED);
ASSERT_EQ(1U, events.size());
@@ -899,5 +897,59 @@ TEST_F(TouchExplorationTest, SplitTapReleaseLongPress) {
released_time - pressed_time);
}
+TEST_F(TouchExplorationTest, SplitTapLongPressMultiFinger) {
+ SwitchTouchExplorationMode(true);
+ gfx::Point initial_touch_location(11, 12);
+ gfx::Point second_touch_location(33, 34);
+ gfx::Point third_touch_location(16, 17);
+
+ // Tap and hold at one location, and get a mouse move event in touch explore.
+ EnterTouchExplorationModeAtLocation(initial_touch_location);
+
+ std::vector<ui::LocatedEvent*> events =
+ GetCapturedEventsOfType(ui::ET_MOUSE_MOVED);
+ ASSERT_EQ(1U, events.size());
+
+ EXPECT_EQ(initial_touch_location, events[0]->location());
+ EXPECT_TRUE(events[0]->flags() & ui::EF_IS_SYNTHESIZED);
+ EXPECT_TRUE(events[0]->flags() & ui::EF_TOUCH_ACCESSIBILITY);
+ ClearCapturedEvents();
+
+ // Now tap at a different location and hold for long press.
+ ui::TouchEvent split_tap_press(
+ ui::ET_TOUCH_PRESSED, second_touch_location, 1, Now());
+ generator_->Dispatch(&split_tap_press);
+ simulated_clock_->Advance(gesture_detector_config_.longpress_timeout);
+
+ // Placing a third finger on the screen should be discarded and not affect
+ // the events passed through.
+ ui::TouchEvent third_press(
+ ui::ET_TOUCH_PRESSED, third_touch_location, 2, Now());
+ generator_->Dispatch(&third_press);
+
+ // When all three fingers are released, there should be only two captured
+ // events: touch press and touch release. All fingers should then be up.
+ ui::TouchEvent touch_explore_release(
+ ui::ET_TOUCH_RELEASED, initial_touch_location, 0, Now());
+ generator_->Dispatch(&touch_explore_release);
+ ui::TouchEvent split_tap_release(
+ ui::ET_TOUCH_RELEASED, second_touch_location, 1, Now());
+ generator_->Dispatch(&split_tap_release);
+ ui::TouchEvent third_tap_release(
+ ui::ET_TOUCH_RELEASED, third_touch_location, 2, Now());
+ generator_->Dispatch(&third_tap_release);
+
+ const ScopedVector<ui::LocatedEvent>& captured_events = GetCapturedEvents();
+ ASSERT_EQ(2U, captured_events.size());
+ EXPECT_EQ(ui::ET_TOUCH_PRESSED, captured_events[0]->type());
+ EXPECT_EQ(initial_touch_location, captured_events[0]->location());
+ base::TimeDelta pressed_time = captured_events[0]->time_stamp();
+ EXPECT_EQ(ui::ET_TOUCH_RELEASED, captured_events[1]->type());
+ EXPECT_EQ(initial_touch_location, captured_events[1]->location());
+ base::TimeDelta released_time = captured_events[1]->time_stamp();
+ EXPECT_EQ(gesture_detector_config_.longpress_timeout,
+ released_time - pressed_time);
+ EXPECT_TRUE(IsInNoFingersDownState());
+}
} // namespace ui
« no previous file with comments | « ui/chromeos/touch_exploration_controller.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698