OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/events/blink/blink_event_util.h" | 5 #include "ui/events/blink/blink_event_util.h" |
6 | 6 |
7 #include "base/time/time.h" | 7 #include "base/time/time.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 #include "third_party/WebKit/public/platform/WebGestureEvent.h" | 9 #include "third_party/WebKit/public/platform/WebGestureEvent.h" |
10 #include "third_party/WebKit/public/platform/WebInputEvent.h" | 10 #include "third_party/WebKit/public/platform/WebInputEvent.h" |
| 11 #include "third_party/WebKit/public/platform/WebMouseWheelEvent.h" |
11 #include "ui/events/gesture_event_details.h" | 12 #include "ui/events/gesture_event_details.h" |
12 | 13 |
13 namespace ui { | 14 namespace ui { |
14 | 15 |
15 using BlinkEventUtilTest = testing::Test; | 16 using BlinkEventUtilTest = testing::Test; |
16 | 17 |
17 TEST(BlinkEventUtilTest, NoScalingWith1DSF) { | 18 TEST(BlinkEventUtilTest, NoScalingWith1DSF) { |
18 ui::GestureEventDetails details(ui::ET_GESTURE_SCROLL_UPDATE, 1, 1); | 19 ui::GestureEventDetails details(ui::ET_GESTURE_SCROLL_UPDATE, 1, 1); |
19 details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHSCREEN); | 20 details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHSCREEN); |
20 auto event = | 21 auto event = |
21 CreateWebGestureEvent(details, | 22 CreateWebGestureEvent(details, |
22 base::TimeTicks(), | 23 base::TimeTicks(), |
23 gfx::PointF(1.f, 1.f), | 24 gfx::PointF(1.f, 1.f), |
24 gfx::PointF(1.f, 1.f), | 25 gfx::PointF(1.f, 1.f), |
25 0, | 26 0, |
26 0U); | 27 0U); |
27 EXPECT_FALSE(ScaleWebInputEvent(event, 1.f)); | 28 EXPECT_FALSE(ScaleWebInputEvent(event, 1.f)); |
28 EXPECT_TRUE(ScaleWebInputEvent(event, 2.f)); | 29 EXPECT_TRUE(ScaleWebInputEvent(event, 2.f)); |
29 } | 30 } |
30 | 31 |
| 32 TEST(BlinkEventUtilTest, NonPaginatedWebMouseWheelEvent) { |
| 33 blink::WebMouseWheelEvent event(blink::WebInputEvent::MouseWheel, |
| 34 blink::WebInputEvent::NoModifiers, |
| 35 blink::WebInputEvent::TimeStampForTesting); |
| 36 event.deltaX = 1.f; |
| 37 event.deltaY = 1.f; |
| 38 event.wheelTicksX = 1.f; |
| 39 event.wheelTicksY = 1.f; |
| 40 event.scrollByPage = false; |
| 41 std::unique_ptr<blink::WebInputEvent> webEvent = |
| 42 ScaleWebInputEvent(event, 2.f); |
| 43 EXPECT_TRUE(webEvent); |
| 44 blink::WebMouseWheelEvent* mouseWheelEvent = |
| 45 static_cast<blink::WebMouseWheelEvent*>(webEvent.get()); |
| 46 EXPECT_EQ(2.f, mouseWheelEvent->deltaX); |
| 47 EXPECT_EQ(2.f, mouseWheelEvent->deltaY); |
| 48 EXPECT_EQ(2.f, mouseWheelEvent->wheelTicksX); |
| 49 EXPECT_EQ(2.f, mouseWheelEvent->wheelTicksY); |
| 50 } |
| 51 |
| 52 TEST(BlinkEventUtilTest, PaginatedWebMouseWheelEvent) { |
| 53 blink::WebMouseWheelEvent event(blink::WebInputEvent::MouseWheel, |
| 54 blink::WebInputEvent::NoModifiers, |
| 55 blink::WebInputEvent::TimeStampForTesting); |
| 56 event.deltaX = 1.f; |
| 57 event.deltaY = 1.f; |
| 58 event.wheelTicksX = 1.f; |
| 59 event.wheelTicksY = 1.f; |
| 60 event.scrollByPage = true; |
| 61 std::unique_ptr<blink::WebInputEvent> webEvent = |
| 62 ScaleWebInputEvent(event, 2.f); |
| 63 EXPECT_TRUE(webEvent); |
| 64 blink::WebMouseWheelEvent* mouseWheelEvent = |
| 65 static_cast<blink::WebMouseWheelEvent*>(webEvent.get()); |
| 66 EXPECT_EQ(1.f, mouseWheelEvent->deltaX); |
| 67 EXPECT_EQ(1.f, mouseWheelEvent->deltaY); |
| 68 EXPECT_EQ(1.f, mouseWheelEvent->wheelTicksX); |
| 69 EXPECT_EQ(1.f, mouseWheelEvent->wheelTicksY); |
| 70 } |
| 71 |
| 72 TEST(BlinkEventUtilTest, NonPaginatedScrollBeginEvent) { |
| 73 ui::GestureEventDetails details(ui::ET_GESTURE_SCROLL_BEGIN, 1, 1); |
| 74 details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHSCREEN); |
| 75 auto event = |
| 76 CreateWebGestureEvent(details, base::TimeTicks(), gfx::PointF(1.f, 1.f), |
| 77 gfx::PointF(1.f, 1.f), 0, 0U); |
| 78 std::unique_ptr<blink::WebInputEvent> webEvent = |
| 79 ScaleWebInputEvent(event, 2.f); |
| 80 EXPECT_TRUE(webEvent); |
| 81 blink::WebGestureEvent* gestureEvent = |
| 82 static_cast<blink::WebGestureEvent*>(webEvent.get()); |
| 83 EXPECT_EQ(2.f, gestureEvent->data.scrollBegin.deltaXHint); |
| 84 EXPECT_EQ(2.f, gestureEvent->data.scrollBegin.deltaYHint); |
| 85 } |
| 86 |
| 87 TEST(BlinkEventUtilTest, PaginatedScrollBeginEvent) { |
| 88 ui::GestureEventDetails details(ui::ET_GESTURE_SCROLL_BEGIN, 1, 1, |
| 89 ui::GestureEventDetails::ScrollUnits::PAGE); |
| 90 details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHSCREEN); |
| 91 auto event = |
| 92 CreateWebGestureEvent(details, base::TimeTicks(), gfx::PointF(1.f, 1.f), |
| 93 gfx::PointF(1.f, 1.f), 0, 0U); |
| 94 std::unique_ptr<blink::WebInputEvent> webEvent = |
| 95 ScaleWebInputEvent(event, 2.f); |
| 96 EXPECT_TRUE(webEvent); |
| 97 blink::WebGestureEvent* gestureEvent = |
| 98 static_cast<blink::WebGestureEvent*>(webEvent.get()); |
| 99 EXPECT_EQ(1.f, gestureEvent->data.scrollBegin.deltaXHint); |
| 100 EXPECT_EQ(1.f, gestureEvent->data.scrollBegin.deltaYHint); |
| 101 } |
| 102 |
| 103 TEST(BlinkEventUtilTest, NonPaginatedScrollUpdateEvent) { |
| 104 ui::GestureEventDetails details(ui::ET_GESTURE_SCROLL_UPDATE, 1, 1); |
| 105 details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHSCREEN); |
| 106 auto event = |
| 107 CreateWebGestureEvent(details, base::TimeTicks(), gfx::PointF(1.f, 1.f), |
| 108 gfx::PointF(1.f, 1.f), 0, 0U); |
| 109 std::unique_ptr<blink::WebInputEvent> webEvent = |
| 110 ScaleWebInputEvent(event, 2.f); |
| 111 EXPECT_TRUE(webEvent); |
| 112 blink::WebGestureEvent* gestureEvent = |
| 113 static_cast<blink::WebGestureEvent*>(webEvent.get()); |
| 114 EXPECT_EQ(2.f, gestureEvent->data.scrollUpdate.deltaX); |
| 115 EXPECT_EQ(2.f, gestureEvent->data.scrollUpdate.deltaY); |
| 116 } |
| 117 |
| 118 TEST(BlinkEventUtilTest, PaginatedScrollUpdateEvent) { |
| 119 ui::GestureEventDetails details(ui::ET_GESTURE_SCROLL_UPDATE, 1, 1, |
| 120 ui::GestureEventDetails::ScrollUnits::PAGE); |
| 121 details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHSCREEN); |
| 122 auto event = |
| 123 CreateWebGestureEvent(details, base::TimeTicks(), gfx::PointF(1.f, 1.f), |
| 124 gfx::PointF(1.f, 1.f), 0, 0U); |
| 125 std::unique_ptr<blink::WebInputEvent> webEvent = |
| 126 ScaleWebInputEvent(event, 2.f); |
| 127 EXPECT_TRUE(webEvent); |
| 128 blink::WebGestureEvent* gestureEvent = |
| 129 static_cast<blink::WebGestureEvent*>(webEvent.get()); |
| 130 EXPECT_EQ(1.f, gestureEvent->data.scrollUpdate.deltaX); |
| 131 EXPECT_EQ(1.f, gestureEvent->data.scrollUpdate.deltaY); |
| 132 } |
| 133 |
31 TEST(BlinkEventUtilTest, TouchEventCoalescing) { | 134 TEST(BlinkEventUtilTest, TouchEventCoalescing) { |
32 blink::WebTouchPoint touch_point; | 135 blink::WebTouchPoint touch_point; |
33 touch_point.id = 1; | 136 touch_point.id = 1; |
34 touch_point.state = blink::WebTouchPoint::StateMoved; | 137 touch_point.state = blink::WebTouchPoint::StateMoved; |
35 | 138 |
36 blink::WebTouchEvent coalesced_event; | 139 blink::WebTouchEvent coalesced_event; |
37 coalesced_event.setType(blink::WebInputEvent::TouchMove); | 140 coalesced_event.setType(blink::WebInputEvent::TouchMove); |
38 touch_point.movementX = 5; | 141 touch_point.movementX = 5; |
39 touch_point.movementY = 10; | 142 touch_point.movementY = 10; |
40 coalesced_event.touches[coalesced_event.touchesLength++] = touch_point; | 143 coalesced_event.touches[coalesced_event.touchesLength++] = touch_point; |
41 | 144 |
42 blink::WebTouchEvent event_to_be_coalesced; | 145 blink::WebTouchEvent event_to_be_coalesced; |
43 event_to_be_coalesced.setType(blink::WebInputEvent::TouchMove); | 146 event_to_be_coalesced.setType(blink::WebInputEvent::TouchMove); |
44 touch_point.movementX = 3; | 147 touch_point.movementX = 3; |
45 touch_point.movementY = -4; | 148 touch_point.movementY = -4; |
46 event_to_be_coalesced.touches[event_to_be_coalesced.touchesLength++] = | 149 event_to_be_coalesced.touches[event_to_be_coalesced.touchesLength++] = |
47 touch_point; | 150 touch_point; |
48 | 151 |
49 EXPECT_TRUE(CanCoalesce(event_to_be_coalesced, coalesced_event)); | 152 EXPECT_TRUE(CanCoalesce(event_to_be_coalesced, coalesced_event)); |
50 Coalesce(event_to_be_coalesced, &coalesced_event); | 153 Coalesce(event_to_be_coalesced, &coalesced_event); |
51 EXPECT_EQ(8, coalesced_event.touches[0].movementX); | 154 EXPECT_EQ(8, coalesced_event.touches[0].movementX); |
52 EXPECT_EQ(6, coalesced_event.touches[0].movementY); | 155 EXPECT_EQ(6, coalesced_event.touches[0].movementY); |
53 } | 156 } |
54 | 157 |
55 } // namespace ui | 158 } // namespace ui |
OLD | NEW |