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

Side by Side Diff: content/common/input/input_param_traits_unittest.cc

Issue 25385002: Remove the BufferedInputRouter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 2 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
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "content/common/input/input_param_traits.h" 5 #include "content/common/input/input_param_traits.h"
6 6
7 #include "content/common/input/event_packet.h"
8 #include "content/common/input/input_event.h" 7 #include "content/common/input/input_event.h"
9 #include "content/common/input/ipc_input_event_payload.h" 8 #include "content/common/input/ipc_input_event_payload.h"
10 #include "content/common/input/web_input_event_payload.h" 9 #include "content/common/input/web_input_event_payload.h"
11 #include "content/common/input_messages.h" 10 #include "content/common/input_messages.h"
12 #include "ipc/ipc_message.h" 11 #include "ipc/ipc_message.h"
13 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
14 #include "third_party/WebKit/public/web/WebInputEvent.h" 13 #include "third_party/WebKit/public/web/WebInputEvent.h"
15 14
16 namespace content { 15 namespace content {
17 namespace { 16 namespace {
18 17
18 typedef ScopedVector<InputEvent> InputEvents;
19
20 void AddTo(InputEvents& packet, scoped_ptr<InputEvent> event) {
21 packet.push_back(event.release());
22 }
23
19 class InputParamTraitsTest : public testing::Test { 24 class InputParamTraitsTest : public testing::Test {
20 protected: 25 protected:
21 void Compare(const WebInputEventPayload* a, const WebInputEventPayload* b) { 26 void Compare(const WebInputEventPayload* a, const WebInputEventPayload* b) {
22 EXPECT_EQ(!!a->web_event(), !!b->web_event()); 27 EXPECT_EQ(!!a->web_event(), !!b->web_event());
23 if (a->web_event() && b->web_event()) { 28 if (a->web_event() && b->web_event()) {
24 const size_t a_size = a->web_event()->size; 29 const size_t a_size = a->web_event()->size;
25 ASSERT_EQ(a_size, b->web_event()->size); 30 ASSERT_EQ(a_size, b->web_event()->size);
26 EXPECT_EQ(0, memcmp(a->web_event(), b->web_event(), a_size)); 31 EXPECT_EQ(0, memcmp(a->web_event(), b->web_event(), a_size));
27 } 32 }
28 EXPECT_EQ(a->latency_info().latency_components.size(), 33 EXPECT_EQ(a->latency_info().latency_components.size(),
(...skipping 23 matching lines...) Expand all
52 break; 57 break;
53 } 58 }
54 } 59 }
55 60
56 void Compare(const InputEvent* a, const InputEvent* b) { 61 void Compare(const InputEvent* a, const InputEvent* b) {
57 EXPECT_EQ(a->id(), b->id()); 62 EXPECT_EQ(a->id(), b->id());
58 EXPECT_EQ(a->valid(), b->valid()); 63 EXPECT_EQ(a->valid(), b->valid());
59 Compare(a->payload(), b->payload()); 64 Compare(a->payload(), b->payload());
60 } 65 }
61 66
62 void Compare(const EventPacket* a, const EventPacket* b) { 67 void Compare(const InputEvents* a, const InputEvents* b) {
63 EXPECT_EQ(a->id(), b->id());
64 ASSERT_EQ(a->size(), b->size());
65 for (size_t i = 0; i < a->size(); ++i) 68 for (size_t i = 0; i < a->size(); ++i)
66 Compare(a->events()[i], b->events()[i]); 69 Compare((*a)[i], (*b)[i]);
67 } 70 }
68 71
69 void Verify(const EventPacket& packet_in) { 72 void Verify(const InputEvents& packet_in) {
70 IPC::Message msg; 73 IPC::Message msg;
71 IPC::ParamTraits<EventPacket>::Write(&msg, packet_in); 74 IPC::ParamTraits<InputEvents>::Write(&msg, packet_in);
72 75
73 EventPacket packet_out; 76 InputEvents packet_out;
74 PickleIterator iter(msg); 77 PickleIterator iter(msg);
75 EXPECT_TRUE(IPC::ParamTraits<EventPacket>::Read(&msg, &iter, &packet_out)); 78 EXPECT_TRUE(IPC::ParamTraits<InputEvents>::Read(&msg, &iter, &packet_out));
76 79
77 Compare(&packet_in, &packet_out); 80 Compare(&packet_in, &packet_out);
78 81
79 // Perform a sanity check that logging doesn't explode. 82 // Perform a sanity check that logging doesn't explode.
80 std::string packet_in_string; 83 std::string packet_in_string;
81 IPC::ParamTraits<EventPacket>::Log(packet_in, &packet_in_string); 84 IPC::ParamTraits<InputEvents>::Log(packet_in, &packet_in_string);
82 std::string packet_out_string; 85 std::string packet_out_string;
83 IPC::ParamTraits<EventPacket>::Log(packet_out, &packet_out_string); 86 IPC::ParamTraits<InputEvents>::Log(packet_out, &packet_out_string);
84 ASSERT_FALSE(packet_in_string.empty()); 87 ASSERT_FALSE(packet_in_string.empty());
85 EXPECT_EQ(packet_in_string, packet_out_string); 88 EXPECT_EQ(packet_in_string, packet_out_string);
86 } 89 }
87 }; 90 };
88 91
89 TEST_F(InputParamTraitsTest, EventPacketEmpty) { 92 TEST_F(InputParamTraitsTest, UninitializedEvents) {
90 EventPacket packet_in; 93 InputEvents packet_in;
94 AddTo(packet_in, InputEvent::Create(1, WebInputEventPayload::Create()));
95 AddTo(packet_in, InputEvent::Create(2, IPCInputEventPayload::Create()));
96
91 IPC::Message msg; 97 IPC::Message msg;
92 IPC::ParamTraits<EventPacket>::Write(&msg, packet_in); 98 IPC::ParamTraits<InputEvents>::Write(&msg, packet_in);
93 99
94 EventPacket packet_out; 100 InputEvents packet_out;
95 PickleIterator iter(msg); 101 PickleIterator iter(msg);
96 EXPECT_TRUE(IPC::ParamTraits<EventPacket>::Read(&msg, &iter, &packet_out)); 102 EXPECT_FALSE(IPC::ParamTraits<InputEvents>::Read(&msg, &iter, &packet_out));
97
98 Compare(&packet_in, &packet_out);
99 } 103 }
100 104
101 TEST_F(InputParamTraitsTest, EventPacketUninitializedEvents) { 105 TEST_F(InputParamTraitsTest, IPCEvents) {
102 EventPacket packet_in; 106 InputEvents packet_in;
103 packet_in.set_id(1);
104 packet_in.Add(InputEvent::Create(1, WebInputEventPayload::Create()));
105 packet_in.Add(InputEvent::Create(2, IPCInputEventPayload::Create()));
106 107
107 IPC::Message msg; 108 AddTo(packet_in,
108 IPC::ParamTraits<EventPacket>::Write(&msg, packet_in);
109
110 EventPacket packet_out;
111 PickleIterator iter(msg);
112 EXPECT_FALSE(IPC::ParamTraits<EventPacket>::Read(&msg, &iter, &packet_out));
113 }
114
115 TEST_F(InputParamTraitsTest, EventPacketIPCEvents) {
116 EventPacket packet_in;
117 packet_in.set_id(1);
118
119 packet_in.Add(
120 InputEvent::Create(1, 109 InputEvent::Create(1,
121 IPCInputEventPayload::Create( 110 IPCInputEventPayload::Create(
122 scoped_ptr<IPC::Message>(new InputMsg_Undo(1))))); 111 scoped_ptr<IPC::Message>(new InputMsg_Undo(1)))));
123 packet_in.Add(InputEvent::Create( 112 AddTo(packet_in, InputEvent::Create(
124 1, 113 1,
125 IPCInputEventPayload::Create( 114 IPCInputEventPayload::Create(
126 scoped_ptr<IPC::Message>(new InputMsg_SetFocus(2, true))))); 115 scoped_ptr<IPC::Message>(new InputMsg_SetFocus(2, true)))));
127 Verify(packet_in); 116 Verify(packet_in);
128 } 117 }
129 118
130 TEST_F(InputParamTraitsTest, EventPacketWebInputEvents) { 119 TEST_F(InputParamTraitsTest, WebInputEvents) {
131 EventPacket packet_in; 120 InputEvents packet_in;
132 packet_in.set_id(1);
133 121
134 ui::LatencyInfo latency; 122 ui::LatencyInfo latency;
135 123
136 int64 next_event_id = 1; 124 int64 next_event_id = 1;
137 WebKit::WebKeyboardEvent key_event; 125 WebKit::WebKeyboardEvent key_event;
138 key_event.type = WebKit::WebInputEvent::RawKeyDown; 126 key_event.type = WebKit::WebInputEvent::RawKeyDown;
139 key_event.nativeKeyCode = 5; 127 key_event.nativeKeyCode = 5;
140 packet_in.Add(InputEvent::Create( 128 AddTo(packet_in, InputEvent::Create(
141 ++next_event_id, WebInputEventPayload::Create(key_event, latency, true))); 129 ++next_event_id, WebInputEventPayload::Create(key_event, latency, true)));
142 130
143 WebKit::WebMouseWheelEvent wheel_event; 131 WebKit::WebMouseWheelEvent wheel_event;
144 wheel_event.type = WebKit::WebInputEvent::MouseWheel; 132 wheel_event.type = WebKit::WebInputEvent::MouseWheel;
145 wheel_event.deltaX = 10; 133 wheel_event.deltaX = 10;
146 latency.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_RWH_COMPONENT, 1, 1); 134 latency.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_RWH_COMPONENT, 1, 1);
147 packet_in.Add(InputEvent::Create( 135 AddTo(packet_in, InputEvent::Create(
148 ++next_event_id, 136 ++next_event_id,
149 WebInputEventPayload::Create(wheel_event, latency, false))); 137 WebInputEventPayload::Create(wheel_event, latency, false)));
150 138
151 WebKit::WebMouseEvent mouse_event; 139 WebKit::WebMouseEvent mouse_event;
152 mouse_event.type = WebKit::WebInputEvent::MouseDown; 140 mouse_event.type = WebKit::WebInputEvent::MouseDown;
153 mouse_event.x = 10; 141 mouse_event.x = 10;
154 latency.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_UI_COMPONENT, 2, 2); 142 latency.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_UI_COMPONENT, 2, 2);
155 packet_in.Add(InputEvent::Create( 143 AddTo(packet_in, InputEvent::Create(
156 ++next_event_id, 144 ++next_event_id,
157 WebInputEventPayload::Create(mouse_event, latency, false))); 145 WebInputEventPayload::Create(mouse_event, latency, false)));
158 146
159 WebKit::WebGestureEvent gesture_event; 147 WebKit::WebGestureEvent gesture_event;
160 gesture_event.type = WebKit::WebInputEvent::GestureScrollBegin; 148 gesture_event.type = WebKit::WebInputEvent::GestureScrollBegin;
161 gesture_event.x = -1; 149 gesture_event.x = -1;
162 packet_in.Add(InputEvent::Create( 150 AddTo(packet_in, InputEvent::Create(
163 ++next_event_id, 151 ++next_event_id,
164 WebInputEventPayload::Create(gesture_event, latency, false))); 152 WebInputEventPayload::Create(gesture_event, latency, false)));
165 153
166 WebKit::WebTouchEvent touch_event; 154 WebKit::WebTouchEvent touch_event;
167 touch_event.type = WebKit::WebInputEvent::TouchStart; 155 touch_event.type = WebKit::WebInputEvent::TouchStart;
168 touch_event.touchesLength = 1; 156 touch_event.touchesLength = 1;
169 touch_event.touches[0].radiusX = 1; 157 touch_event.touches[0].radiusX = 1;
170 packet_in.Add(InputEvent::Create( 158 AddTo(packet_in, InputEvent::Create(
171 ++next_event_id, 159 ++next_event_id,
172 WebInputEventPayload::Create(touch_event, latency, false))); 160 WebInputEventPayload::Create(touch_event, latency, false)));
173 161
174 Verify(packet_in); 162 Verify(packet_in);
175 } 163 }
176 164
177 TEST_F(InputParamTraitsTest, EventPacketMixedEvents) {
178 EventPacket packet_in;
179 packet_in.set_id(1);
180 int64 next_event_id = 1;
181
182 // Add a mix of IPC and WebInputEvents.
183 packet_in.Add(
184 InputEvent::Create(++next_event_id,
185 IPCInputEventPayload::Create(
186 scoped_ptr<IPC::Message>(new InputMsg_Undo(1)))));
187
188 ui::LatencyInfo latency;
189 WebKit::WebKeyboardEvent key_event;
190 key_event.type = WebKit::WebInputEvent::RawKeyDown;
191 key_event.nativeKeyCode = 5;
192 packet_in.Add(InputEvent::Create(
193 ++next_event_id, WebInputEventPayload::Create(key_event, latency, true)));
194
195 packet_in.Add(InputEvent::Create(
196 ++next_event_id,
197 IPCInputEventPayload::Create(
198 scoped_ptr<IPC::Message>(new InputMsg_SetFocus(2, true)))));
199
200 WebKit::WebMouseWheelEvent wheel_event;
201 wheel_event.type = WebKit::WebInputEvent::MouseWheel;
202 wheel_event.deltaX = 10;
203 packet_in.Add(InputEvent::Create(
204 ++next_event_id,
205 WebInputEventPayload::Create(wheel_event, latency, false)));
206
207 Verify(packet_in);
208 }
209
210 } // namespace 165 } // namespace
211 } // namespace content 166 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698