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

Unified Diff: chrome/browser/renderer_host/render_widget_host_unittest.cc

Issue 536059: Mac: Coalesce scroll events. (Closed)
Patch Set: test Created 10 years, 11 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 | « chrome/browser/renderer_host/render_widget_host.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/renderer_host/render_widget_host_unittest.cc
diff --git a/chrome/browser/renderer_host/render_widget_host_unittest.cc b/chrome/browser/renderer_host/render_widget_host_unittest.cc
index dc411ddf94ec5b4330b06f8c4a2faae521dab1f4..e1038496e8dafd6dd7dd1584b6fe94fec90e9d92 100644
--- a/chrome/browser/renderer_host/render_widget_host_unittest.cc
+++ b/chrome/browser/renderer_host/render_widget_host_unittest.cc
@@ -14,6 +14,7 @@
#include "testing/gtest/include/gtest/gtest.h"
using WebKit::WebInputEvent;
+using WebKit::WebMouseWheelEvent;
// RenderWidgetHostProcess -----------------------------------------------------
@@ -119,7 +120,7 @@ class TestView : public TestRenderWidgetHostView {
DISALLOW_COPY_AND_ASSIGN(TestView);
};
-// MockRenderWidgetHostTest ----------------------------------------------------
+// MockRenderWidgetHost ----------------------------------------------------
class MockRenderWidgetHost : public RenderWidgetHost {
public:
@@ -220,6 +221,15 @@ class RenderWidgetHostTest : public testing::Test {
host_->ForwardKeyboardEvent(key_event);
}
+ void SimulateWheelEvent(float dX, float dY, int modifiers) {
+ WebMouseWheelEvent wheel_event;
+ wheel_event.type = WebInputEvent::MouseWheel;
+ wheel_event.deltaX = dX;
+ wheel_event.deltaY = dY;
+ wheel_event.modifiers = modifiers;
+ host_->ForwardWheelEvent(wheel_event);
+ }
+
MessageLoopForUI message_loop_;
scoped_ptr<TestingProfile> profile_;
@@ -556,3 +566,37 @@ TEST_F(RenderWidgetHostTest, PreHandleRawKeyDownEvent) {
EXPECT_TRUE(host_->unhandled_keyboard_event_called());
EXPECT_EQ(WebInputEvent::KeyUp, host_->unhandled_keyboard_event_type());
}
+
+TEST_F(RenderWidgetHostTest, CoalescesWheelEvents) {
+ process_->sink().ClearMessages();
+
+ // Simulate wheel events.
+ SimulateWheelEvent(0, -5, 0); // sent directly
+ SimulateWheelEvent(0, -10, 0); // enqueued
+ SimulateWheelEvent(8, -6, 0); // coalesced into previous event
+ SimulateWheelEvent(9, -7, 1); // enqueued, different modifiers
+
+ // Check that only the first event was sent.
+ EXPECT_EQ(1U, process_->sink().message_count());
+ EXPECT_TRUE(process_->sink().GetUniqueMessageMatching(
+ ViewMsg_HandleInputEvent::ID));
+ process_->sink().ClearMessages();
+
+ // Check that the ACK sends the second message.
+ SendInputEventACK(WebInputEvent::MouseWheel, true);
+ EXPECT_EQ(1U, process_->sink().message_count());
+ EXPECT_TRUE(process_->sink().GetUniqueMessageMatching(
+ ViewMsg_HandleInputEvent::ID));
+ process_->sink().ClearMessages();
+
+ // One more time.
+ SendInputEventACK(WebInputEvent::MouseWheel, true);
+ EXPECT_EQ(1U, process_->sink().message_count());
+ EXPECT_TRUE(process_->sink().GetUniqueMessageMatching(
+ ViewMsg_HandleInputEvent::ID));
+ process_->sink().ClearMessages();
+
+ // After the final ack, the queue should be empty.
+ SendInputEventACK(WebInputEvent::MouseWheel, true);
+ EXPECT_EQ(0U, process_->sink().message_count());
+}
« no previous file with comments | « chrome/browser/renderer_host/render_widget_host.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698