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

Side by Side Diff: blimp/common/input/input_event_conversions_unittest.cc

Issue 1426993008: Serialize a subset of WebInputEvents to protobufs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 5 years, 1 month 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 "blimp/common/input/input_event_conversions.h"
6
7 #include <vector>
8
9 #include "base/logging.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "blimp/common/proto/input.pb.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "third_party/WebKit/public/platform/WebGestureDevice.h"
14 #include "third_party/WebKit/public/web/WebInputEvent.h"
15
16 namespace blimp {
17 namespace {
18
19 const size_t kWebGestureEventCount = blink::WebGestureEvent::GestureTypeLast
20 - blink::WebGestureEvent::GestureTypeFirst + 1;
21
22 void ValidateWebInputEventRoundTripping(const blink::WebInputEvent& event) {
23 InputMessage proto;
24 WebInputEventToProto(event, &proto);
25
26 scoped_ptr<blink::WebInputEvent> new_event =
27 ProtoToWebInputEvent(proto);
28
29 EXPECT_NE(nullptr, new_event);
30 EXPECT_EQ(event.size, new_event->size);
31 EXPECT_EQ(0, memcmp(&event, new_event.get(), event.size));
32 }
33
34 } // namespace
35
36 TEST(InputEventConversionsTest, TestWebInputEventTypeSerialization) {
37 for (int type = blink::WebInputEvent::Type::TypeFirst;
38 type != blink::WebInputEvent::Type::TypeLast; type++) {
39 scoped_ptr<blink::WebInputEvent> event;
40 // As more input event types are serialized, add the methods to create those
41 // types of WebInputEvent objects here.
42 if (type >= blink::WebInputEvent::Type::GestureTypeFirst &&
43 type <= blink::WebInputEvent::Type::GestureTypeLast) {
44 event.reset(new blink::WebGestureEvent);
45 } else {
46 continue;
47 }
48 event->type = static_cast<blink::WebInputEvent::Type>(type);
49 ValidateWebInputEventRoundTripping(*event);
50 }
51 }
52
53 TEST(InputEventConversionsTest, TestWebGestureDeviceSerialization) {
54 blink::WebGestureEvent event;
55 event.type = blink::WebGestureEvent::Type::GestureTap;
56
57 for (int source = blink::WebGestureDevice::WebGestureDeviceUninitialized;
58 source != blink::WebGestureDevice::WebGestureDeviceTouchscreen;
59 source++) {
60 event.sourceDevice = static_cast<blink::WebGestureDevice>(source);
61 ValidateWebInputEventRoundTripping(event);
62 }
63 }
64
65 TEST(InputEventConversionsTest, TestWebGestureEvents) {
66 std::vector<blink::WebGestureEvent> events;
67
68 // Set the custom parameters for each type of event.
69 {
70 blink::WebGestureEvent event;
71 event.type = blink::WebGestureEvent::Type::GestureScrollBegin;
72 event.data.scrollBegin.deltaXHint = 2.34f;
73 event.data.scrollBegin.deltaYHint = 3.45f;
74 event.data.scrollBegin.targetViewport = true;
75 events.push_back(event);
76 }
77
78 {
79 blink::WebGestureEvent event;
80 event.type = blink::WebGestureEvent::Type::GestureScrollEnd;
81 events.push_back(event);
82 }
83
84 {
85 blink::WebGestureEvent event;
86 event.type = blink::WebGestureEvent::Type::GestureScrollUpdate;
87 event.data.scrollUpdate.deltaX = 2.34f;
88 event.data.scrollUpdate.deltaY = 3.45f;
89 event.data.scrollUpdate.velocityX = 4.56f;
90 event.data.scrollUpdate.velocityY = 5.67f;
91 event.data.scrollUpdate.previousUpdateInSequencePrevented = true;
92 event.data.scrollUpdate.preventPropagation = true;
93 event.data.scrollUpdate.inertial = true;
94 events.push_back(event);
95 }
96
97 {
98 blink::WebGestureEvent event;
99 event.type = blink::WebGestureEvent::Type::GestureFlingStart;
100 event.data.flingStart.velocityX = 2.34f;
101 event.data.flingStart.velocityY = 3.45f;
102 event.data.flingStart.targetViewport = true;
103 events.push_back(event);
104 }
105
106 {
107 blink::WebGestureEvent event;
108 event.type = blink::WebGestureEvent::Type::GestureFlingCancel;
109 event.data.flingCancel.preventBoosting = true;
110 events.push_back(event);
111 }
112
113 {
114 blink::WebGestureEvent event;
115 event.type = blink::WebGestureEvent::Type::GestureShowPress;
116 event.data.showPress.width = 2.34f;
117 event.data.showPress.height = 3.45f;
118 events.push_back(event);
119 }
120
121 {
122 blink::WebGestureEvent event;
123 event.type = blink::WebGestureEvent::Type::GestureTap;
124 event.data.tap.tapCount = 3;
125 event.data.tap.width = 2.34f;
126 event.data.tap.height = 3.45f;
127 events.push_back(event);
128 }
129
130 {
131 blink::WebGestureEvent event;
132 event.type = blink::WebGestureEvent::Type::GestureTapUnconfirmed;
133 event.data.tap.tapCount = 3;
134 event.data.tap.width = 2.34f;
135 event.data.tap.height = 3.45f;
136 events.push_back(event);
137 }
138
139 {
140 blink::WebGestureEvent event;
141 event.type = blink::WebGestureEvent::Type::GestureTapDown;
142 event.data.tapDown.width = 2.34f;
143 event.data.tapDown.height = 3.45f;
144 events.push_back(event);
145 }
146
147 {
148 blink::WebGestureEvent event;
149 event.type = blink::WebGestureEvent::Type::GestureTapCancel;
150 events.push_back(event);
151 }
152
153 {
154 blink::WebGestureEvent event;
155 event.type = blink::WebGestureEvent::Type::GestureDoubleTap;
156 event.data.tap.tapCount = 3;
157 event.data.tap.width = 2.34f;
158 event.data.tap.height = 3.45f;
159 events.push_back(event);
160 }
161
162 {
163 blink::WebGestureEvent event;
164 event.type = blink::WebGestureEvent::Type::GestureTwoFingerTap;
165 event.data.twoFingerTap.firstFingerWidth = 2.34f;
166 event.data.twoFingerTap.firstFingerHeight = 3.45f;
167 events.push_back(event);
168 }
169
170 {
171 blink::WebGestureEvent event;
172 event.type = blink::WebGestureEvent::Type::GestureLongPress;
173 event.data.longPress.width = 2.34f;
174 event.data.longPress.height = 3.45f;
175 events.push_back(event);
176 }
177
178 {
179 blink::WebGestureEvent event;
180 event.type = blink::WebGestureEvent::Type::GestureLongTap;
181 events.push_back(event);
182 }
183
184 {
185 blink::WebGestureEvent event;
186 event.type = blink::WebGestureEvent::Type::GesturePinchBegin;
187 events.push_back(event);
188 }
189
190 {
191 blink::WebGestureEvent event;
192 event.type = blink::WebGestureEvent::Type::GesturePinchEnd;
193 events.push_back(event);
194 }
195
196 {
197 blink::WebGestureEvent event;
198 event.type = blink::WebGestureEvent::Type::GesturePinchUpdate;
199 event.data.pinchUpdate.zoomDisabled = true;
200 event.data.pinchUpdate.scale = 2.34f;
201 events.push_back(event);
202 }
203
204 // Make sure no new events were added that weren't serialized.
205 EXPECT_EQ(kWebGestureEventCount, events.size());
206
207 for (auto& event : events) {
208 // Set the common parameters.
209 event.timeStampSeconds = 1.23;
210 event.x = 2;
211 event.y = 3;
212 event.globalX = 4;
213 event.globalY = 5;
214 event.sourceDevice = blink::WebGestureDevice::WebGestureDeviceTouchpad;
215
216 // Validate that the event is the exact same after serialization and
217 // deserialization.
218 ValidateWebInputEventRoundTripping(event);
219 }
220 }
221
222 } // namespace blimp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698