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

Side by Side Diff: ash/sticky_keys/sticky_keys_unittest.cc

Issue 137373003: Show overlay displaying the state of all sticky keys when it is enabled. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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 "ash/sticky_keys/sticky_keys_controller.h" 5 #include "ash/sticky_keys/sticky_keys_controller.h"
6 6
7 #include <X11/Xlib.h> 7 #include <X11/Xlib.h>
8 #undef None 8 #undef None
9 #undef Bool 9 #undef Bool
10 #undef RootWindow 10 #undef RootWindow
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 // Used to construct the various X events. 284 // Used to construct the various X events.
285 ui::ScopedXI2Event scoped_xevent_; 285 ui::ScopedXI2Event scoped_xevent_;
286 286
287 DISALLOW_COPY_AND_ASSIGN(StickyKeysTest); 287 DISALLOW_COPY_AND_ASSIGN(StickyKeysTest);
288 }; 288 };
289 289
290 TEST_F(StickyKeysTest, BasicOneshotScenarioTest) { 290 TEST_F(StickyKeysTest, BasicOneshotScenarioTest) {
291 scoped_ptr<ui::KeyEvent> ev; 291 scoped_ptr<ui::KeyEvent> ev;
292 MockStickyKeysHandlerDelegate* mock_delegate = 292 MockStickyKeysHandlerDelegate* mock_delegate =
293 new MockStickyKeysHandlerDelegate(this); 293 new MockStickyKeysHandlerDelegate(this);
294 StickyKeysHandler sticky_key(ui::EF_SHIFT_DOWN, mock_delegate); 294 StickyKeysHandler sticky_key(STICKY_KEY_SHIFT, mock_delegate);
295 295
296 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 296 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
297 297
298 // By typing Shift key, internal state become ENABLED. 298 // By typing Shift key, internal state become ENABLED.
299 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); 299 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT);
300 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 300 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
301 301
302 ev.reset(GenerateKey(true, ui::VKEY_A)); 302 ev.reset(GenerateKey(true, ui::VKEY_A));
303 sticky_key.HandleKeyEvent(ev.get()); 303 sticky_key.HandleKeyEvent(ev.get());
304 304
305 // Next keyboard event is shift modified. 305 // Next keyboard event is shift modified.
306 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN); 306 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN);
307 307
308 ev.reset(GenerateKey(false, ui::VKEY_A)); 308 ev.reset(GenerateKey(false, ui::VKEY_A));
309 sticky_key.HandleKeyEvent(ev.get()); 309 sticky_key.HandleKeyEvent(ev.get());
310 310
311 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 311 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
312 // Making sure Shift up keyboard event is dispatched. 312 // Making sure Shift up keyboard event is dispatched.
313 ASSERT_EQ(2U, mock_delegate->GetEventCount()); 313 ASSERT_EQ(2U, mock_delegate->GetEventCount());
314 EXPECT_EQ(ui::ET_KEY_PRESSED, mock_delegate->GetEvent(0)->type()); 314 EXPECT_EQ(ui::ET_KEY_PRESSED, mock_delegate->GetEvent(0)->type());
315 EXPECT_EQ(ui::VKEY_A, 315 EXPECT_EQ(ui::VKEY_A,
316 static_cast<const ui::KeyEvent*>(mock_delegate->GetEvent(0)) 316 static_cast<const ui::KeyEvent*>(mock_delegate->GetEvent(0))
317 ->key_code()); 317 ->key_code());
318 EXPECT_EQ(ui::ET_KEY_RELEASED, mock_delegate->GetEvent(1)->type()); 318 EXPECT_EQ(ui::ET_KEY_RELEASED, mock_delegate->GetEvent(1)->type());
319 EXPECT_EQ(ui::VKEY_SHIFT, 319 EXPECT_EQ(ui::VKEY_SHIFT,
320 static_cast<const ui::KeyEvent*>(mock_delegate->GetEvent(1)) 320 static_cast<const ui::KeyEvent*>(mock_delegate->GetEvent(1))
321 ->key_code()); 321 ->key_code());
322 322
323 // Enabled state is one shot, so next key event should not be shift modified. 323 // Enabled state is one shot, so next key event should not be shift modified.
324 ev.reset(GenerateKey(true, ui::VKEY_A)); 324 ev.reset(GenerateKey(true, ui::VKEY_A));
325 sticky_key.HandleKeyEvent(ev.get()); 325 sticky_key.HandleKeyEvent(ev.get());
326 EXPECT_FALSE(ev->flags() & ui::EF_SHIFT_DOWN); 326 EXPECT_FALSE(ev->flags() & ui::EF_SHIFT_DOWN);
327 327
328 ev.reset(GenerateKey(false, ui::VKEY_A)); 328 ev.reset(GenerateKey(false, ui::VKEY_A));
329 sticky_key.HandleKeyEvent(ev.get()); 329 sticky_key.HandleKeyEvent(ev.get());
330 EXPECT_FALSE(ev->flags() & ui::EF_SHIFT_DOWN); 330 EXPECT_FALSE(ev->flags() & ui::EF_SHIFT_DOWN);
331 } 331 }
332 332
333 TEST_F(StickyKeysTest, BasicLockedScenarioTest) { 333 TEST_F(StickyKeysTest, BasicLockedScenarioTest) {
334 scoped_ptr<ui::KeyEvent> ev; 334 scoped_ptr<ui::KeyEvent> ev;
335 MockStickyKeysHandlerDelegate* mock_delegate = 335 MockStickyKeysHandlerDelegate* mock_delegate =
336 new MockStickyKeysHandlerDelegate(this); 336 new MockStickyKeysHandlerDelegate(this);
337 StickyKeysHandler sticky_key(ui::EF_SHIFT_DOWN, mock_delegate); 337 StickyKeysHandler sticky_key(STICKY_KEY_SHIFT, mock_delegate);
338 338
339 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 339 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
340 340
341 // By typing shift key, internal state become ENABLED. 341 // By typing shift key, internal state become ENABLED.
342 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); 342 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT);
343 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 343 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
344 344
345 // By typing shift key again, internal state become LOCKED. 345 // By typing shift key again, internal state become LOCKED.
346 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); 346 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT);
347 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); 347 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state());
348 348
349 // All keyboard events including keyUp become shift modified. 349 // All keyboard events including keyUp become shift modified.
350 ev.reset(GenerateKey(true, ui::VKEY_A)); 350 ev.reset(GenerateKey(true, ui::VKEY_A));
351 sticky_key.HandleKeyEvent(ev.get()); 351 sticky_key.HandleKeyEvent(ev.get());
352 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN); 352 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN);
353 353
354 ev.reset(GenerateKey(false, ui::VKEY_A)); 354 ev.reset(GenerateKey(false, ui::VKEY_A));
355 sticky_key.HandleKeyEvent(ev.get()); 355 sticky_key.HandleKeyEvent(ev.get());
356 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN); 356 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN);
357 357
358 // Locked state keeps after normal keyboard event. 358 // Locked state keeps after normal keyboard event.
359 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); 359 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state());
360 360
361 ev.reset(GenerateKey(true, ui::VKEY_B)); 361 ev.reset(GenerateKey(true, ui::VKEY_B));
362 sticky_key.HandleKeyEvent(ev.get()); 362 sticky_key.HandleKeyEvent(ev.get());
363 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN); 363 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN);
364 364
365 ev.reset(GenerateKey(false, ui::VKEY_B)); 365 ev.reset(GenerateKey(false, ui::VKEY_B));
366 sticky_key.HandleKeyEvent(ev.get()); 366 sticky_key.HandleKeyEvent(ev.get());
367 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN); 367 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN);
368 368
369 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); 369 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state());
370 370
371 // By typing shift key again, internal state become back to DISABLED. 371 // By typing shift key again, internal state become back to DISABLED.
372 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); 372 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT);
373 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 373 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
374 } 374 }
375 375
376 TEST_F(StickyKeysTest, NonTargetModifierTest) { 376 TEST_F(StickyKeysTest, NonTargetModifierTest) {
377 scoped_ptr<ui::KeyEvent> ev; 377 scoped_ptr<ui::KeyEvent> ev;
378 MockStickyKeysHandlerDelegate* mock_delegate = 378 MockStickyKeysHandlerDelegate* mock_delegate =
379 new MockStickyKeysHandlerDelegate(this); 379 new MockStickyKeysHandlerDelegate(this);
380 StickyKeysHandler sticky_key(ui::EF_SHIFT_DOWN, mock_delegate); 380 StickyKeysHandler sticky_key(STICKY_KEY_SHIFT, mock_delegate);
381 381
382 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 382 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
383 383
384 // Non target modifier key does not affect internal state 384 // Non target modifier key does not affect internal state
385 ev.reset(GenerateKey(true, ui::VKEY_MENU)); 385 ev.reset(GenerateKey(true, ui::VKEY_MENU));
386 sticky_key.HandleKeyEvent(ev.get()); 386 sticky_key.HandleKeyEvent(ev.get());
387 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 387 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
388 388
389 ev.reset(GenerateKey(false, ui::VKEY_MENU)); 389 ev.reset(GenerateKey(false, ui::VKEY_MENU));
390 sticky_key.HandleKeyEvent(ev.get()); 390 sticky_key.HandleKeyEvent(ev.get());
391 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 391 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
392 392
393 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); 393 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT);
394 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 394 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
395 395
396 // Non target modifier key does not affect internal state 396 // Non target modifier key does not affect internal state
397 ev.reset(GenerateKey(true, ui::VKEY_MENU)); 397 ev.reset(GenerateKey(true, ui::VKEY_MENU));
398 sticky_key.HandleKeyEvent(ev.get()); 398 sticky_key.HandleKeyEvent(ev.get());
399 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 399 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
400 400
401 ev.reset(GenerateKey(false, ui::VKEY_MENU)); 401 ev.reset(GenerateKey(false, ui::VKEY_MENU));
402 sticky_key.HandleKeyEvent(ev.get()); 402 sticky_key.HandleKeyEvent(ev.get());
403 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 403 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
404 404
405 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); 405 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT);
406 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); 406 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state());
407 407
408 // Non target modifier key does not affect internal state 408 // Non target modifier key does not affect internal state
409 ev.reset(GenerateKey(true, ui::VKEY_MENU)); 409 ev.reset(GenerateKey(true, ui::VKEY_MENU));
410 sticky_key.HandleKeyEvent(ev.get()); 410 sticky_key.HandleKeyEvent(ev.get());
411 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); 411 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state());
412 412
413 ev.reset(GenerateKey(false, ui::VKEY_MENU)); 413 ev.reset(GenerateKey(false, ui::VKEY_MENU));
414 sticky_key.HandleKeyEvent(ev.get()); 414 sticky_key.HandleKeyEvent(ev.get());
415 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); 415 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state());
416 } 416 }
417 417
418 TEST_F(StickyKeysTest, NormalShortcutTest) { 418 TEST_F(StickyKeysTest, NormalShortcutTest) {
419 // Sticky keys should not be enabled if we perform a normal shortcut. 419 // Sticky keys should not be enabled if we perform a normal shortcut.
420 scoped_ptr<ui::KeyEvent> ev; 420 scoped_ptr<ui::KeyEvent> ev;
421 MockStickyKeysHandlerDelegate* mock_delegate = 421 MockStickyKeysHandlerDelegate* mock_delegate =
422 new MockStickyKeysHandlerDelegate(this); 422 new MockStickyKeysHandlerDelegate(this);
423 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); 423 StickyKeysHandler sticky_key(STICKY_KEY_CONTROL, mock_delegate);
424 424
425 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 425 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
426 426
427 // Perform ctrl+n shortcut. 427 // Perform ctrl+n shortcut.
428 ev.reset(GenerateKey(true, ui::VKEY_CONTROL)); 428 ev.reset(GenerateKey(true, ui::VKEY_CONTROL));
429 sticky_key.HandleKeyEvent(ev.get()); 429 sticky_key.HandleKeyEvent(ev.get());
430 ev.reset(GenerateKey(true, ui::VKEY_N)); 430 ev.reset(GenerateKey(true, ui::VKEY_N));
431 sticky_key.HandleKeyEvent(ev.get()); 431 sticky_key.HandleKeyEvent(ev.get());
432 ev.reset(GenerateKey(false, ui::VKEY_N)); 432 ev.reset(GenerateKey(false, ui::VKEY_N));
433 sticky_key.HandleKeyEvent(ev.get()); 433 sticky_key.HandleKeyEvent(ev.get());
434 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 434 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
435 435
436 // Sticky keys should not be enabled afterwards. 436 // Sticky keys should not be enabled afterwards.
437 ev.reset(GenerateKey(false, ui::VKEY_CONTROL)); 437 ev.reset(GenerateKey(false, ui::VKEY_CONTROL));
438 sticky_key.HandleKeyEvent(ev.get()); 438 sticky_key.HandleKeyEvent(ev.get());
439 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 439 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
440 } 440 }
441 441
442 TEST_F(StickyKeysTest, NormalModifiedClickTest) { 442 TEST_F(StickyKeysTest, NormalModifiedClickTest) {
443 scoped_ptr<ui::KeyEvent> kev; 443 scoped_ptr<ui::KeyEvent> kev;
444 scoped_ptr<ui::MouseEvent> mev; 444 scoped_ptr<ui::MouseEvent> mev;
445 MockStickyKeysHandlerDelegate* mock_delegate = 445 MockStickyKeysHandlerDelegate* mock_delegate =
446 new MockStickyKeysHandlerDelegate(this); 446 new MockStickyKeysHandlerDelegate(this);
447 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); 447 StickyKeysHandler sticky_key(STICKY_KEY_CONTROL, mock_delegate);
448 448
449 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 449 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
450 450
451 // Perform ctrl+click. 451 // Perform ctrl+click.
452 kev.reset(GenerateKey(true, ui::VKEY_CONTROL)); 452 kev.reset(GenerateKey(true, ui::VKEY_CONTROL));
453 sticky_key.HandleKeyEvent(kev.get()); 453 sticky_key.HandleKeyEvent(kev.get());
454 mev.reset(GenerateMouseEvent(true)); 454 mev.reset(GenerateMouseEvent(true));
455 sticky_key.HandleMouseEvent(mev.get()); 455 sticky_key.HandleMouseEvent(mev.get());
456 mev.reset(GenerateMouseEvent(false)); 456 mev.reset(GenerateMouseEvent(false));
457 sticky_key.HandleMouseEvent(mev.get()); 457 sticky_key.HandleMouseEvent(mev.get());
458 458
459 // Sticky keys should not be enabled afterwards. 459 // Sticky keys should not be enabled afterwards.
460 kev.reset(GenerateKey(false, ui::VKEY_CONTROL)); 460 kev.reset(GenerateKey(false, ui::VKEY_CONTROL));
461 sticky_key.HandleKeyEvent(kev.get()); 461 sticky_key.HandleKeyEvent(kev.get());
462 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 462 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
463 } 463 }
464 464
465 TEST_F(StickyKeysTest, MouseMovedModifierTest) { 465 TEST_F(StickyKeysTest, MouseMovedModifierTest) {
466 scoped_ptr<ui::KeyEvent> kev; 466 scoped_ptr<ui::KeyEvent> kev;
467 scoped_ptr<ui::MouseEvent> mev; 467 scoped_ptr<ui::MouseEvent> mev;
468 MockStickyKeysHandlerDelegate* mock_delegate = 468 MockStickyKeysHandlerDelegate* mock_delegate =
469 new MockStickyKeysHandlerDelegate(this); 469 new MockStickyKeysHandlerDelegate(this);
470 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); 470 StickyKeysHandler sticky_key(STICKY_KEY_CONTROL, mock_delegate);
471 471
472 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 472 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
473 473
474 // Press ctrl and handle mouse move events. 474 // Press ctrl and handle mouse move events.
475 kev.reset(GenerateKey(true, ui::VKEY_CONTROL)); 475 kev.reset(GenerateKey(true, ui::VKEY_CONTROL));
476 sticky_key.HandleKeyEvent(kev.get()); 476 sticky_key.HandleKeyEvent(kev.get());
477 mev.reset(GenerateSynthesizedMouseEvent(0, 0)); 477 mev.reset(GenerateSynthesizedMouseEvent(0, 0));
478 sticky_key.HandleMouseEvent(mev.get()); 478 sticky_key.HandleMouseEvent(mev.get());
479 mev.reset(GenerateSynthesizedMouseEvent(100, 100)); 479 mev.reset(GenerateSynthesizedMouseEvent(100, 100));
480 sticky_key.HandleMouseEvent(mev.get()); 480 sticky_key.HandleMouseEvent(mev.get());
481 481
482 // Sticky keys should be enabled afterwards. 482 // Sticky keys should be enabled afterwards.
483 kev.reset(GenerateKey(false, ui::VKEY_CONTROL)); 483 kev.reset(GenerateKey(false, ui::VKEY_CONTROL));
484 sticky_key.HandleKeyEvent(kev.get()); 484 sticky_key.HandleKeyEvent(kev.get());
485 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 485 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
486 } 486 }
487 487
488 TEST_F(StickyKeysTest, NormalModifiedScrollTest) { 488 TEST_F(StickyKeysTest, NormalModifiedScrollTest) {
489 ui::SetUpScrollDeviceForTest(kScrollDeviceId); 489 ui::SetUpScrollDeviceForTest(kScrollDeviceId);
490 490
491 scoped_ptr<ui::KeyEvent> kev; 491 scoped_ptr<ui::KeyEvent> kev;
492 scoped_ptr<ui::ScrollEvent> sev; 492 scoped_ptr<ui::ScrollEvent> sev;
493 MockStickyKeysHandlerDelegate* mock_delegate = 493 MockStickyKeysHandlerDelegate* mock_delegate =
494 new MockStickyKeysHandlerDelegate(this); 494 new MockStickyKeysHandlerDelegate(this);
495 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); 495 StickyKeysHandler sticky_key(STICKY_KEY_CONTROL, mock_delegate);
496 496
497 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 497 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
498 498
499 // Perform ctrl+scroll. 499 // Perform ctrl+scroll.
500 kev.reset(GenerateKey(true, ui::VKEY_CONTROL)); 500 kev.reset(GenerateKey(true, ui::VKEY_CONTROL));
501 sev.reset(GenerateFlingScrollEvent(0, true)); 501 sev.reset(GenerateFlingScrollEvent(0, true));
502 sticky_key.HandleScrollEvent(sev.get()); 502 sticky_key.HandleScrollEvent(sev.get());
503 sev.reset(GenerateScrollEvent(10)); 503 sev.reset(GenerateScrollEvent(10));
504 sticky_key.HandleScrollEvent(sev.get()); 504 sticky_key.HandleScrollEvent(sev.get());
505 sev.reset(GenerateFlingScrollEvent(10, false)); 505 sev.reset(GenerateFlingScrollEvent(10, false));
506 sticky_key.HandleScrollEvent(sev.get()); 506 sticky_key.HandleScrollEvent(sev.get());
507 507
508 // Sticky keys should not be enabled afterwards. 508 // Sticky keys should not be enabled afterwards.
509 kev.reset(GenerateKey(false, ui::VKEY_CONTROL)); 509 kev.reset(GenerateKey(false, ui::VKEY_CONTROL));
510 sticky_key.HandleKeyEvent(kev.get()); 510 sticky_key.HandleKeyEvent(kev.get());
511 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 511 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
512 } 512 }
513 513
514 TEST_F(StickyKeysTest, MouseEventOneshot) { 514 TEST_F(StickyKeysTest, MouseEventOneshot) {
515 scoped_ptr<ui::MouseEvent> ev; 515 scoped_ptr<ui::MouseEvent> ev;
516 scoped_ptr<ui::KeyEvent> kev; 516 scoped_ptr<ui::KeyEvent> kev;
517 MockStickyKeysHandlerDelegate* mock_delegate = 517 MockStickyKeysHandlerDelegate* mock_delegate =
518 new MockStickyKeysHandlerDelegate(this); 518 new MockStickyKeysHandlerDelegate(this);
519 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); 519 StickyKeysHandler sticky_key(STICKY_KEY_CONTROL, mock_delegate);
520 520
521 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 521 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
522 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); 522 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL);
523 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 523 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
524 524
525 // We should still be in the ENABLED state until we get the mouse 525 // We should still be in the ENABLED state until we get the mouse
526 // release event. 526 // release event.
527 ev.reset(GenerateMouseEvent(true)); 527 ev.reset(GenerateMouseEvent(true));
528 sticky_key.HandleMouseEvent(ev.get()); 528 sticky_key.HandleMouseEvent(ev.get());
529 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); 529 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN);
530 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 530 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
531 531
532 ev.reset(GenerateMouseEvent(false)); 532 ev.reset(GenerateMouseEvent(false));
533 sticky_key.HandleMouseEvent(ev.get()); 533 sticky_key.HandleMouseEvent(ev.get());
534 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); 534 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN);
535 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 535 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
536 536
537 // Making sure modifier key release event is dispatched in the right order. 537 // Making sure modifier key release event is dispatched in the right order.
538 ASSERT_EQ(2u, mock_delegate->GetEventCount()); 538 ASSERT_EQ(2u, mock_delegate->GetEventCount());
539 EXPECT_EQ(ui::ET_MOUSE_RELEASED, mock_delegate->GetEvent(0)->type()); 539 EXPECT_EQ(ui::ET_MOUSE_RELEASED, mock_delegate->GetEvent(0)->type());
540 EXPECT_EQ(ui::ET_KEY_RELEASED, mock_delegate->GetEvent(1)->type()); 540 EXPECT_EQ(ui::ET_KEY_RELEASED, mock_delegate->GetEvent(1)->type());
541 EXPECT_EQ(ui::VKEY_CONTROL, 541 EXPECT_EQ(ui::VKEY_CONTROL,
542 static_cast<const ui::KeyEvent*>(mock_delegate->GetEvent(1)) 542 static_cast<const ui::KeyEvent*>(mock_delegate->GetEvent(1))
543 ->key_code()); 543 ->key_code());
544 544
545 // Enabled state is one shot, so next click should not be control modified. 545 // Enabled state is one shot, so next click should not be control modified.
546 ev.reset(GenerateMouseEvent(true)); 546 ev.reset(GenerateMouseEvent(true));
547 sticky_key.HandleMouseEvent(ev.get()); 547 sticky_key.HandleMouseEvent(ev.get());
548 EXPECT_FALSE(ev->flags() & ui::EF_CONTROL_DOWN); 548 EXPECT_FALSE(ev->flags() & ui::EF_CONTROL_DOWN);
549 549
550 ev.reset(GenerateMouseEvent(false)); 550 ev.reset(GenerateMouseEvent(false));
551 sticky_key.HandleMouseEvent(ev.get()); 551 sticky_key.HandleMouseEvent(ev.get());
552 EXPECT_FALSE(ev->flags() & ui::EF_CONTROL_DOWN); 552 EXPECT_FALSE(ev->flags() & ui::EF_CONTROL_DOWN);
553 } 553 }
554 554
555 TEST_F(StickyKeysTest, MouseEventLocked) { 555 TEST_F(StickyKeysTest, MouseEventLocked) {
556 scoped_ptr<ui::MouseEvent> ev; 556 scoped_ptr<ui::MouseEvent> ev;
557 scoped_ptr<ui::KeyEvent> kev; 557 scoped_ptr<ui::KeyEvent> kev;
558 MockStickyKeysHandlerDelegate* mock_delegate = 558 MockStickyKeysHandlerDelegate* mock_delegate =
559 new MockStickyKeysHandlerDelegate(this); 559 new MockStickyKeysHandlerDelegate(this);
560 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); 560 StickyKeysHandler sticky_key(STICKY_KEY_CONTROL, mock_delegate);
561 561
562 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 562 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
563 563
564 // Pressing modifier key twice should make us enter lock state. 564 // Pressing modifier key twice should make us enter lock state.
565 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); 565 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL);
566 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 566 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
567 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); 567 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL);
568 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); 568 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state());
569 569
570 // Mouse events should not disable locked mode. 570 // Mouse events should not disable locked mode.
571 for (int i = 0; i < 3; ++i) { 571 for (int i = 0; i < 3; ++i) {
572 ev.reset(GenerateMouseEvent(true)); 572 ev.reset(GenerateMouseEvent(true));
573 sticky_key.HandleMouseEvent(ev.get()); 573 sticky_key.HandleMouseEvent(ev.get());
574 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); 574 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN);
575 ev.reset(GenerateMouseEvent(false)); 575 ev.reset(GenerateMouseEvent(false));
576 sticky_key.HandleMouseEvent(ev.get()); 576 sticky_key.HandleMouseEvent(ev.get());
577 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); 577 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN);
578 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); 578 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state());
579 } 579 }
580 580
581 // Test with mouse wheel. 581 // Test with mouse wheel.
582 for (int i = 0; i < 3; ++i) { 582 for (int i = 0; i < 3; ++i) {
583 ev.reset(GenerateMouseWheelEvent(ui::MouseWheelEvent::kWheelDelta)); 583 ev.reset(GenerateMouseWheelEvent(ui::MouseWheelEvent::kWheelDelta));
584 sticky_key.HandleMouseEvent(ev.get()); 584 sticky_key.HandleMouseEvent(ev.get());
585 ev.reset(GenerateMouseWheelEvent(-ui::MouseWheelEvent::kWheelDelta)); 585 ev.reset(GenerateMouseWheelEvent(-ui::MouseWheelEvent::kWheelDelta));
586 sticky_key.HandleMouseEvent(ev.get()); 586 sticky_key.HandleMouseEvent(ev.get());
587 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); 587 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN);
588 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); 588 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state());
589 } 589 }
590 590
591 // Test mixed case with mouse events and key events. 591 // Test mixed case with mouse events and key events.
592 ev.reset(GenerateMouseWheelEvent(ui::MouseWheelEvent::kWheelDelta)); 592 ev.reset(GenerateMouseWheelEvent(ui::MouseWheelEvent::kWheelDelta));
593 sticky_key.HandleMouseEvent(ev.get()); 593 sticky_key.HandleMouseEvent(ev.get());
594 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); 594 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN);
595 kev.reset(GenerateKey(true, ui::VKEY_N)); 595 kev.reset(GenerateKey(true, ui::VKEY_N));
596 sticky_key.HandleKeyEvent(kev.get()); 596 sticky_key.HandleKeyEvent(kev.get());
597 EXPECT_TRUE(kev->flags() & ui::EF_CONTROL_DOWN); 597 EXPECT_TRUE(kev->flags() & ui::EF_CONTROL_DOWN);
598 kev.reset(GenerateKey(false, ui::VKEY_N)); 598 kev.reset(GenerateKey(false, ui::VKEY_N));
599 sticky_key.HandleKeyEvent(kev.get()); 599 sticky_key.HandleKeyEvent(kev.get());
600 EXPECT_TRUE(kev->flags() & ui::EF_CONTROL_DOWN); 600 EXPECT_TRUE(kev->flags() & ui::EF_CONTROL_DOWN);
601 601
602 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); 602 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state());
603 } 603 }
604 604
605 TEST_F(StickyKeysTest, ScrollEventOneshot) { 605 TEST_F(StickyKeysTest, ScrollEventOneshot) {
606 ui::SetUpScrollDeviceForTest(kScrollDeviceId); 606 ui::SetUpScrollDeviceForTest(kScrollDeviceId);
607 // Disable Australlian scrolling. 607 // Disable Australlian scrolling.
608 ui::DeviceDataManager::GetInstance()->set_natural_scroll_enabled(true); 608 ui::DeviceDataManager::GetInstance()->set_natural_scroll_enabled(true);
609 609
610 scoped_ptr<ui::ScrollEvent> ev; 610 scoped_ptr<ui::ScrollEvent> ev;
611 scoped_ptr<ui::KeyEvent> kev; 611 scoped_ptr<ui::KeyEvent> kev;
612 MockStickyKeysHandlerDelegate* mock_delegate = 612 MockStickyKeysHandlerDelegate* mock_delegate =
613 new MockStickyKeysHandlerDelegate(this); 613 new MockStickyKeysHandlerDelegate(this);
614 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); 614 StickyKeysHandler sticky_key(STICKY_KEY_CONTROL, mock_delegate);
615 615
616 int scroll_deltas[] = {-10, 10}; 616 int scroll_deltas[] = {-10, 10};
617 for (int i = 0; i < 2; ++i) { 617 for (int i = 0; i < 2; ++i) {
618 mock_delegate->ClearEvents(); 618 mock_delegate->ClearEvents();
619 619
620 // Enable sticky keys. 620 // Enable sticky keys.
621 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 621 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
622 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); 622 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL);
623 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 623 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
624 624
625 // Test a scroll sequence. Sticky keys should only be disabled at the end 625 // Test a scroll sequence. Sticky keys should only be disabled at the end
626 // of the scroll sequence. Fling cancel event starts the scroll sequence. 626 // of the scroll sequence. Fling cancel event starts the scroll sequence.
627 ev.reset(GenerateFlingScrollEvent(0, true)); 627 ev.reset(GenerateFlingScrollEvent(0, true));
628 sticky_key.HandleScrollEvent(ev.get()); 628 sticky_key.HandleScrollEvent(ev.get());
629 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); 629 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN);
630 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 630 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
631 631
632 // Scrolls should all be modified but not disable sticky keys. 632 // Scrolls should all be modified but not disable sticky keys.
633 for (int j = 0; j < 3; ++j) { 633 for (int j = 0; j < 3; ++j) {
634 ev.reset(GenerateScrollEvent(scroll_deltas[i])); 634 ev.reset(GenerateScrollEvent(scroll_deltas[i]));
635 sticky_key.HandleScrollEvent(ev.get()); 635 sticky_key.HandleScrollEvent(ev.get());
636 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); 636 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN);
637 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 637 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
638 } 638 }
639 639
640 // Fling start event ends scroll sequence. 640 // Fling start event ends scroll sequence.
641 ev.reset(GenerateFlingScrollEvent(scroll_deltas[i], false)); 641 ev.reset(GenerateFlingScrollEvent(scroll_deltas[i], false));
642 sticky_key.HandleScrollEvent(ev.get()); 642 sticky_key.HandleScrollEvent(ev.get());
643 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); 643 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN);
644 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 644 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
645 645
646 ASSERT_EQ(2U, mock_delegate->GetEventCount()); 646 ASSERT_EQ(2U, mock_delegate->GetEventCount());
647 EXPECT_EQ(ui::ET_SCROLL_FLING_START, mock_delegate->GetEvent(0)->type()); 647 EXPECT_EQ(ui::ET_SCROLL_FLING_START, mock_delegate->GetEvent(0)->type());
648 EXPECT_FLOAT_EQ(scroll_deltas[i], 648 EXPECT_FLOAT_EQ(scroll_deltas[i],
649 static_cast<const ui::ScrollEvent*>( 649 static_cast<const ui::ScrollEvent*>(
650 mock_delegate->GetEvent(0))->y_offset()); 650 mock_delegate->GetEvent(0))->y_offset());
651 EXPECT_EQ(ui::ET_KEY_RELEASED, mock_delegate->GetEvent(1)->type()); 651 EXPECT_EQ(ui::ET_KEY_RELEASED, mock_delegate->GetEvent(1)->type());
652 EXPECT_EQ(ui::VKEY_CONTROL, 652 EXPECT_EQ(ui::VKEY_CONTROL,
653 static_cast<const ui::KeyEvent*>(mock_delegate->GetEvent(1)) 653 static_cast<const ui::KeyEvent*>(mock_delegate->GetEvent(1))
654 ->key_code()); 654 ->key_code());
655 } 655 }
656 } 656 }
657 657
658 TEST_F(StickyKeysTest, ScrollDirectionChanged) { 658 TEST_F(StickyKeysTest, ScrollDirectionChanged) {
659 ui::SetUpScrollDeviceForTest(kScrollDeviceId); 659 ui::SetUpScrollDeviceForTest(kScrollDeviceId);
660 // Disable Australlian scrolling. 660 // Disable Australlian scrolling.
661 ui::DeviceDataManager::GetInstance()->set_natural_scroll_enabled(true); 661 ui::DeviceDataManager::GetInstance()->set_natural_scroll_enabled(true);
662 662
663 scoped_ptr<ui::ScrollEvent> ev; 663 scoped_ptr<ui::ScrollEvent> ev;
664 scoped_ptr<ui::KeyEvent> kev; 664 scoped_ptr<ui::KeyEvent> kev;
665 MockStickyKeysHandlerDelegate* mock_delegate = 665 MockStickyKeysHandlerDelegate* mock_delegate =
666 new MockStickyKeysHandlerDelegate(this); 666 new MockStickyKeysHandlerDelegate(this);
667 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); 667 StickyKeysHandler sticky_key(STICKY_KEY_CONTROL, mock_delegate);
668 668
669 // Test direction change with both boundary value and negative value. 669 // Test direction change with both boundary value and negative value.
670 const int direction_change_values[2] = {0, -10}; 670 const int direction_change_values[2] = {0, -10};
671 for (int i = 0; i < 2; ++i) { 671 for (int i = 0; i < 2; ++i) {
672 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); 672 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL);
673 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 673 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
674 674
675 // Fling cancel starts scroll sequence. 675 // Fling cancel starts scroll sequence.
676 ev.reset(GenerateFlingScrollEvent(0, true)); 676 ev.reset(GenerateFlingScrollEvent(0, true));
677 sticky_key.HandleScrollEvent(ev.get()); 677 sticky_key.HandleScrollEvent(ev.get());
678 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 678 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
679 679
680 // Test that changing directions in a scroll sequence will 680 // Test that changing directions in a scroll sequence will
681 // return sticky keys to DISABLED state. 681 // return sticky keys to DISABLED state.
682 for (int j = 0; j < 3; ++j) { 682 for (int j = 0; j < 3; ++j) {
683 ev.reset(GenerateScrollEvent(10)); 683 ev.reset(GenerateScrollEvent(10));
684 sticky_key.HandleScrollEvent(ev.get()); 684 sticky_key.HandleScrollEvent(ev.get());
685 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); 685 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN);
686 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 686 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
687 } 687 }
688 688
689 ev.reset(GenerateScrollEvent(direction_change_values[i])); 689 ev.reset(GenerateScrollEvent(direction_change_values[i]));
690 sticky_key.HandleScrollEvent(ev.get()); 690 sticky_key.HandleScrollEvent(ev.get());
691 EXPECT_FALSE(ev->flags() & ui::EF_CONTROL_DOWN); 691 EXPECT_FALSE(ev->flags() & ui::EF_CONTROL_DOWN);
692 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 692 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
693 } 693 }
694 } 694 }
695 695
696 TEST_F(StickyKeysTest, ScrollEventLocked) { 696 TEST_F(StickyKeysTest, ScrollEventLocked) {
697 ui::SetUpScrollDeviceForTest(kScrollDeviceId); 697 ui::SetUpScrollDeviceForTest(kScrollDeviceId);
698 // Disable Australlian scrolling. 698 // Disable Australlian scrolling.
699 ui::DeviceDataManager::GetInstance()->set_natural_scroll_enabled(true); 699 ui::DeviceDataManager::GetInstance()->set_natural_scroll_enabled(true);
700 700
701 scoped_ptr<ui::ScrollEvent> ev; 701 scoped_ptr<ui::ScrollEvent> ev;
702 scoped_ptr<ui::KeyEvent> kev; 702 scoped_ptr<ui::KeyEvent> kev;
703 MockStickyKeysHandlerDelegate* mock_delegate = 703 MockStickyKeysHandlerDelegate* mock_delegate =
704 new MockStickyKeysHandlerDelegate(this); 704 new MockStickyKeysHandlerDelegate(this);
705 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); 705 StickyKeysHandler sticky_key(STICKY_KEY_CONTROL, mock_delegate);
706 706
707 // Lock sticky keys. 707 // Lock sticky keys.
708 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); 708 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL);
709 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); 709 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL);
710 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); 710 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state());
711 711
712 // Test scroll events are correctly modified in locked state. 712 // Test scroll events are correctly modified in locked state.
713 for (int i = 0; i < 5; ++i) { 713 for (int i = 0; i < 5; ++i) {
714 // Fling cancel starts scroll sequence. 714 // Fling cancel starts scroll sequence.
715 ev.reset(GenerateFlingScrollEvent(0, true)); 715 ev.reset(GenerateFlingScrollEvent(0, true));
716 sticky_key.HandleScrollEvent(ev.get()); 716 sticky_key.HandleScrollEvent(ev.get());
717 717
718 ev.reset(GenerateScrollEvent(10)); 718 ev.reset(GenerateScrollEvent(10));
719 sticky_key.HandleScrollEvent(ev.get()); 719 sticky_key.HandleScrollEvent(ev.get());
720 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); 720 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN);
721 ev.reset(GenerateScrollEvent(-10)); 721 ev.reset(GenerateScrollEvent(-10));
722 sticky_key.HandleScrollEvent(ev.get()); 722 sticky_key.HandleScrollEvent(ev.get());
723 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); 723 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN);
724 724
725 // Fling start ends scroll sequence. 725 // Fling start ends scroll sequence.
726 ev.reset(GenerateFlingScrollEvent(-10, false)); 726 ev.reset(GenerateFlingScrollEvent(-10, false));
727 sticky_key.HandleScrollEvent(ev.get()); 727 sticky_key.HandleScrollEvent(ev.get());
728 } 728 }
729 729
730 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); 730 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state());
731 } 731 }
732 732
733 TEST_F(StickyKeysTest, EventTargetDestroyed) { 733 TEST_F(StickyKeysTest, EventTargetDestroyed) {
734 scoped_ptr<ui::KeyEvent> ev; 734 scoped_ptr<ui::KeyEvent> ev;
735 MockStickyKeysHandlerDelegate* mock_delegate = 735 MockStickyKeysHandlerDelegate* mock_delegate =
736 new MockStickyKeysHandlerDelegate(this); 736 new MockStickyKeysHandlerDelegate(this);
737 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); 737 StickyKeysHandler sticky_key(STICKY_KEY_CONTROL, mock_delegate);
738 738
739 target()->Focus(); 739 target()->Focus();
740 740
741 // Go into ENABLED state. 741 // Go into ENABLED state.
742 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 742 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
743 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); 743 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL);
744 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 744 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
745 745
746 // CTRL+J is a special shortcut that will destroy the event target. 746 // CTRL+J is a special shortcut that will destroy the event target.
747 ev.reset(GenerateKey(true, ui::VKEY_J)); 747 ev.reset(GenerateKey(true, ui::VKEY_J));
748 sticky_key.HandleKeyEvent(ev.get()); 748 sticky_key.HandleKeyEvent(ev.get());
749 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 749 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
750 EXPECT_FALSE(target()); 750 EXPECT_FALSE(target());
751 } 751 }
752 752
753 TEST_F(StickyKeysTest, SynthesizedEvents) { 753 TEST_F(StickyKeysTest, SynthesizedEvents) {
754 // Non-native, internally generated events should be properly handled 754 // Non-native, internally generated events should be properly handled
755 // by sticky keys. 755 // by sticky keys.
756 MockStickyKeysHandlerDelegate* mock_delegate = 756 MockStickyKeysHandlerDelegate* mock_delegate =
757 new MockStickyKeysHandlerDelegate(this); 757 new MockStickyKeysHandlerDelegate(this);
758 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); 758 StickyKeysHandler sticky_key(STICKY_KEY_CONTROL, mock_delegate);
759 759
760 // Test non-native key events. 760 // Test non-native key events.
761 scoped_ptr<ui::KeyEvent> kev; 761 scoped_ptr<ui::KeyEvent> kev;
762 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); 762 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL);
763 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 763 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
764 764
765 kev.reset(GenerateSynthesizedKeyEvent(true, ui::VKEY_K)); 765 kev.reset(GenerateSynthesizedKeyEvent(true, ui::VKEY_K));
766 sticky_key.HandleKeyEvent(kev.get()); 766 sticky_key.HandleKeyEvent(kev.get());
767 EXPECT_TRUE(kev->flags() & ui::EF_CONTROL_DOWN); 767 EXPECT_TRUE(kev->flags() & ui::EF_CONTROL_DOWN);
768 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 768 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
769 769
770 kev.reset(GenerateSynthesizedKeyEvent(false, ui::VKEY_K)); 770 kev.reset(GenerateSynthesizedKeyEvent(false, ui::VKEY_K));
771 sticky_key.HandleKeyEvent(kev.get()); 771 sticky_key.HandleKeyEvent(kev.get());
772 EXPECT_FALSE(kev->flags() & ui::EF_CONTROL_DOWN); 772 EXPECT_FALSE(kev->flags() & ui::EF_CONTROL_DOWN);
773 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 773 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
774 774
775 // Test non-native mouse events. 775 // Test non-native mouse events.
776 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); 776 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL);
777 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 777 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
778 778
779 scoped_ptr<ui::MouseEvent> mev; 779 scoped_ptr<ui::MouseEvent> mev;
780 mev.reset(GenerateSynthesizedMouseEvent(true)); 780 mev.reset(GenerateSynthesizedMouseEvent(true));
781 sticky_key.HandleMouseEvent(mev.get()); 781 sticky_key.HandleMouseEvent(mev.get());
782 EXPECT_TRUE(mev->flags() & ui::EF_CONTROL_DOWN); 782 EXPECT_TRUE(mev->flags() & ui::EF_CONTROL_DOWN);
783 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); 783 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state());
784 784
785 mev.reset(GenerateSynthesizedMouseEvent(false)); 785 mev.reset(GenerateSynthesizedMouseEvent(false));
786 sticky_key.HandleMouseEvent(mev.get()); 786 sticky_key.HandleMouseEvent(mev.get());
787 EXPECT_TRUE(mev->flags() & ui::EF_CONTROL_DOWN); 787 EXPECT_TRUE(mev->flags() & ui::EF_CONTROL_DOWN);
788 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); 788 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
789 } 789 }
790 790
791 TEST_F(StickyKeysTest, KeyEventDispatchImpl) { 791 TEST_F(StickyKeysTest, KeyEventDispatchImpl) {
792 // Test the actual key event dispatch implementation. 792 // Test the actual key event dispatch implementation.
793 EventBuffer buffer; 793 EventBuffer buffer;
794 ScopedVector<ui::Event> events; 794 ScopedVector<ui::Event> events;
795 aura::WindowTreeHostDelegate* delegate = Shell::GetPrimaryRootWindow() 795 aura::WindowTreeHostDelegate* delegate = Shell::GetPrimaryRootWindow()
796 ->GetDispatcher()->AsWindowTreeHostDelegate(); 796 ->GetDispatcher()->AsWindowTreeHostDelegate();
797 Shell::GetInstance()->AddPreTargetHandler(&buffer); 797 Shell::GetInstance()->AddPreTargetHandler(&buffer);
798 Shell::GetInstance()->sticky_keys_controller()->Enable(true); 798 Shell::GetInstance()->sticky_keys_controller()->Enable(true);
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
904 static_cast<ui::MouseWheelEvent*>(events[0])->y_offset()); 904 static_cast<ui::MouseWheelEvent*>(events[0])->y_offset());
905 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); 905 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN);
906 EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type()); 906 EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type());
907 EXPECT_EQ(ui::VKEY_CONTROL, 907 EXPECT_EQ(ui::VKEY_CONTROL,
908 static_cast<ui::KeyEvent*>(events[1])->key_code()); 908 static_cast<ui::KeyEvent*>(events[1])->key_code());
909 909
910 Shell::GetInstance()->RemovePreTargetHandler(&buffer); 910 Shell::GetInstance()->RemovePreTargetHandler(&buffer);
911 } 911 }
912 912
913 } // namespace ash 913 } // namespace ash
OLDNEW
« ash/sticky_keys/sticky_keys_overlay.cc ('K') | « ash/sticky_keys/sticky_keys_overlay.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698