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

Side by Side Diff: ui/base/events/event_dispatcher_unittest.cc

Issue 11308322: events: Start changing EventHandler interface to not return a value. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years 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
« no previous file with comments | « ui/base/events/event_dispatcher.cc ('k') | ui/base/events/event_handler.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ui/base/events/event_dispatcher.h" 5 #include "ui/base/events/event_dispatcher.h"
6 6
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 8
9 namespace ui { 9 namespace ui {
10 10
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 parent.AddPostTargetHandler(&h8); 195 parent.AddPostTargetHandler(&h8);
196 196
197 h5.set_expect_post_target(true); 197 h5.set_expect_post_target(true);
198 h6.set_expect_post_target(true); 198 h6.set_expect_post_target(true);
199 h7.set_expect_post_target(true); 199 h7.set_expect_post_target(true);
200 h8.set_expect_post_target(true); 200 h8.set_expect_post_target(true);
201 201
202 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), 202 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4),
203 gfx::Point(3, 4), 0); 203 gfx::Point(3, 4), 0);
204 Event::DispatcherApi event_mod(&mouse); 204 Event::DispatcherApi event_mod(&mouse);
205 int result = dispatcher.ProcessEvent(&child, &mouse); 205 dispatcher.ProcessEvent(&child, &mouse);
206 EXPECT_FALSE(result & ER_CONSUMED); 206 EXPECT_FALSE(mouse.stopped_propagation());
207 EXPECT_FALSE(result & ER_HANDLED); 207 EXPECT_FALSE(mouse.handled());
208 208
209 int expected[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; 209 int expected[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
210 EXPECT_EQ( 210 EXPECT_EQ(
211 std::vector<int>(expected, expected + sizeof(expected) / sizeof(int)), 211 std::vector<int>(expected, expected + sizeof(expected) / sizeof(int)),
212 child.handler_list()); 212 child.handler_list());
213 213
214 child.Reset(); 214 child.Reset();
215 event_mod.set_phase(EP_PREDISPATCH); 215 event_mod.set_phase(EP_PREDISPATCH);
216 event_mod.set_result(ER_UNHANDLED); 216 event_mod.set_result(ER_UNHANDLED);
217 217
218 h1.set_event_result(ER_HANDLED); 218 h1.set_event_result(ER_HANDLED);
219 result = dispatcher.ProcessEvent(&child, &mouse); 219 dispatcher.ProcessEvent(&child, &mouse);
220 EXPECT_EQ(result, mouse.result());
221 EXPECT_EQ(EP_POSTDISPATCH, mouse.phase()); 220 EXPECT_EQ(EP_POSTDISPATCH, mouse.phase());
222 EXPECT_FALSE(result & ER_CONSUMED); 221 EXPECT_FALSE(mouse.stopped_propagation());
223 EXPECT_TRUE(result & ER_HANDLED); 222 EXPECT_TRUE(mouse.handled());
224 EXPECT_EQ( 223 EXPECT_EQ(
225 std::vector<int>(expected, expected + sizeof(expected) / sizeof(int)), 224 std::vector<int>(expected, expected + sizeof(expected) / sizeof(int)),
226 child.handler_list()); 225 child.handler_list());
227 226
228 child.Reset(); 227 child.Reset();
229 event_mod.set_phase(EP_PREDISPATCH); 228 event_mod.set_phase(EP_PREDISPATCH);
230 event_mod.set_result(ER_UNHANDLED); 229 event_mod.set_result(ER_UNHANDLED);
231 230
232 int nexpected[] = { 1, 2, 3, 4, 5 }; 231 int nexpected[] = { 1, 2, 3, 4, 5 };
233 h5.set_event_result(ER_CONSUMED); 232 h5.set_event_result(ER_CONSUMED);
234 result = dispatcher.ProcessEvent(&child, &mouse); 233 dispatcher.ProcessEvent(&child, &mouse);
235 EXPECT_EQ(result, mouse.result());
236 EXPECT_EQ(EP_POSTDISPATCH, mouse.phase()); 234 EXPECT_EQ(EP_POSTDISPATCH, mouse.phase());
237 EXPECT_TRUE(result & ER_CONSUMED); 235 EXPECT_TRUE(mouse.stopped_propagation());
238 EXPECT_TRUE(result & ER_HANDLED); 236 EXPECT_TRUE(mouse.handled());
239 EXPECT_EQ( 237 EXPECT_EQ(
240 std::vector<int>(nexpected, nexpected + sizeof(nexpected) / sizeof(int)), 238 std::vector<int>(nexpected, nexpected + sizeof(nexpected) / sizeof(int)),
241 child.handler_list()); 239 child.handler_list());
242 240
243 child.Reset(); 241 child.Reset();
244 event_mod.set_phase(EP_PREDISPATCH); 242 event_mod.set_phase(EP_PREDISPATCH);
245 event_mod.set_result(ER_UNHANDLED); 243 event_mod.set_result(ER_UNHANDLED);
246 244
247 int exp[] = { 1 }; 245 int exp[] = { 1 };
248 h1.set_event_result(ER_CONSUMED); 246 h1.set_event_result(ER_CONSUMED);
249 result = dispatcher.ProcessEvent(&child, &mouse); 247 dispatcher.ProcessEvent(&child, &mouse);
250 EXPECT_EQ(EP_POSTDISPATCH, mouse.phase()); 248 EXPECT_EQ(EP_POSTDISPATCH, mouse.phase());
251 EXPECT_EQ(result, mouse.result()); 249 EXPECT_TRUE(mouse.stopped_propagation());
252 EXPECT_TRUE(result & ER_CONSUMED); 250 EXPECT_TRUE(mouse.handled());
253 EXPECT_FALSE(result & ER_HANDLED);
254 EXPECT_EQ( 251 EXPECT_EQ(
255 std::vector<int>(exp, exp + sizeof(exp) / sizeof(int)), 252 std::vector<int>(exp, exp + sizeof(exp) / sizeof(int)),
256 child.handler_list()); 253 child.handler_list());
257 } 254 }
258 255
259 // Tests that the event-phases are correct. 256 // Tests that the event-phases are correct.
260 TEST(EventDispatcherTest, EventDispatchPhase) { 257 TEST(EventDispatcherTest, EventDispatchPhase) {
261 TestEventDispatcher dispatcher; 258 TestEventDispatcher dispatcher;
262 TestTarget target; 259 TestTarget target;
263 260
264 TestEventHandler handler(11); 261 TestEventHandler handler(11);
265 262
266 target.AddPreTargetHandler(&handler); 263 target.AddPreTargetHandler(&handler);
267 target.AddPostTargetHandler(&handler); 264 target.AddPostTargetHandler(&handler);
268 handler.set_expect_pre_target(true); 265 handler.set_expect_pre_target(true);
269 handler.set_expect_post_target(true); 266 handler.set_expect_post_target(true);
270 267
271 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), 268 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4),
272 gfx::Point(3, 4), 0); 269 gfx::Point(3, 4), 0);
273 Event::DispatcherApi event_mod(&mouse); 270 Event::DispatcherApi event_mod(&mouse);
274 int result = dispatcher.ProcessEvent(&target, &mouse); 271 dispatcher.ProcessEvent(&target, &mouse);
275 EXPECT_EQ(ER_UNHANDLED, result); 272 EXPECT_EQ(ER_UNHANDLED, mouse.result());
276 273
277 int handlers[] = { 11, 11 }; 274 int handlers[] = { 11, 11 };
278 EXPECT_EQ( 275 EXPECT_EQ(
279 std::vector<int>(handlers, handlers + sizeof(handlers) / sizeof(int)), 276 std::vector<int>(handlers, handlers + sizeof(handlers) / sizeof(int)),
280 target.handler_list()); 277 target.handler_list());
281 } 278 }
282 279
283 // Tests that if the dispatcher is destroyed in the middle of pre or post-target 280 // Tests that if the dispatcher is destroyed in the middle of pre or post-target
284 // dispatching events, it doesn't cause a crash. 281 // dispatching events, it doesn't cause a crash.
285 TEST(EventDispatcherTest, EventDispatcherDestroyTarget) { 282 TEST(EventDispatcherTest, EventDispatcherDestroyTarget) {
(...skipping 10 matching lines...) Expand all
296 293
297 h1.set_expect_pre_target(true); 294 h1.set_expect_pre_target(true);
298 handler.set_expect_pre_target(true); 295 handler.set_expect_pre_target(true);
299 // |h2| should not receive any events at all since |handler| will have 296 // |h2| should not receive any events at all since |handler| will have
300 // destroyed the dispatcher. 297 // destroyed the dispatcher.
301 h2.set_expect_pre_target(false); 298 h2.set_expect_pre_target(false);
302 299
303 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), 300 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4),
304 gfx::Point(3, 4), 0); 301 gfx::Point(3, 4), 0);
305 Event::DispatcherApi event_mod(&mouse); 302 Event::DispatcherApi event_mod(&mouse);
306 int result = dispatcher->ProcessEvent(&target, &mouse); 303 dispatcher->ProcessEvent(&target, &mouse);
307 EXPECT_EQ(ER_CONSUMED, result); 304 EXPECT_EQ(ER_CONSUMED, mouse.result());
308 EXPECT_EQ(2U, target.handler_list().size()); 305 EXPECT_EQ(2U, target.handler_list().size());
309 EXPECT_EQ(1, target.handler_list()[0]); 306 EXPECT_EQ(1, target.handler_list()[0]);
310 EXPECT_EQ(5, target.handler_list()[1]); 307 EXPECT_EQ(5, target.handler_list()[1]);
311 } 308 }
312 309
313 // Now test for post-target. 310 // Now test for post-target.
314 { 311 {
315 TestEventDispatcher* dispatcher = new TestEventDispatcher(); 312 TestEventDispatcher* dispatcher = new TestEventDispatcher();
316 TestTarget target; 313 TestTarget target;
317 EventHandlerDestroyDispatcher handler(dispatcher, 5); 314 EventHandlerDestroyDispatcher handler(dispatcher, 5);
318 TestEventHandler h1(1), h2(2); 315 TestEventHandler h1(1), h2(2);
319 316
320 target.AddPostTargetHandler(&h1); 317 target.AddPostTargetHandler(&h1);
321 target.AddPostTargetHandler(&handler); 318 target.AddPostTargetHandler(&handler);
322 target.AddPostTargetHandler(&h2); 319 target.AddPostTargetHandler(&h2);
323 320
324 h1.set_expect_post_target(true); 321 h1.set_expect_post_target(true);
325 handler.set_expect_post_target(true); 322 handler.set_expect_post_target(true);
326 // |h2| should not receive any events at all since |handler| will have 323 // |h2| should not receive any events at all since |handler| will have
327 // destroyed the dispatcher. 324 // destroyed the dispatcher.
328 h2.set_expect_post_target(false); 325 h2.set_expect_post_target(false);
329 326
330 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), 327 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4),
331 gfx::Point(3, 4), 0); 328 gfx::Point(3, 4), 0);
332 Event::DispatcherApi event_mod(&mouse); 329 Event::DispatcherApi event_mod(&mouse);
333 int result = dispatcher->ProcessEvent(&target, &mouse); 330 dispatcher->ProcessEvent(&target, &mouse);
334 EXPECT_EQ(ER_CONSUMED, result); 331 EXPECT_EQ(ER_CONSUMED, mouse.result());
335 EXPECT_EQ(2U, target.handler_list().size()); 332 EXPECT_EQ(2U, target.handler_list().size());
336 EXPECT_EQ(1, target.handler_list()[0]); 333 EXPECT_EQ(1, target.handler_list()[0]);
337 EXPECT_EQ(5, target.handler_list()[1]); 334 EXPECT_EQ(5, target.handler_list()[1]);
338 } 335 }
339 } 336 }
340 337
341 // Tests that a target becoming invalid in the middle of pre- or post-target 338 // Tests that a target becoming invalid in the middle of pre- or post-target
342 // event processing aborts processing. 339 // event processing aborts processing.
343 TEST(EventDispatcherTest, EventDispatcherInvalidateTarget) { 340 TEST(EventDispatcherTest, EventDispatcherInvalidateTarget) {
344 TestEventDispatcher dispatcher; 341 TestEventDispatcher dispatcher;
345 TestTarget target; 342 TestTarget target;
346 TestEventHandler h1(1); 343 TestEventHandler h1(1);
347 InvalidateTargetEventHandler invalidate_handler(2); 344 InvalidateTargetEventHandler invalidate_handler(2);
348 TestEventHandler h3(3); 345 TestEventHandler h3(3);
349 346
350 target.AddPreTargetHandler(&h1); 347 target.AddPreTargetHandler(&h1);
351 target.AddPreTargetHandler(&invalidate_handler); 348 target.AddPreTargetHandler(&invalidate_handler);
352 target.AddPreTargetHandler(&h3); 349 target.AddPreTargetHandler(&h3);
353 350
354 h1.set_expect_pre_target(true); 351 h1.set_expect_pre_target(true);
355 invalidate_handler.set_expect_pre_target(true); 352 invalidate_handler.set_expect_pre_target(true);
356 // |h3| should not receive events as the target will be invalidated. 353 // |h3| should not receive events as the target will be invalidated.
357 h3.set_expect_pre_target(false); 354 h3.set_expect_pre_target(false);
358 355
359 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), 0); 356 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), 0);
360 int result = dispatcher.ProcessEvent(&target, &mouse); 357 dispatcher.ProcessEvent(&target, &mouse);
361 EXPECT_FALSE(target.valid()); 358 EXPECT_FALSE(target.valid());
362 EXPECT_EQ(ER_CONSUMED, result); 359 EXPECT_TRUE(mouse.stopped_propagation());
363 EXPECT_EQ(2U, target.handler_list().size()); 360 EXPECT_EQ(2U, target.handler_list().size());
364 EXPECT_EQ(1, target.handler_list()[0]); 361 EXPECT_EQ(1, target.handler_list()[0]);
365 EXPECT_EQ(2, target.handler_list()[1]); 362 EXPECT_EQ(2, target.handler_list()[1]);
366 } 363 }
367 364
368 } // namespace ui 365 } // namespace ui
OLDNEW
« no previous file with comments | « ui/base/events/event_dispatcher.cc ('k') | ui/base/events/event_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698