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

Unified Diff: ui/events/blink/blink_event_util_unittest.cc

Issue 2605193002: Fix mouse wheel over-scrolls when display is scaled and scroll is paginated (Closed)
Patch Set: More unittests. Created 3 years, 10 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/events/blink/blink_event_util_unittest.cc
diff --git a/ui/events/blink/blink_event_util_unittest.cc b/ui/events/blink/blink_event_util_unittest.cc
index 1bee59157f5832fa87e92ad83c5ee0bbe761ba49..260f63682f5b71207f0cf759307bf7d4a9752ea5 100644
--- a/ui/events/blink/blink_event_util_unittest.cc
+++ b/ui/events/blink/blink_event_util_unittest.cc
@@ -8,6 +8,7 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/WebKit/public/platform/WebGestureEvent.h"
#include "third_party/WebKit/public/platform/WebInputEvent.h"
+#include "third_party/WebKit/public/platform/WebMouseWheelEvent.h"
#include "ui/events/gesture_event_details.h"
namespace ui {
@@ -28,6 +29,108 @@ TEST(BlinkEventUtilTest, NoScalingWith1DSF) {
EXPECT_TRUE(ScaleWebInputEvent(event, 2.f));
}
+TEST(BlinkEventUtilTest, NonPaginatedWebMouseWheelEvent) {
+ blink::WebMouseWheelEvent event(blink::WebInputEvent::MouseWheel,
+ blink::WebInputEvent::NoModifiers,
+ blink::WebInputEvent::TimeStampForTesting);
+ event.deltaX = 1.f;
+ event.deltaY = 1.f;
+ event.wheelTicksX = 1.f;
+ event.wheelTicksY = 1.f;
+ event.scrollByPage = false;
+ std::unique_ptr<blink::WebInputEvent> webEvent =
+ ScaleWebInputEvent(event, 2.f);
+ EXPECT_TRUE(webEvent);
+ blink::WebMouseWheelEvent* mouseWheelEvent =
+ static_cast<blink::WebMouseWheelEvent*>(webEvent.get());
+ EXPECT_EQ(2.f, mouseWheelEvent->deltaX);
+ EXPECT_EQ(2.f, mouseWheelEvent->deltaY);
+ EXPECT_EQ(2.f, mouseWheelEvent->wheelTicksX);
+ EXPECT_EQ(2.f, mouseWheelEvent->wheelTicksY);
+}
+
+TEST(BlinkEventUtilTest, PaginatedWebMouseWheelEvent) {
+ blink::WebMouseWheelEvent event(blink::WebInputEvent::MouseWheel,
+ blink::WebInputEvent::NoModifiers,
+ blink::WebInputEvent::TimeStampForTesting);
+ event.deltaX = 1.f;
+ event.deltaY = 1.f;
+ event.wheelTicksX = 1.f;
+ event.wheelTicksY = 1.f;
+ event.scrollByPage = true;
+ std::unique_ptr<blink::WebInputEvent> webEvent =
+ ScaleWebInputEvent(event, 2.f);
+ EXPECT_TRUE(webEvent);
+ blink::WebMouseWheelEvent* mouseWheelEvent =
+ static_cast<blink::WebMouseWheelEvent*>(webEvent.get());
+ EXPECT_EQ(1.f, mouseWheelEvent->deltaX);
+ EXPECT_EQ(1.f, mouseWheelEvent->deltaY);
+ EXPECT_EQ(1.f, mouseWheelEvent->wheelTicksX);
+ EXPECT_EQ(1.f, mouseWheelEvent->wheelTicksY);
+}
+
+TEST(BlinkEventUtilTest, NonPaginatedScrollBeginEvent) {
+ ui::GestureEventDetails details(ui::ET_GESTURE_SCROLL_BEGIN, 1, 1);
+ details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHSCREEN);
+ auto event =
+ CreateWebGestureEvent(details, base::TimeTicks(), gfx::PointF(1.f, 1.f),
+ gfx::PointF(1.f, 1.f), 0, 0U);
+ std::unique_ptr<blink::WebInputEvent> webEvent =
+ ScaleWebInputEvent(event, 2.f);
+ EXPECT_TRUE(webEvent);
+ blink::WebGestureEvent* gestureEvent =
+ static_cast<blink::WebGestureEvent*>(webEvent.get());
+ EXPECT_EQ(2.f, gestureEvent->data.scrollBegin.deltaXHint);
+ EXPECT_EQ(2.f, gestureEvent->data.scrollBegin.deltaYHint);
+}
+
+TEST(BlinkEventUtilTest, PaginatedScrollBeginEvent) {
+ ui::GestureEventDetails details(ui::ET_GESTURE_SCROLL_BEGIN, 1, 1,
+ ui::GestureEventDetails::ScrollUnits::PAGE);
+ details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHSCREEN);
+ auto event =
+ CreateWebGestureEvent(details, base::TimeTicks(), gfx::PointF(1.f, 1.f),
+ gfx::PointF(1.f, 1.f), 0, 0U);
+ std::unique_ptr<blink::WebInputEvent> webEvent =
+ ScaleWebInputEvent(event, 2.f);
+ EXPECT_TRUE(webEvent);
+ blink::WebGestureEvent* gestureEvent =
+ static_cast<blink::WebGestureEvent*>(webEvent.get());
+ EXPECT_EQ(1.f, gestureEvent->data.scrollBegin.deltaXHint);
+ EXPECT_EQ(1.f, gestureEvent->data.scrollBegin.deltaYHint);
+}
+
+TEST(BlinkEventUtilTest, NonPaginatedScrollUpdateEvent) {
+ ui::GestureEventDetails details(ui::ET_GESTURE_SCROLL_UPDATE, 1, 1);
+ details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHSCREEN);
+ auto event =
+ CreateWebGestureEvent(details, base::TimeTicks(), gfx::PointF(1.f, 1.f),
+ gfx::PointF(1.f, 1.f), 0, 0U);
+ std::unique_ptr<blink::WebInputEvent> webEvent =
+ ScaleWebInputEvent(event, 2.f);
+ EXPECT_TRUE(webEvent);
+ blink::WebGestureEvent* gestureEvent =
+ static_cast<blink::WebGestureEvent*>(webEvent.get());
+ EXPECT_EQ(2.f, gestureEvent->data.scrollUpdate.deltaX);
+ EXPECT_EQ(2.f, gestureEvent->data.scrollUpdate.deltaY);
+}
+
+TEST(BlinkEventUtilTest, PaginatedScrollUpdateEvent) {
+ ui::GestureEventDetails details(ui::ET_GESTURE_SCROLL_UPDATE, 1, 1,
+ ui::GestureEventDetails::ScrollUnits::PAGE);
+ details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHSCREEN);
+ auto event =
+ CreateWebGestureEvent(details, base::TimeTicks(), gfx::PointF(1.f, 1.f),
+ gfx::PointF(1.f, 1.f), 0, 0U);
+ std::unique_ptr<blink::WebInputEvent> webEvent =
+ ScaleWebInputEvent(event, 2.f);
+ EXPECT_TRUE(webEvent);
+ blink::WebGestureEvent* gestureEvent =
+ static_cast<blink::WebGestureEvent*>(webEvent.get());
+ EXPECT_EQ(1.f, gestureEvent->data.scrollUpdate.deltaX);
+ EXPECT_EQ(1.f, gestureEvent->data.scrollUpdate.deltaY);
+}
+
TEST(BlinkEventUtilTest, TouchEventCoalescing) {
blink::WebTouchPoint touch_point;
touch_point.id = 1;

Powered by Google App Engine
This is Rietveld 408576698