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

Unified Diff: ui/chromeos/touch_exploration_controller_unittest.cc

Issue 410783002: Corner Passthrough for Accessibility (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@side-gestures
Patch Set: Added tests and Rebase off Master Created 6 years, 5 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
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 b00814b1eb6efc7f6d197292016f8956e693d1a7..70c2c2a27abb722d4ef5c2d605d1a34ebf8528f8 100644
--- a/ui/chromeos/touch_exploration_controller_unittest.cc
+++ b/ui/chromeos/touch_exploration_controller_unittest.cc
@@ -1634,4 +1634,100 @@ TEST_F(TouchExplorationTest, InBoundariesTouchExploration) {
EXPECT_TRUE(IsInTouchToMouseMode());
}
+// Corner passthrough should turn on if the user first holds down on either the
+// right or left corner past a delay and then places a finger anywhere else on
+// the screen.
+TEST_F(TouchExplorationTest, ActivateLeftCornerPassthrough) {
+ SwitchTouchExplorationMode(true);
+
+ gfx::Rect window = BoundsOfRootWindowInDIP();
+ gfx::Point left_corner_press(10,
aboxhall 2014/07/24 18:34:16 nit: left_corner rather than left_corner_press.
lisayin 2014/07/25 20:11:57 Done.
+ window.bottom() - GetMaxDistanceFromEdge() / 2);
+ ui::TouchEvent first_press(
aboxhall 2014/07/24 18:34:16 Everything below this line is common to this and t
lisayin 2014/07/25 20:11:57 Done.
+ ui::ET_TOUCH_PRESSED,
+ left_corner_press,
+ 0,
+ Now());
+ generator_->Dispatch(&first_press);
+ EXPECT_FALSE(IsInGestureInProgressState());
+ EXPECT_FALSE(IsInSlideGestureState());
+ EXPECT_FALSE(IsInTouchToMouseMode());
aboxhall 2014/07/24 18:34:16 Explicitly test for CORNER_PASSTHROUGH mode here?
lisayin 2014/07/25 20:11:57 Done.
+
+ AdvanceSimulatedTimePastTapDelay();
aboxhall 2014/07/24 18:34:16 Should this be the corner passthrough delay instea
lisayin 2014/07/25 20:11:57 Done.
+ EXPECT_FALSE(IsInGestureInProgressState());
+ EXPECT_FALSE(IsInSlideGestureState());
+ EXPECT_FALSE(IsInTouchToMouseMode());
+
+ // The following events should be passed through.
+ gfx::Point middle_screen(window.right() / 2, window.bottom() / 2);
+ ui::TouchEvent middle_press(
+ ui::ET_TOUCH_PRESSED, middle_screen, 1, Now());
+ generator_->Dispatch(&middle_press);
+ generator_->ReleaseTouchId(1);
+ generator_->PressTouchId(1);
+ EXPECT_FALSE(IsInGestureInProgressState());
+ EXPECT_FALSE(IsInSlideGestureState());
+ EXPECT_FALSE(IsInTouchToMouseMode());
+
+ std::vector<ui::LocatedEvent*> captured_events = GetCapturedLocatedEvents();
+ ASSERT_EQ(3U, captured_events.size());
+ EXPECT_EQ(ui::ET_TOUCH_PRESSED, captured_events[0]->type());
+ EXPECT_EQ(ui::ET_TOUCH_RELEASED, captured_events[1]->type());
+ EXPECT_EQ(ui::ET_TOUCH_PRESSED, captured_events[2]->type());
+ generator_->ReleaseTouchId(1);
+ ClearCapturedEvents();
+
+ generator_->ReleaseTouchId(0);
+ captured_events = GetCapturedLocatedEvents();
+ ASSERT_EQ(0U, captured_events.size());
+ EXPECT_FALSE(IsInGestureInProgressState());
+ EXPECT_FALSE(IsInSlideGestureState());
+ EXPECT_FALSE(IsInTouchToMouseMode());
+}
+
+TEST_F(TouchExplorationTest, ActivateRightCornerPassthrough) {
+ SwitchTouchExplorationMode(true);
+
+ gfx::Rect window = BoundsOfRootWindowInDIP();
+ gfx::Point right_corner_press(window.right() - GetMaxDistanceFromEdge() / 2,
+ window.bottom() - GetMaxDistanceFromEdge() / 2);
+ ui::TouchEvent first_press(
+ ui::ET_TOUCH_PRESSED, right_corner_press, 0, Now());
+ generator_->Dispatch(&first_press);
+ EXPECT_FALSE(IsInGestureInProgressState());
+ EXPECT_FALSE(IsInSlideGestureState());
+ EXPECT_FALSE(IsInTouchToMouseMode());
+
+ AdvanceSimulatedTimePastTapDelay();
+ EXPECT_FALSE(IsInGestureInProgressState());
+ EXPECT_FALSE(IsInSlideGestureState());
+ EXPECT_FALSE(IsInTouchToMouseMode());
+
+ // The following events should be passed through.
+ gfx::Point middle_screen(window.right() / 2, window.bottom() / 2);
+ ui::TouchEvent middle_press(
+ ui::ET_TOUCH_PRESSED, middle_screen, 1, Now());
+ generator_->Dispatch(&middle_press);
+ generator_->ReleaseTouchId(1);
+ generator_->PressTouchId(1);
+ EXPECT_FALSE(IsInGestureInProgressState());
+ EXPECT_FALSE(IsInSlideGestureState());
+ EXPECT_FALSE(IsInTouchToMouseMode());
+
+ std::vector<ui::LocatedEvent*> captured_events = GetCapturedLocatedEvents();
+ ASSERT_EQ(3U, captured_events.size());
+ EXPECT_EQ(ui::ET_TOUCH_PRESSED, captured_events[0]->type());
+ EXPECT_EQ(ui::ET_TOUCH_RELEASED, captured_events[1]->type());
+ EXPECT_EQ(ui::ET_TOUCH_PRESSED, captured_events[2]->type());
+ generator_->ReleaseTouchId(1);
+ ClearCapturedEvents();
+
+ generator_->ReleaseTouchId(0);
+ captured_events = GetCapturedLocatedEvents();
+ ASSERT_EQ(0U, captured_events.size());
+ EXPECT_FALSE(IsInGestureInProgressState());
+ EXPECT_FALSE(IsInSlideGestureState());
+ EXPECT_FALSE(IsInTouchToMouseMode());
+}
+
} // namespace ui
« ui/chromeos/touch_exploration_controller.cc ('K') | « ui/chromeos/touch_exploration_controller.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698