OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "core/events/PointerEventFactory.h" | 5 #include "core/events/PointerEventFactory.h" |
6 | 6 |
7 #include "core/frame/FrameView.h" | 7 #include "core/frame/FrameView.h" |
8 #include "core/page/Page.h" | 8 #include "core/page/Page.h" |
9 #include "public/platform/WebPointerProperties.h" | 9 #include "public/platform/WebPointerProperties.h" |
10 #include <climits> | 10 #include <climits> |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
63 public: | 63 public: |
64 WebTouchPointBuilder(WebPointerProperties::PointerType, | 64 WebTouchPointBuilder(WebPointerProperties::PointerType, |
65 int, | 65 int, |
66 WebTouchPoint::State); | 66 WebTouchPoint::State); |
67 }; | 67 }; |
68 | 68 |
69 class WebMouseEventBuilder : public WebMouseEvent { | 69 class WebMouseEventBuilder : public WebMouseEvent { |
70 public: | 70 public: |
71 WebMouseEventBuilder(WebPointerProperties::PointerType, | 71 WebMouseEventBuilder(WebPointerProperties::PointerType, |
72 int, | 72 int, |
73 WebInputEvent::Modifiers); | 73 WebInputEvent::Modifiers, |
74 double); | |
74 }; | 75 }; |
75 }; | 76 }; |
76 | 77 |
77 void PointerEventFactoryTest::SetUp() { | 78 void PointerEventFactoryTest::SetUp() { |
78 expected_mouse_id_ = 1; | 79 expected_mouse_id_ = 1; |
79 mapped_id_start_ = 2; | 80 mapped_id_start_ = 2; |
80 } | 81 } |
81 | 82 |
82 PointerEventFactoryTest::WebTouchPointBuilder::WebTouchPointBuilder( | 83 PointerEventFactoryTest::WebTouchPointBuilder::WebTouchPointBuilder( |
83 WebPointerProperties::PointerType pointer_type_param, | 84 WebPointerProperties::PointerType pointer_type_param, |
84 int id_param, | 85 int id_param, |
85 WebTouchPoint::State state_param) { | 86 WebTouchPoint::State state_param) { |
86 id = id_param; | 87 id = id_param; |
87 pointer_type = pointer_type_param; | 88 pointer_type = pointer_type_param; |
88 force = 1.0; | 89 force = 1.0; |
89 state = state_param; | 90 state = state_param; |
90 } | 91 } |
91 | 92 |
92 PointerEventFactoryTest::WebMouseEventBuilder::WebMouseEventBuilder( | 93 PointerEventFactoryTest::WebMouseEventBuilder::WebMouseEventBuilder( |
93 WebPointerProperties::PointerType pointer_type_param, | 94 WebPointerProperties::PointerType pointer_type_param, |
94 int id_param, | 95 int id_param, |
95 WebInputEvent::Modifiers modifiers_param) { | 96 WebInputEvent::Modifiers modifiers_param, |
97 double platform_time_stamp) { | |
96 pointer_type = pointer_type_param; | 98 pointer_type = pointer_type_param; |
97 id = id_param; | 99 id = id_param; |
98 modifiers_ = modifiers_param; | 100 modifiers_ = modifiers_param; |
99 frame_scale_ = 1; | 101 frame_scale_ = 1; |
102 time_stamp_seconds_ = platform_time_stamp; | |
100 } | 103 } |
101 | 104 |
102 PointerEvent* PointerEventFactoryTest::CreateAndCheckTouchCancel( | 105 PointerEvent* PointerEventFactoryTest::CreateAndCheckTouchCancel( |
103 WebPointerProperties::PointerType pointer_type, | 106 WebPointerProperties::PointerType pointer_type, |
104 int raw_id, | 107 int raw_id, |
105 int unique_id, | 108 int unique_id, |
106 bool is_primary) { | 109 bool is_primary) { |
107 PointerEvent* pointer_event = | 110 TimeTicks now = TimeTicks::Now(); |
108 pointer_event_factory_.CreatePointerCancelEvent(unique_id, pointer_type); | 111 PointerEvent* pointer_event = pointer_event_factory_.CreatePointerCancelEvent( |
112 unique_id, pointer_type, now); | |
109 EXPECT_EQ(unique_id, pointer_event->pointerId()); | 113 EXPECT_EQ(unique_id, pointer_event->pointerId()); |
110 EXPECT_EQ(is_primary, pointer_event->isPrimary()); | 114 EXPECT_EQ(is_primary, pointer_event->isPrimary()); |
111 EXPECT_EQ(PointerTypeNameForWebPointPointerType(pointer_type), | 115 EXPECT_EQ(PointerTypeNameForWebPointPointerType(pointer_type), |
112 pointer_event->pointerType()); | 116 pointer_event->pointerType()); |
117 EXPECT_EQ(now, pointer_event->PlatformTimeStamp()); | |
113 return pointer_event; | 118 return pointer_event; |
114 } | 119 } |
115 | 120 |
116 void PointerEventFactoryTest::CreateAndCheckPointerTransitionEvent( | 121 void PointerEventFactoryTest::CreateAndCheckPointerTransitionEvent( |
117 PointerEvent* pointer_event, | 122 PointerEvent* pointer_event, |
118 const AtomicString& type) { | 123 const AtomicString& type) { |
119 PointerEvent* clone_pointer_event = | 124 PointerEvent* clone_pointer_event = |
120 pointer_event_factory_.CreatePointerBoundaryEvent(pointer_event, type, | 125 pointer_event_factory_.CreatePointerBoundaryEvent(pointer_event, type, |
121 nullptr); | 126 nullptr); |
122 EXPECT_EQ(clone_pointer_event->pointerType(), pointer_event->pointerType()); | 127 EXPECT_EQ(clone_pointer_event->pointerType(), pointer_event->pointerType()); |
123 EXPECT_EQ(clone_pointer_event->pointerId(), pointer_event->pointerId()); | 128 EXPECT_EQ(clone_pointer_event->pointerId(), pointer_event->pointerId()); |
124 EXPECT_EQ(clone_pointer_event->isPrimary(), pointer_event->isPrimary()); | 129 EXPECT_EQ(clone_pointer_event->isPrimary(), pointer_event->isPrimary()); |
125 EXPECT_EQ(clone_pointer_event->type(), type); | 130 EXPECT_EQ(clone_pointer_event->type(), type); |
126 } | 131 } |
127 | 132 |
128 PointerEvent* PointerEventFactoryTest::CreateAndCheckTouchEvent( | 133 PointerEvent* PointerEventFactoryTest::CreateAndCheckTouchEvent( |
129 WebPointerProperties::PointerType pointer_type, | 134 WebPointerProperties::PointerType pointer_type, |
130 int raw_id, | 135 int raw_id, |
131 int unique_id, | 136 int unique_id, |
132 bool is_primary, | 137 bool is_primary, |
133 WebTouchPoint::State state, | 138 WebTouchPoint::State state, |
134 size_t coalesced_event_count) { | 139 size_t coalesced_event_count) { |
135 Vector<WebTouchPoint> coalesced_events; | 140 Vector<std::pair<WebTouchPoint, TimeTicks>> coalesced_events; |
141 TimeTicks now = TimeTicks::Now(); | |
136 for (size_t i = 0; i < coalesced_event_count; i++) { | 142 for (size_t i = 0; i < coalesced_event_count; i++) { |
137 coalesced_events.push_back(PointerEventFactoryTest::WebTouchPointBuilder( | 143 coalesced_events.push_back(std::pair<WebTouchPoint, TimeTicks>( |
138 pointer_type, raw_id, state)); | 144 PointerEventFactoryTest::WebTouchPointBuilder(pointer_type, raw_id, |
145 state), | |
146 now)); | |
139 } | 147 } |
140 PointerEvent* pointer_event = pointer_event_factory_.Create( | 148 PointerEvent* pointer_event = pointer_event_factory_.Create( |
141 PointerEventFactoryTest::WebTouchPointBuilder(pointer_type, raw_id, | 149 PointerEventFactoryTest::WebTouchPointBuilder(pointer_type, raw_id, |
142 state), | 150 state), |
143 coalesced_events, WebInputEvent::kNoModifiers, nullptr, nullptr); | 151 coalesced_events, WebInputEvent::kNoModifiers, now, nullptr, nullptr); |
144 EXPECT_EQ(unique_id, pointer_event->pointerId()); | 152 EXPECT_EQ(unique_id, pointer_event->pointerId()); |
145 EXPECT_EQ(is_primary, pointer_event->isPrimary()); | 153 EXPECT_EQ(is_primary, pointer_event->isPrimary()); |
154 EXPECT_EQ(now, pointer_event->PlatformTimeStamp()); | |
146 const char* expected_pointer_type = | 155 const char* expected_pointer_type = |
147 PointerTypeNameForWebPointPointerType(pointer_type); | 156 PointerTypeNameForWebPointPointerType(pointer_type); |
148 EXPECT_EQ(expected_pointer_type, pointer_event->pointerType()); | 157 EXPECT_EQ(expected_pointer_type, pointer_event->pointerType()); |
149 EXPECT_EQ(coalesced_event_count, pointer_event->getCoalescedEvents().size()); | 158 EXPECT_EQ(coalesced_event_count, pointer_event->getCoalescedEvents().size()); |
150 for (size_t i = 0; i < coalesced_event_count; i++) { | 159 for (size_t i = 0; i < coalesced_event_count; i++) { |
151 EXPECT_EQ(unique_id, pointer_event->getCoalescedEvents()[i]->pointerId()); | 160 EXPECT_EQ(unique_id, pointer_event->getCoalescedEvents()[i]->pointerId()); |
152 EXPECT_EQ(is_primary, pointer_event->getCoalescedEvents()[i]->isPrimary()); | 161 EXPECT_EQ(is_primary, pointer_event->getCoalescedEvents()[i]->isPrimary()); |
153 EXPECT_EQ(expected_pointer_type, pointer_event->pointerType()); | 162 EXPECT_EQ(expected_pointer_type, pointer_event->pointerType()); |
163 EXPECT_EQ(now, pointer_event->PlatformTimeStamp()); | |
154 } | 164 } |
155 return pointer_event; | 165 return pointer_event; |
156 } | 166 } |
157 | 167 |
158 PointerEvent* PointerEventFactoryTest::CreateAndCheckMouseEvent( | 168 PointerEvent* PointerEventFactoryTest::CreateAndCheckMouseEvent( |
159 WebPointerProperties::PointerType pointer_type, | 169 WebPointerProperties::PointerType pointer_type, |
160 int raw_id, | 170 int raw_id, |
161 int unique_id, | 171 int unique_id, |
162 bool is_primary, | 172 bool is_primary, |
163 WebInputEvent::Modifiers modifiers, | 173 WebInputEvent::Modifiers modifiers, |
164 size_t coalesced_event_count) { | 174 size_t coalesced_event_count) { |
165 Vector<WebMouseEvent> coalesced_events; | 175 Vector<WebMouseEvent> coalesced_events; |
176 double base_time = 123; | |
dtapuska
2017/04/24 15:27:43
Can we use https://cs.chromium.org/chromium/src/th
Navid Zolghadr
2017/04/24 15:51:45
Makes sense. Done.
| |
166 for (size_t i = 0; i < coalesced_event_count; i++) { | 177 for (size_t i = 0; i < coalesced_event_count; i++) { |
167 coalesced_events.push_back(PointerEventFactoryTest::WebMouseEventBuilder( | 178 coalesced_events.push_back(PointerEventFactoryTest::WebMouseEventBuilder( |
168 pointer_type, raw_id, modifiers)); | 179 pointer_type, raw_id, modifiers, 123 + i)); |
dtapuska
2017/04/24 15:27:43
Can this be base_time + i (instead of 123 + i) ?
Navid Zolghadr
2017/04/24 15:51:45
Done.
| |
169 } | 180 } |
170 PointerEvent* pointer_event = pointer_event_factory_.Create( | 181 PointerEvent* pointer_event = pointer_event_factory_.Create( |
171 coalesced_event_count ? EventTypeNames::mousemove | 182 coalesced_event_count ? EventTypeNames::mousemove |
172 : EventTypeNames::mousedown, | 183 : EventTypeNames::mousedown, |
173 PointerEventFactoryTest::WebMouseEventBuilder(pointer_type, raw_id, | 184 PointerEventFactoryTest::WebMouseEventBuilder(pointer_type, raw_id, |
174 modifiers), | 185 modifiers, base_time), |
175 coalesced_events, nullptr); | 186 coalesced_events, nullptr); |
176 EXPECT_EQ(unique_id, pointer_event->pointerId()); | 187 EXPECT_EQ(unique_id, pointer_event->pointerId()); |
177 EXPECT_EQ(is_primary, pointer_event->isPrimary()); | 188 EXPECT_EQ(is_primary, pointer_event->isPrimary()); |
189 EXPECT_EQ(TimeTicks::FromSeconds(base_time), | |
190 pointer_event->PlatformTimeStamp()); | |
178 const char* expected_pointer_type = | 191 const char* expected_pointer_type = |
179 PointerTypeNameForWebPointPointerType(pointer_type); | 192 PointerTypeNameForWebPointPointerType(pointer_type); |
180 EXPECT_EQ(expected_pointer_type, pointer_event->pointerType()); | 193 EXPECT_EQ(expected_pointer_type, pointer_event->pointerType()); |
181 EXPECT_EQ(coalesced_event_count, pointer_event->getCoalescedEvents().size()); | 194 EXPECT_EQ(coalesced_event_count, pointer_event->getCoalescedEvents().size()); |
182 for (size_t i = 0; i < coalesced_event_count; i++) { | 195 for (size_t i = 0; i < coalesced_event_count; i++) { |
183 EXPECT_EQ(unique_id, pointer_event->getCoalescedEvents()[i]->pointerId()); | 196 EXPECT_EQ(unique_id, pointer_event->getCoalescedEvents()[i]->pointerId()); |
184 EXPECT_EQ(is_primary, pointer_event->getCoalescedEvents()[i]->isPrimary()); | 197 EXPECT_EQ(is_primary, pointer_event->getCoalescedEvents()[i]->isPrimary()); |
185 EXPECT_EQ(expected_pointer_type, pointer_event->pointerType()); | 198 EXPECT_EQ(expected_pointer_type, pointer_event->pointerType()); |
199 EXPECT_EQ(TimeTicks::FromSeconds(base_time + i), | |
200 pointer_event->getCoalescedEvents()[i]->PlatformTimeStamp()); | |
186 } | 201 } |
187 return pointer_event; | 202 return pointer_event; |
188 } | 203 } |
189 | 204 |
190 TEST_F(PointerEventFactoryTest, MousePointer) { | 205 TEST_F(PointerEventFactoryTest, MousePointer) { |
191 EXPECT_TRUE(pointer_event_factory_.IsActive(expected_mouse_id_)); | 206 EXPECT_TRUE(pointer_event_factory_.IsActive(expected_mouse_id_)); |
192 EXPECT_FALSE(pointer_event_factory_.IsActiveButtonsState(expected_mouse_id_)); | 207 EXPECT_FALSE(pointer_event_factory_.IsActiveButtonsState(expected_mouse_id_)); |
193 | 208 |
194 PointerEvent* pointer_event1 = CreateAndCheckMouseEvent( | 209 PointerEvent* pointer_event1 = CreateAndCheckMouseEvent( |
195 WebPointerProperties::PointerType::kMouse, 0, expected_mouse_id_, true); | 210 WebPointerProperties::PointerType::kMouse, 0, expected_mouse_id_, true); |
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
458 TEST_F(PointerEventFactoryTest, CoalescedEvents) { | 473 TEST_F(PointerEventFactoryTest, CoalescedEvents) { |
459 CreateAndCheckMouseEvent(WebPointerProperties::PointerType::kMouse, 0, | 474 CreateAndCheckMouseEvent(WebPointerProperties::PointerType::kMouse, 0, |
460 expected_mouse_id_, true, | 475 expected_mouse_id_, true, |
461 WebInputEvent::kNoModifiers, 4); | 476 WebInputEvent::kNoModifiers, 4); |
462 CreateAndCheckTouchEvent(WebPointerProperties::PointerType::kTouch, 0, | 477 CreateAndCheckTouchEvent(WebPointerProperties::PointerType::kTouch, 0, |
463 mapped_id_start_, true, WebTouchPoint::kStateMoved, | 478 mapped_id_start_, true, WebTouchPoint::kStateMoved, |
464 3); | 479 3); |
465 } | 480 } |
466 | 481 |
467 } // namespace blink | 482 } // namespace blink |
OLD | NEW |