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

Side by Side Diff: third_party/WebKit/Source/core/events/PointerEventManagerTest.cpp

Issue 1670073004: Send node transition events for touch events (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing the comment Created 4 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 unified diff | Download patch
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "core/events/PointerEventManager.h"
6
7 #include "core/frame/FrameView.h"
8 #include "core/page/Page.h"
9 #include "public/platform/WebPointerProperties.h"
10 #include <climits>
11 #include <gtest/gtest.h>
12
13 namespace blink {
14
15 class PointerEventManagerTest : public ::testing::Test {
16 protected:
17 void SetUp() override;
18 PassRefPtrWillBeRawPtr<PointerEvent> createAndCheckTouchCancel(
19 WebPointerProperties::PointerType, int rawId,
20 int uniqueId, bool isPrimary);
21 PassRefPtrWillBeRawPtr<PointerEvent> createAndCheckTouchEvent(
22 WebPointerProperties::PointerType, int rawId,
23 int uniqueId, bool isPrimary);
24 PassRefPtrWillBeRawPtr<PointerEvent> createAndCheckMouseEvent(
25 WebPointerProperties::PointerType, int rawId,
26 int uniqueId, bool isPrimary);
27
28 PointerEventManager m_pointerEventManager;
29 unsigned m_expectedMouseId;
30 unsigned m_mappedIdStart;
31
32 class PlatformTouchPointBuilder : public PlatformTouchPoint {
33 public:
34 PlatformTouchPointBuilder(WebPointerProperties::PointerType, int);
35 };
36
37 class PlatformMouseEventBuilder : public PlatformMouseEvent {
38 public:
39 PlatformMouseEventBuilder(WebPointerProperties::PointerType, int);
40 };
41 };
42
43 void PointerEventManagerTest::SetUp()
44 {
45 m_expectedMouseId = 1;
46 m_mappedIdStart = 2;
47
48 }
49
50 PointerEventManagerTest::PlatformTouchPointBuilder::PlatformTouchPointBuilder(
51 WebPointerProperties::PointerType pointerType, int id)
52 {
53 m_pointerProperties.id = id;
54 m_pointerProperties.pointerType = pointerType;
55 m_pointerProperties.force = 1.0;
56 }
57
58 PointerEventManagerTest::PlatformMouseEventBuilder::PlatformMouseEventBuilder(
59 WebPointerProperties::PointerType pointerType, int id)
60 {
61 m_pointerProperties.pointerType = pointerType;
62 m_pointerProperties.id = id;
63 }
64
65 PassRefPtrWillBeRawPtr<PointerEvent> PointerEventManagerTest::createAndCheckTouc hCancel(
66 WebPointerProperties::PointerType pointerType, int rawId,
67 int uniqueId, bool isPrimary)
68 {
69 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = m_pointerEventManager.create PointerCancel(
70 PointerEventManagerTest::PlatformTouchPointBuilder(pointerType, rawId));
71 EXPECT_EQ(uniqueId, pointerEvent->pointerId());
72 EXPECT_EQ(isPrimary, pointerEvent->isPrimary());
73 return pointerEvent;
74 }
75
76 PassRefPtrWillBeRawPtr<PointerEvent> PointerEventManagerTest::createAndCheckTouc hEvent(
77 WebPointerProperties::PointerType pointerType, int rawId,
78 int uniqueId, bool isPrimary)
79 {
80 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = m_pointerEventManager.create (
81 EventTypeNames::pointerdown, PointerEventManagerTest::PlatformTouchPoint Builder(pointerType, rawId), PlatformEvent::NoModifiers, 0, 0, 0, 0);
82 EXPECT_EQ(uniqueId, pointerEvent->pointerId());
83 EXPECT_EQ(isPrimary, pointerEvent->isPrimary());
84 return pointerEvent;
85 }
86
87 PassRefPtrWillBeRawPtr<PointerEvent> PointerEventManagerTest::createAndCheckMous eEvent(
88 WebPointerProperties::PointerType pointerType, int rawId, int uniqueId, bool isPrimary)
89 {
90 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = m_pointerEventManager.create (
91 EventTypeNames::pointerenter, PlatformMouseEventBuilder(pointerType, raw Id), nullptr, nullptr);
92 EXPECT_EQ(uniqueId, pointerEvent->pointerId());
93 EXPECT_EQ(isPrimary, pointerEvent->isPrimary());
94 return pointerEvent;
95 }
96
97 TEST_F(PointerEventManagerTest, MousePointer)
98 {
99 RefPtrWillBeRawPtr<PointerEvent> pointerEvent1 = createAndCheckMouseEvent(We bPointerProperties::PointerType::Mouse, 0, m_expectedMouseId, true);
100 RefPtrWillBeRawPtr<PointerEvent> pointerEvent2 = createAndCheckMouseEvent(We bPointerProperties::PointerType::Mouse, 0, m_expectedMouseId, true);
101
102 m_pointerEventManager.remove(pointerEvent1);
103
104 createAndCheckMouseEvent(WebPointerProperties::PointerType::Mouse, 0, m_expe ctedMouseId, true);
105
106 m_pointerEventManager.remove(pointerEvent1);
107 m_pointerEventManager.remove(pointerEvent2);
108
109 createAndCheckMouseEvent(WebPointerProperties::PointerType::Mouse, 1, m_expe ctedMouseId, true);
110 createAndCheckMouseEvent(WebPointerProperties::PointerType::Mouse, 20, m_exp ectedMouseId, true);
111 }
112
113 TEST_F(PointerEventManagerTest, TouchPointerPrimaryRemovedWhileAnotherIsThere)
114 {
115 RefPtrWillBeRawPtr<PointerEvent> pointerEvent1 = createAndCheckTouchEvent(We bPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true);
116 createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 1, m_mapp edIdStart+1, false);
117
118 m_pointerEventManager.remove(pointerEvent1);
119
120 createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 2, m_mapp edIdStart+2, false);
121 createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 1, m_mapp edIdStart+1, false);
122 }
123
124 TEST_F(PointerEventManagerTest, TouchPointerReleasedAndPressedAgain)
125 {
126 RefPtrWillBeRawPtr<PointerEvent> pointerEvent1 = createAndCheckTouchEvent(We bPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true);
127 RefPtrWillBeRawPtr<PointerEvent> pointerEvent2 = createAndCheckTouchEvent(We bPointerProperties::PointerType::Touch, 1, m_mappedIdStart+1, false);
128
129 m_pointerEventManager.remove(pointerEvent1);
130 m_pointerEventManager.remove(pointerEvent2);
131
132 createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 1, m_mapp edIdStart+2, true);
133 createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mapp edIdStart+3, false);
134
135 m_pointerEventManager.clear();
136
137 createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 10, m_map pedIdStart, true);
138 }
139
140 TEST_F(PointerEventManagerTest, TouchAndDrag)
141 {
142 RefPtrWillBeRawPtr<PointerEvent> pointerEvent1 = createAndCheckTouchEvent(We bPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true);
143 RefPtrWillBeRawPtr<PointerEvent> pointerEvent2 = createAndCheckTouchEvent(We bPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true);
144 createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mapp edIdStart, true);
145
146 m_pointerEventManager.remove(pointerEvent1);
147 m_pointerEventManager.remove(pointerEvent2);
148
149 createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mapp edIdStart+1, true);
150 createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mapp edIdStart+1, true);
151
152 // Remove an obsolete (i.e. already removed) pointer event which should have no effect
153 m_pointerEventManager.remove(pointerEvent1);
154
155 createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mapp edIdStart+1, true);
156 createAndCheckTouchCancel(WebPointerProperties::PointerType::Touch, 0, m_map pedIdStart+1, true);
157 createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mapp edIdStart+1, true);
158 }
159
160 TEST_F(PointerEventManagerTest, MouseAndTouchAndPen)
161 {
162 createAndCheckMouseEvent(WebPointerProperties::PointerType::Mouse, 0, m_expe ctedMouseId, true);
163 RefPtrWillBeRawPtr<PointerEvent> pointerEvent1 = createAndCheckTouchEvent(We bPointerProperties::PointerType::Touch, 0, m_mappedIdStart, true);
164 createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mapped IdStart+1, true);
165
166 RefPtrWillBeRawPtr<PointerEvent> pointerEvent2 = createAndCheckTouchEvent(We bPointerProperties::PointerType::Touch, 1, m_mappedIdStart+2, false);
167 RefPtrWillBeRawPtr<PointerEvent> pointerEvent3 = createAndCheckTouchEvent(We bPointerProperties::PointerType::Touch, 2, m_mappedIdStart+3, false);
168 createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mapped IdStart+1, true);
169 createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 47213, m_ma ppedIdStart+4, false);
170
171 m_pointerEventManager.remove(pointerEvent1);
172 m_pointerEventManager.remove(pointerEvent2);
173 m_pointerEventManager.remove(pointerEvent3);
174
175 createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 100, m_ma ppedIdStart+5, true);
176
177 m_pointerEventManager.clear();
178
179 createAndCheckMouseEvent(WebPointerProperties::PointerType::Mouse, 0, m_expe ctedMouseId, true);
180 createAndCheckTouchEvent(WebPointerProperties::PointerType::Touch, 0, m_mapp edIdStart, true);
181 createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mapped IdStart+1, true);
182 }
183
184 TEST_F(PointerEventManagerTest, PenAsTouchAndMouseEvent)
185 {
186 RefPtrWillBeRawPtr<PointerEvent> pointerEvent1 = createAndCheckMouseEvent(We bPointerProperties::PointerType::Pen, 0, m_mappedIdStart, true);
187 createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 1, m_mapped IdStart+1, false);
188 createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 2, m_mapped IdStart+2, false);
189 createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 0, m_mapped IdStart, true);
190 createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 1, m_mapped IdStart+1, false);
191 createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mapped IdStart, true);
192 createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 1, m_mapped IdStart+1, false);
193
194 m_pointerEventManager.remove(pointerEvent1);
195
196 createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mapped IdStart+3, false);
197 createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 0, m_mapped IdStart+3, false);
198 createAndCheckTouchCancel(WebPointerProperties::PointerType::Pen, 0, m_mappe dIdStart+3, false);
199
200 m_pointerEventManager.clear();
201
202 createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 1, m_mapped IdStart, true);
203 createAndCheckTouchEvent(WebPointerProperties::PointerType::Pen, 0, m_mapped IdStart+1, false);
204 createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 1, m_mapped IdStart, true);
205 createAndCheckMouseEvent(WebPointerProperties::PointerType::Pen, 0, m_mapped IdStart+1, false);
206 createAndCheckTouchCancel(WebPointerProperties::PointerType::Pen, 1, m_mappe dIdStart, true);
207 createAndCheckTouchCancel(WebPointerProperties::PointerType::Pen, 0, m_mappe dIdStart+1, false);
208 }
209
210
211 TEST_F(PointerEventManagerTest, OutOfRange)
212 {
213 RefPtrWillBeRawPtr<PointerEvent> pointerEvent1 = createAndCheckMouseEvent(We bPointerProperties::PointerType::Unknown, 0, m_mappedIdStart, true);
214 createAndCheckMouseEvent(WebPointerProperties::PointerType::Unknown, 1, m_ma ppedIdStart+1, false);
215 createAndCheckMouseEvent(WebPointerProperties::PointerType::Unknown, 2, m_ma ppedIdStart+2, false);
216 createAndCheckTouchEvent(WebPointerProperties::PointerType::Unknown, 0, m_ma ppedIdStart, true);
217 createAndCheckTouchEvent(WebPointerProperties::PointerType::Unknown, 3, m_ma ppedIdStart+3, false);
218 createAndCheckMouseEvent(WebPointerProperties::PointerType::Unknown, 2, m_ma ppedIdStart+2, false);
219 createAndCheckTouchCancel(WebPointerProperties::PointerType::Unknown, 3, m_m appedIdStart+3, false);
220
221 m_pointerEventManager.remove(pointerEvent1);
222
223 createAndCheckTouchEvent(WebPointerProperties::PointerType::Unknown, 0, m_ma ppedIdStart+4, false);
224 createAndCheckTouchEvent(WebPointerProperties::PointerType::Unknown, INT_MAX , m_mappedIdStart+5, false);
225
226 m_pointerEventManager.clear();
227
228 for (int i = 0; i < 100; ++i) {
229 createAndCheckMouseEvent(WebPointerProperties::PointerType::Touch, i, m_ mappedIdStart+i, i == 0);
230 }
231
232 for (int i = 0; i < 100; ++i) {
233 createAndCheckTouchEvent(WebPointerProperties::PointerType::Mouse, i, m_ expectedMouseId, true);
234 }
235 createAndCheckTouchCancel(WebPointerProperties::PointerType::Mouse, 0, m_exp ectedMouseId, true);
236 }
237
238 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/events/PointerEventManager.cpp ('k') | third_party/WebKit/Source/core/input/EventHandler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698