Index: content/browser/renderer_host/input/mouse_wheel_rails_filter_unittest_mac.cc |
diff --git a/content/browser/renderer_host/input/mouse_wheel_rails_filter_unittest_mac.cc b/content/browser/renderer_host/input/mouse_wheel_rails_filter_unittest_mac.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7ef53b2e15cdbbf3ad863b6b9e18115d238afedc |
--- /dev/null |
+++ b/content/browser/renderer_host/input/mouse_wheel_rails_filter_unittest_mac.cc |
@@ -0,0 +1,65 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/memory/scoped_ptr.h" |
+#include "content/browser/renderer_host/input/mouse_wheel_rails_filter_mac.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+using blink::WebInputEvent; |
+using blink::WebMouseWheelEvent; |
+ |
+namespace content { |
+namespace { |
+ |
+WebMouseWheelEvent MakeEvent(WebMouseWheelEvent::Phase phase, |
+ float delta_x, |
+ float delta_y) { |
+ WebMouseWheelEvent event; |
+ event.phase = phase; |
+ event.deltaX = delta_x; |
+ event.deltaY = delta_y; |
+ return event; |
+} |
+ |
+TEST(MouseWheelRailsFilterMacTest, Functionality) { |
+ WebInputEvent::RailsMode mode; |
+ scoped_ptr<MouseWheelRailsFilterMac> filter(new MouseWheelRailsFilterMac); |
tdresser
2015/03/19 13:03:41
Can't this just be stack allocated?
ccameron
2015/03/19 19:33:14
Yup, it can. Habit... done.
|
+ |
+ // Start with a mostly-horizontal event and see that it is locked |
+ // horizontally and continues to be locked. |
+ mode = |
+ filter->UpdateRailsMode(MakeEvent(WebMouseWheelEvent::PhaseBegan, 2, 1)); |
+ EXPECT_EQ(mode, WebInputEvent::RailsModeHorizontal); |
+ mode = filter->UpdateRailsMode( |
+ MakeEvent(WebMouseWheelEvent::PhaseChanged, 2, 2)); |
+ EXPECT_EQ(mode, WebInputEvent::RailsModeHorizontal); |
+ mode = filter->UpdateRailsMode( |
+ MakeEvent(WebMouseWheelEvent::PhaseChanged, 10, -4)); |
+ EXPECT_EQ(mode, WebInputEvent::RailsModeHorizontal); |
+ |
+ // Change from horizontal to vertical and back. |
+ mode = |
+ filter->UpdateRailsMode(MakeEvent(WebMouseWheelEvent::PhaseBegan, 4, 1)); |
+ EXPECT_EQ(mode, WebInputEvent::RailsModeHorizontal); |
+ mode = filter->UpdateRailsMode( |
+ MakeEvent(WebMouseWheelEvent::PhaseChanged, 3, 4)); |
+ EXPECT_EQ(mode, WebInputEvent::RailsModeHorizontal); |
+ mode = filter->UpdateRailsMode( |
+ MakeEvent(WebMouseWheelEvent::PhaseChanged, 1, 4)); |
+ EXPECT_EQ(mode, WebInputEvent::RailsModeVertical); |
+ mode = filter->UpdateRailsMode( |
+ MakeEvent(WebMouseWheelEvent::PhaseChanged, 10, 0)); |
+ EXPECT_EQ(mode, WebInputEvent::RailsModeHorizontal); |
+ |
+ // Make sure zeroes don't break things. |
+ mode = filter->UpdateRailsMode( |
+ MakeEvent(WebMouseWheelEvent::PhaseChanged, 0, 0)); |
+ EXPECT_EQ(mode, WebInputEvent::RailsModeFree); |
+ mode = |
+ filter->UpdateRailsMode(MakeEvent(WebMouseWheelEvent::PhaseBegan, 0, 0)); |
+ EXPECT_EQ(mode, WebInputEvent::RailsModeFree); |
+} |
+ |
+} // namespace |
+} // namespace content |