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

Side by Side Diff: content/renderer/input/input_event_filter_unittest.cc

Issue 283623002: Add support for passing an arbitrary parameter to an IPC message handler. The motivation is for Web… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync Created 6 years, 7 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 | Annotate | Revision Log
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 <new> 5 #include <new>
6 #include <utility> 6 #include <utility>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); 171 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents));
172 ASSERT_EQ(arraysize(kEvents), ipc_sink_.message_count()); 172 ASSERT_EQ(arraysize(kEvents), ipc_sink_.message_count());
173 ASSERT_EQ(arraysize(kEvents), event_recorder_.record_count()); 173 ASSERT_EQ(arraysize(kEvents), event_recorder_.record_count());
174 EXPECT_EQ(0U, message_recorder_.message_count()); 174 EXPECT_EQ(0U, message_recorder_.message_count());
175 175
176 for (size_t i = 0; i < arraysize(kEvents); ++i) { 176 for (size_t i = 0; i < arraysize(kEvents); ++i) {
177 const IPC::Message* message = ipc_sink_.GetMessageAt(i); 177 const IPC::Message* message = ipc_sink_.GetMessageAt(i);
178 EXPECT_EQ(kTestRoutingID, message->routing_id()); 178 EXPECT_EQ(kTestRoutingID, message->routing_id());
179 EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type()); 179 EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type());
180 180
181 WebInputEvent::Type event_type = WebInputEvent::Undefined; 181 InputHostMsg_HandleInputEvent_ACK::Param params;
182 InputEventAckState ack_result = INPUT_EVENT_ACK_STATE_NOT_CONSUMED; 182 EXPECT_TRUE(InputHostMsg_HandleInputEvent_ACK::Read(message, &params));
183 ui::LatencyInfo latency_info; 183 WebInputEvent::Type event_type = params.a;
184 EXPECT_TRUE(InputHostMsg_HandleInputEvent_ACK::Read(message, 184 InputEventAckState ack_result = params.b;
185 &event_type, 185
186 &ack_result,
187 &latency_info));
188 EXPECT_EQ(kEvents[i].type, event_type); 186 EXPECT_EQ(kEvents[i].type, event_type);
189 EXPECT_EQ(ack_result, INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); 187 EXPECT_EQ(ack_result, INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
190 188
191 const WebInputEvent* event = event_recorder_.record_at(i); 189 const WebInputEvent* event = event_recorder_.record_at(i);
192 ASSERT_TRUE(event); 190 ASSERT_TRUE(event);
193 191
194 EXPECT_EQ(kEvents[i].size, event->size); 192 EXPECT_EQ(kEvents[i].size, event->size);
195 EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0); 193 EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0);
196 } 194 }
197 195
198 event_recorder_.set_send_to_widget(true); 196 event_recorder_.set_send_to_widget(true);
199 197
200 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); 198 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents));
201 EXPECT_EQ(arraysize(kEvents), ipc_sink_.message_count()); 199 EXPECT_EQ(arraysize(kEvents), ipc_sink_.message_count());
202 EXPECT_EQ(2 * arraysize(kEvents), event_recorder_.record_count()); 200 EXPECT_EQ(2 * arraysize(kEvents), event_recorder_.record_count());
203 EXPECT_EQ(arraysize(kEvents), message_recorder_.message_count()); 201 EXPECT_EQ(arraysize(kEvents), message_recorder_.message_count());
204 202
205 for (size_t i = 0; i < arraysize(kEvents); ++i) { 203 for (size_t i = 0; i < arraysize(kEvents); ++i) {
206 const IPC::Message& message = message_recorder_.message_at(i); 204 const IPC::Message& message = message_recorder_.message_at(i);
207 205
208 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type()); 206 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type());
209 const WebInputEvent* event = NULL; 207 InputMsg_HandleInputEvent::Param params;
210 ui::LatencyInfo latency_info; 208 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params));
211 bool is_kbd_shortcut; 209 const WebInputEvent* event = params.a;
212 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(
213 &message, &event, &latency_info, &is_kbd_shortcut));
214 210
215 EXPECT_EQ(kEvents[i].size, event->size); 211 EXPECT_EQ(kEvents[i].size, event->size);
216 EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0); 212 EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0);
217 } 213 }
218 214
219 // Now reset everything, and test that DidHandleInputEvent is called. 215 // Now reset everything, and test that DidHandleInputEvent is called.
220 216
221 ipc_sink_.ClearMessages(); 217 ipc_sink_.ClearMessages();
222 event_recorder_.Clear(); 218 event_recorder_.Clear();
223 message_recorder_.Clear(); 219 message_recorder_.Clear();
224 220
225 event_recorder_.set_handle_events(true); 221 event_recorder_.set_handle_events(true);
226 222
227 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); 223 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents));
228 EXPECT_EQ(arraysize(kEvents), ipc_sink_.message_count()); 224 EXPECT_EQ(arraysize(kEvents), ipc_sink_.message_count());
229 EXPECT_EQ(arraysize(kEvents), event_recorder_.record_count()); 225 EXPECT_EQ(arraysize(kEvents), event_recorder_.record_count());
230 EXPECT_EQ(0U, message_recorder_.message_count()); 226 EXPECT_EQ(0U, message_recorder_.message_count());
231 227
232 for (size_t i = 0; i < arraysize(kEvents); ++i) { 228 for (size_t i = 0; i < arraysize(kEvents); ++i) {
233 const IPC::Message* message = ipc_sink_.GetMessageAt(i); 229 const IPC::Message* message = ipc_sink_.GetMessageAt(i);
234 EXPECT_EQ(kTestRoutingID, message->routing_id()); 230 EXPECT_EQ(kTestRoutingID, message->routing_id());
235 EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type()); 231 EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type());
236 232
237 WebInputEvent::Type event_type = WebInputEvent::Undefined; 233 InputHostMsg_HandleInputEvent_ACK::Param params;
238 InputEventAckState ack_result = INPUT_EVENT_ACK_STATE_NOT_CONSUMED; 234 EXPECT_TRUE(InputHostMsg_HandleInputEvent_ACK::Read(message, &params));
239 ui::LatencyInfo latency_info; 235 WebInputEvent::Type event_type = params.a;
240 EXPECT_TRUE(InputHostMsg_HandleInputEvent_ACK::Read(message, 236 InputEventAckState ack_result = params.b;
241 &event_type,
242 &ack_result,
243 &latency_info));
244 EXPECT_EQ(kEvents[i].type, event_type); 237 EXPECT_EQ(kEvents[i].type, event_type);
245 EXPECT_EQ(ack_result, INPUT_EVENT_ACK_STATE_CONSUMED); 238 EXPECT_EQ(ack_result, INPUT_EVENT_ACK_STATE_CONSUMED);
246 } 239 }
247 240
248 filter_->OnFilterRemoved(); 241 filter_->OnFilterRemoved();
249 } 242 }
250 243
251 TEST_F(InputEventFilterTest, PreserveRelativeOrder) { 244 TEST_F(InputEventFilterTest, PreserveRelativeOrder) {
252 filter_->DidAddInputHandler(kTestRoutingID, NULL); 245 filter_->DidAddInputHandler(kTestRoutingID, NULL);
253 event_recorder_.set_send_to_widget(true); 246 event_recorder_.set_send_to_widget(true);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 289
297 // We should have sent all messages back to the main thread and preserved 290 // We should have sent all messages back to the main thread and preserved
298 // their relative order. 291 // their relative order.
299 ASSERT_EQ(message_recorder_.message_count(), messages.size()); 292 ASSERT_EQ(message_recorder_.message_count(), messages.size());
300 for (size_t i = 0; i < messages.size(); ++i) { 293 for (size_t i = 0; i < messages.size(); ++i) {
301 EXPECT_EQ(message_recorder_.message_at(i).type(), messages[i].type()) << i; 294 EXPECT_EQ(message_recorder_.message_at(i).type(), messages[i].type()) << i;
302 } 295 }
303 } 296 }
304 297
305 } // namespace content 298 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/input/input_event_filter.cc ('k') | content/renderer/render_view_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698