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

Unified Diff: content/browser/renderer_host/input/mouse_wheel_event_queue_unittest.cc

Issue 1833013002: Fix scrolling rails on Mac OSX. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 | « content/browser/renderer_host/input/mouse_wheel_event_queue.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/renderer_host/input/mouse_wheel_event_queue_unittest.cc
diff --git a/content/browser/renderer_host/input/mouse_wheel_event_queue_unittest.cc b/content/browser/renderer_host/input/mouse_wheel_event_queue_unittest.cc
index f14b6e6e2aabb6a2e6c1ed38a9b74a04ec81151f..d86956be78e0b8581ed5eb8ca7a1a6d98e0f376b 100644
--- a/content/browser/renderer_host/input/mouse_wheel_event_queue_unittest.cc
+++ b/content/browser/renderer_host/input/mouse_wheel_event_queue_unittest.cc
@@ -74,6 +74,10 @@ base::TimeDelta DefaultScrollEndTimeoutDelay() {
EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \
EXPECT_FALSE(event->data.scrollUpdate.inertial);
+#define EXPECT_GESTURE_SCROLL_UPDATE(event) \
+ EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \
+ EXPECT_FALSE(event->data.scrollUpdate.inertial);
+
#define EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(event) \
EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \
EXPECT_TRUE(event->data.scrollUpdate.inertial);
@@ -191,12 +195,25 @@ class MouseWheelEventQueueTest : public testing::Test,
float dX,
float dY,
int modifiers,
- bool high_precision) {
- queue_->QueueEvent(MouseWheelEventWithLatencyInfo(
- SyntheticWebMouseWheelEventBuilder::Build(
- x, y, global_x, global_y, dX, dY, modifiers, high_precision)));
+ bool high_precision,
+ WebInputEvent::RailsMode rails_mode) {
+ WebMouseWheelEvent event = SyntheticWebMouseWheelEventBuilder::Build(
+ x, y, global_x, global_y, dX, dY, modifiers, high_precision);
+ event.railsMode = rails_mode;
+ queue_->QueueEvent(MouseWheelEventWithLatencyInfo(event));
}
+ void SendMouseWheel(float x,
+ float y,
+ float global_x,
+ float global_y,
+ float dX,
+ float dY,
+ int modifiers,
+ bool high_precision) {
+ SendMouseWheel(x, y, global_x, global_y, dX, dY, modifiers, high_precision,
+ WebInputEvent::RailsModeFree);
+ }
void SendMouseWheelWithPhase(
float x,
float y,
@@ -475,4 +492,54 @@ TEST_F(MouseWheelEventQueueTest, GestureSendingInterrupted) {
EXPECT_EQ(2U, GetAndResetSentEventCount());
}
+TEST_F(MouseWheelEventQueueTest, GestureRailScrolling) {
+ SetUpForGestureTesting(true);
+ const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels;
+
+ SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
+ kWheelScrollGlobalY, 1, 1, 0, false,
+ WebInputEvent::RailsModeHorizontal);
+ EXPECT_EQ(0U, queued_event_count());
+ EXPECT_TRUE(event_in_flight());
+ EXPECT_EQ(1U, GetAndResetSentEventCount());
+
+ // Receive an ACK for the mouse wheel event.
+ SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_EQ(0U, queued_event_count());
+ EXPECT_FALSE(event_in_flight());
+ EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type);
+ EXPECT_EQ(1U, GetAndResetAckedEventCount());
+ EXPECT_EQ(2U, all_sent_events().size());
+ EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0));
+ EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1));
+ EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaX);
+ EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaY);
+ EXPECT_EQ(2U, GetAndResetSentEventCount());
+
+ RunTasksAndWait(DefaultScrollEndTimeoutDelay() * 2);
+ EXPECT_EQ(1U, all_sent_events().size());
+ EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0));
+ EXPECT_EQ(1U, GetAndResetSentEventCount());
+
+ SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
+ kWheelScrollGlobalY, 1, 1, 0, false,
+ WebInputEvent::RailsModeVertical);
+ EXPECT_EQ(0U, queued_event_count());
+ EXPECT_TRUE(event_in_flight());
+ EXPECT_EQ(1U, GetAndResetSentEventCount());
+
+ // Receive an ACK for the mouse wheel event.
+ SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_EQ(0U, queued_event_count());
+ EXPECT_FALSE(event_in_flight());
+ EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type);
+ EXPECT_EQ(1U, GetAndResetAckedEventCount());
+ EXPECT_EQ(2U, all_sent_events().size());
+ EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0));
+ EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1));
+ EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX);
+ EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY);
+ EXPECT_EQ(2U, GetAndResetSentEventCount());
+}
+
} // namespace content
« no previous file with comments | « content/browser/renderer_host/input/mouse_wheel_event_queue.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698