summaryrefslogtreecommitdiffstats
path: root/ash
diff options
context:
space:
mode:
authortdresser@chromium.org <tdresser@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-17 13:52:45 +0000
committertdresser@chromium.org <tdresser@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-17 13:52:45 +0000
commit93425b44c4ea18ca58e3f5585d92795628bc5355 (patch)
tree0d3c398b08ab343ced67a07c48c229b535a8a1ae /ash
parent1895cda784ed3c8a899379f32b334761d386e6ed (diff)
downloadchromium_src-93425b44c4ea18ca58e3f5585d92795628bc5355.zip
chromium_src-93425b44c4ea18ca58e3f5585d92795628bc5355.tar.gz
chromium_src-93425b44c4ea18ca58e3f5585d92795628bc5355.tar.bz2
Three Finger Swipe
Implements a three finger swipe gesture event for the aura Gesture Recognizer. BUG=122807 TEST=SystemGestureEventFilterTest.TapOutsideRootWindow, GestureRecognizerTest.GestureEventThreeFingerSwipe Review URL: http://codereview.chromium.org/10037012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@132570 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash')
-rw-r--r--ash/wm/system_gesture_event_filter.cc3
-rw-r--r--ash/wm/system_gesture_event_filter_unittest.cc27
2 files changed, 29 insertions, 1 deletions
diff --git a/ash/wm/system_gesture_event_filter.cc b/ash/wm/system_gesture_event_filter.cc
index 46f2ea17..1568052 100644
--- a/ash/wm/system_gesture_event_filter.cc
+++ b/ash/wm/system_gesture_event_filter.cc
@@ -37,6 +37,8 @@ ui::TouchStatus SystemGestureEventFilter::PreHandleTouchEvent(
ui::GestureStatus SystemGestureEventFilter::PreHandleGestureEvent(
aura::Window* target, aura::GestureEvent* event) {
// TODO(tdresser) handle system level gesture events
+ if (event->type() == ui::ET_GESTURE_THREE_FINGER_SWIPE)
+ return ui::GESTURE_STATUS_CONSUMED;
if (target == Shell::GetRootWindow())
return ui::GESTURE_STATUS_CONSUMED;
return ui::GESTURE_STATUS_UNKNOWN;
@@ -44,4 +46,3 @@ ui::GestureStatus SystemGestureEventFilter::PreHandleGestureEvent(
} // namespace internal
} // namespace ash
-
diff --git a/ash/wm/system_gesture_event_filter_unittest.cc b/ash/wm/system_gesture_event_filter_unittest.cc
index 35c7596..8e26aec 100644
--- a/ash/wm/system_gesture_event_filter_unittest.cc
+++ b/ash/wm/system_gesture_event_filter_unittest.cc
@@ -47,4 +47,31 @@ TEST_F(SystemGestureEventFilterTest, TapOutsideRootWindow) {
EXPECT_FALSE(consumed);
}
+// Ensure that a three fingered swipe is consumed by the system event handler.
+TEST_F(SystemGestureEventFilterTest, ThreeFingerSwipe) {
+ aura::RootWindow* root_window = Shell::GetRootWindow();
+
+ const int kTouchId = 5;
+
+ // Get a target for kTouchId
+ aura::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(100, 100), kTouchId,
+ base::Time::NowFromSystemTime() - base::Time());
+ root_window->DispatchTouchEvent(&press);
+
+ aura::GestureEvent* event = new aura::GestureEvent(
+ ui::ET_GESTURE_THREE_FINGER_SWIPE, 0, 0, 0, base::Time::Now(),
+ 0, 0, 1 << kTouchId);
+ bool consumed = root_window->DispatchGestureEvent(event);
+
+ EXPECT_TRUE(consumed);
+
+ // The system event filter shouldn't filter out events like tap downs.
+ aura::GestureEvent* event2 = new aura::GestureEvent(
+ ui::ET_GESTURE_TAP_DOWN, 0, 0, 0, base::Time::Now(),
+ 0, 0, 1 << kTouchId);
+ consumed = root_window->DispatchGestureEvent(event2);
+
+ EXPECT_FALSE(consumed);
+}
+
} // namespace ash