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

Side by Side Diff: blimp/net/input_message_unittest.cc

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

Powered by Google App Engine
This is Rietveld 408576698