OLD | NEW |
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 "build/build_config.h" | 5 #include "build/build_config.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 data.suppress_textinput, data.result_length); | 287 data.suppress_textinput, data.result_length); |
288 for (int i = 0; i < data.result_length; ++i) { | 288 for (int i = 0; i < data.result_length; ++i) { |
289 desc.append(" "); | 289 desc.append(" "); |
290 desc.append(data.result[i]); | 290 desc.append(data.result[i]); |
291 desc.append("\n"); | 291 desc.append("\n"); |
292 } | 292 } |
293 return desc; | 293 return desc; |
294 } | 294 } |
295 }; | 295 }; |
296 | 296 |
297 // Flaky: http://crbug.com/129235, http://crbug.com/81451. | 297 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, NormalKeyEvents) { |
298 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, DISABLED_NormalKeyEvents) { | |
299 static const KeyEventTestData kTestNoInput[] = { | 298 static const KeyEventTestData kTestNoInput[] = { |
300 // a | 299 // a |
301 { ui::VKEY_A, false, false, false, false, | 300 { ui::VKEY_A, false, false, false, false, |
302 false, false, false, false, 3, | 301 false, false, false, false, 3, |
303 { "D 65 0 false false false false", | 302 { "D 65 0 false false false false", |
304 "P 97 97 false false false false", | 303 "P 97 97 false false false false", |
305 "U 65 0 false false false false" } }, | 304 "U 65 0 false false false false" } }, |
306 // shift-a | 305 // shift-a |
307 { ui::VKEY_A, false, true, false, false, | 306 { ui::VKEY_A, false, true, false, false, |
308 false, false, false, false, 5, | 307 false, false, false, false, 5, |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 for (size_t i = 0; i < arraysize(kTestWithInput); ++i) { | 384 for (size_t i = 0; i < arraysize(kTestWithInput); ++i) { |
386 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestWithInput[i])) | 385 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestWithInput[i])) |
387 << "kTestWithInput[" << i << "] in password box failed:\n" | 386 << "kTestWithInput[" << i << "] in password box failed:\n" |
388 << GetTestDataDescription(kTestWithInput[i]); | 387 << GetTestDataDescription(kTestWithInput[i]); |
389 } | 388 } |
390 EXPECT_NO_FATAL_FAILURE(CheckTextBoxValue(tab_index, L"B", L"aA")); | 389 EXPECT_NO_FATAL_FAILURE(CheckTextBoxValue(tab_index, L"B", L"aA")); |
391 } | 390 } |
392 | 391 |
393 #if defined(OS_WIN) || defined(OS_LINUX) | 392 #if defined(OS_WIN) || defined(OS_LINUX) |
394 | 393 |
395 #if defined(OS_LINUX) || defined(OS_WIN) | 394 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, CtrlKeyEvents) { |
396 // Linux: http://crbug.com/129235 | |
397 // Win: crbug.com/269564 | |
398 #define MAYBE_CtrlKeyEvents DISABLED_CtrlKeyEvents | |
399 #else | |
400 #define MAYBE_CtrlKeyEvents CtrlKeyEvents | |
401 #endif | |
402 | |
403 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, MAYBE_CtrlKeyEvents) { | |
404 static const KeyEventTestData kTestCtrlF = { | 395 static const KeyEventTestData kTestCtrlF = { |
405 ui::VKEY_F, true, false, false, false, | 396 ui::VKEY_F, true, false, false, false, |
406 false, false, false, false, 2, | 397 false, false, false, false, 2, |
407 { "D 17 0 true false false false", | 398 { "D 17 0 true false false false", |
408 "D 70 0 true false false false" } | 399 "D 70 0 true false false false" } |
409 }; | 400 }; |
410 | 401 |
411 static const KeyEventTestData kTestCtrlFSuppressKeyDown = { | 402 static const KeyEventTestData kTestCtrlFSuppressKeyDown = { |
412 ui::VKEY_F, true, false, false, false, | 403 ui::VKEY_F, true, false, false, false, |
413 true, false, false, false, 4, | 404 true, false, false, false, 4, |
(...skipping 28 matching lines...) Expand all Loading... |
442 static const KeyEventTestData kTestCtrlEnter = { | 433 static const KeyEventTestData kTestCtrlEnter = { |
443 ui::VKEY_RETURN, true, false, false, false, | 434 ui::VKEY_RETURN, true, false, false, false, |
444 false, false, false, false, 5, | 435 false, false, false, false, 5, |
445 { "D 17 0 true false false false", | 436 { "D 17 0 true false false false", |
446 "D 13 0 true false false false", | 437 "D 13 0 true false false false", |
447 "P 10 10 true false false false", | 438 "P 10 10 true false false false", |
448 "U 13 0 true false false false", | 439 "U 13 0 true false false false", |
449 "U 17 0 true false false false" } | 440 "U 17 0 true false false false" } |
450 }; | 441 }; |
451 | 442 |
| 443 static const KeyEventTestData kTestEscape = { |
| 444 ui::VKEY_ESCAPE, false, false, false, false, |
| 445 false, false, false, false, 0, |
| 446 {} |
| 447 }; |
| 448 |
452 ASSERT_TRUE(embedded_test_server()->Start()); | 449 ASSERT_TRUE(embedded_test_server()->Start()); |
453 | 450 |
454 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 451 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
455 GURL url = embedded_test_server()->GetURL(kTestingPage); | 452 GURL url = embedded_test_server()->GetURL(kTestingPage); |
456 ui_test_utils::NavigateToURL(browser(), url); | 453 ui_test_utils::NavigateToURL(browser(), url); |
457 | 454 |
458 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); | 455 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); |
459 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER)); | 456 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER)); |
460 | 457 |
461 int tab_index = browser()->tab_strip_model()->active_index(); | 458 int tab_index = browser()->tab_strip_model()->active_index(); |
462 // Press Ctrl+F, which will make the Find box open and request focus. | 459 // Press Ctrl+F, which will make the Find box open and request focus. |
463 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlF)); | 460 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlF)); |
464 EXPECT_TRUE(IsViewFocused(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); | 461 EXPECT_TRUE(IsViewFocused(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); |
465 | 462 |
466 // Press Escape to close the Find box and move the focus back to the web page. | 463 // Press Escape to close the Find box and move the focus back to the web page. |
467 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 464 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestEscape)); |
468 browser(), ui::VKEY_ESCAPE, false, false, false, false)); | |
469 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER)); | 465 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER)); |
470 | 466 |
471 // Press Ctrl+F with keydown suppressed shall not open the find box. | 467 // Press Ctrl+F with keydown suppressed shall not open the find box. |
472 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlFSuppressKeyDown)); | 468 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlFSuppressKeyDown)); |
473 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER)); | 469 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER)); |
474 | 470 |
475 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlZ)); | 471 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlZ)); |
476 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlZSuppressKeyDown)); | 472 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlZSuppressKeyDown)); |
477 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlEnter)); | 473 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlEnter)); |
478 } | 474 } |
479 #elif defined(OS_MACOSX) | 475 #elif defined(OS_MACOSX) |
480 // http://crbug.com/81451 | 476 // http://crbug.com/81451 |
481 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, DISABLED_CommandKeyEvents) { | 477 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, CommandKeyEvents) { |
482 static const KeyEventTestData kTestCmdF = { | 478 static const KeyEventTestData kTestCmdF = { |
483 ui::VKEY_F, false, false, false, true, | 479 ui::VKEY_F, false, false, false, true, |
484 false, false, false, false, 2, | 480 false, false, false, false, 2, |
485 { "D 91 0 false false false true", | 481 { "D 91 0 false false false true", |
486 "D 70 0 false false false true" } | 482 "D 70 0 false false false true" } |
487 }; | 483 }; |
488 | 484 |
489 // On Mac we don't send key up events when command modifier is down. | 485 // On Mac we don't send key up events when command modifier is down. |
490 static const KeyEventTestData kTestCmdFSuppressKeyDown = { | 486 static const KeyEventTestData kTestCmdFSuppressKeyDown = { |
491 ui::VKEY_F, false, false, false, true, | 487 ui::VKEY_F, false, false, false, true, |
(...skipping 21 matching lines...) Expand all Loading... |
513 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 509 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( |
514 browser(), ui::VKEY_ESCAPE, false, false, false, false)); | 510 browser(), ui::VKEY_ESCAPE, false, false, false, false)); |
515 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER)); | 511 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER)); |
516 | 512 |
517 // Press Cmd+F with keydown suppressed shall not open the find box. | 513 // Press Cmd+F with keydown suppressed shall not open the find box. |
518 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCmdFSuppressKeyDown)); | 514 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCmdFSuppressKeyDown)); |
519 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER)); | 515 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER)); |
520 } | 516 } |
521 #endif | 517 #endif |
522 | 518 |
523 // Flaky: http://crbug.com/81451 , http://crbug.com/129235 , | 519 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, AccessKeys) { |
524 // also fails on Windows. | |
525 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, DISABLED_AccessKeys) { | |
526 #if defined(OS_MACOSX) | 520 #if defined(OS_MACOSX) |
527 // On Mac, access keys use ctrl+alt modifiers. | 521 // On Mac, access keys use ctrl+alt modifiers. |
528 static const KeyEventTestData kTestAccessA = { | 522 static const KeyEventTestData kTestAccessA = { |
529 ui::VKEY_A, true, false, true, false, | 523 ui::VKEY_A, true, false, true, false, |
530 false, false, false, false, 6, | 524 false, false, false, false, 6, |
531 { "D 17 0 true false false false", | 525 { "D 17 0 true false false false", |
532 "D 18 0 true false true false", | 526 "D 18 0 true false true false", |
533 "D 65 0 true false true false", | 527 "D 65 0 true false true false", |
534 "U 65 0 true false true false", | 528 "U 65 0 true false true false", |
535 "U 18 0 true false true false", | 529 "U 18 0 true false true false", |
536 "U 17 0 true false false false" } | 530 "U 17 0 true false false false" } |
537 }; | 531 }; |
538 | 532 |
539 static const KeyEventTestData kTestAccessDSuppress = { | 533 static const KeyEventTestData kTestAccessDSuppress = { |
540 ui::VKEY_D, true, false, true, false, | 534 ui::VKEY_D, true, false, true, false, |
541 true, true, true, false, 6, | 535 true, true, true, false, 6, |
542 { "D 17 0 true false false false", | 536 { "D 17 0 true false false false", |
543 "D 18 0 true false true false", | 537 "D 18 0 true false true false", |
544 "D 68 0 true false true false", | 538 "D 68 0 true false true false", |
545 "U 68 0 true false true false", | 539 "U 68 0 true false true false", |
546 "U 18 0 true false true false", | 540 "U 18 0 true false true false", |
547 "U 17 0 true false false false" } | 541 "U 17 0 true false false false" } |
548 }; | 542 }; |
549 | |
550 static const KeyEventTestData kTestAccess1 = { | |
551 ui::VKEY_1, true, false, true, false, | |
552 false, false, false, false, 6, | |
553 { "D 17 0 true false false false", | |
554 "D 18 0 true false true false", | |
555 "D 49 0 true false true false", | |
556 "U 49 0 true false true false", | |
557 "U 18 0 true false true false", | |
558 "U 17 0 true false false false" } | |
559 }; | |
560 #else | 543 #else |
561 static const KeyEventTestData kTestAccessA = { | 544 static const KeyEventTestData kTestAccessA = { |
562 ui::VKEY_A, false, false, true, false, | 545 ui::VKEY_A, false, false, true, false, |
563 false, false, false, false, 4, | 546 false, false, false, false, 4, |
564 { "D 18 0 false false true false", | 547 { "D 18 0 false false true false", |
565 "D 65 0 false false true false", | 548 "D 65 0 false false true false", |
566 "U 65 0 false false true false", | 549 "U 65 0 false false true false", |
567 "U 18 0 false false true false" } | 550 "U 18 0 false false true false" } |
568 }; | 551 }; |
569 | 552 |
570 static const KeyEventTestData kTestAccessD = { | 553 static const KeyEventTestData kTestAccessD = { |
571 ui::VKEY_D, false, false, true, false, | 554 ui::VKEY_D, false, false, true, false, |
572 false, false, false, false, 2, | 555 false, false, false, false, 2, |
573 { "D 18 0 false false true false", | 556 { "D 18 0 false false true false", |
574 "D 68 0 false false true false" } | 557 "D 68 0 false false true false" } |
575 }; | 558 }; |
576 | 559 |
577 static const KeyEventTestData kTestAccessDSuppress = { | 560 static const KeyEventTestData kTestAccessDSuppress = { |
578 ui::VKEY_D, false, false, true, false, | 561 ui::VKEY_D, false, false, true, false, |
579 true, true, true, false, 4, | 562 true, true, true, false, 4, |
580 { "D 18 0 false false true false", | 563 { "D 18 0 false false true false", |
581 "D 68 0 false false true false", | 564 "D 68 0 false false true false", |
582 "U 68 0 false false true false", | 565 "U 68 0 false false true false", |
583 "U 18 0 false false true false" } | 566 "U 18 0 false false true false" } |
584 }; | 567 }; |
585 | 568 |
586 #if !defined(USE_ASH) | |
587 static const KeyEventTestData kTestAccess1 = { | |
588 ui::VKEY_1, false, false, true, false, | |
589 false, false, false, false, 4, | |
590 { "D 18 0 false false true false", | |
591 "D 49 0 false false true false", | |
592 "U 49 0 false false true false", | |
593 "U 18 0 false false true false" } | |
594 }; | |
595 #endif | |
596 #endif | 569 #endif |
597 | 570 |
598 ASSERT_TRUE(embedded_test_server()->Start()); | 571 ASSERT_TRUE(embedded_test_server()->Start()); |
599 | 572 |
600 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 573 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
601 GURL url = embedded_test_server()->GetURL(kTestingPage); | 574 GURL url = embedded_test_server()->GetURL(kTestingPage); |
602 ui_test_utils::NavigateToURL(browser(), url); | 575 ui_test_utils::NavigateToURL(browser(), url); |
603 | 576 |
604 content::RunAllPendingInMessageLoop(); | 577 content::RunAllPendingInMessageLoop(); |
605 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); | 578 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
641 // a part of the default action of the key event, so it should not be | 614 // a part of the default action of the key event, so it should not be |
642 // suppressed at all. | 615 // suppressed at all. |
643 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestAccessDSuppress)); | 616 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestAccessDSuppress)); |
644 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER)); | 617 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER)); |
645 EXPECT_NO_FATAL_FAILURE(CheckFocusedElement(tab_index, L"D")); | 618 EXPECT_NO_FATAL_FAILURE(CheckFocusedElement(tab_index, L"D")); |
646 | 619 |
647 // Blur the focused element. | 620 // Blur the focused element. |
648 EXPECT_NO_FATAL_FAILURE(SetFocusedElement(tab_index, L"")); | 621 EXPECT_NO_FATAL_FAILURE(SetFocusedElement(tab_index, L"")); |
649 // Make sure no element is focused. | 622 // Make sure no element is focused. |
650 EXPECT_NO_FATAL_FAILURE(CheckFocusedElement(tab_index, L"")); | 623 EXPECT_NO_FATAL_FAILURE(CheckFocusedElement(tab_index, L"")); |
651 #if !defined(USE_ASH) | |
652 // On Ash, alt-1..9 are assigned as window selection global accelerators, so | |
653 // they can not be used as accesskeys. | |
654 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestAccess1)); | |
655 EXPECT_NO_FATAL_FAILURE(CheckFocusedElement(tab_index, L"1")); | |
656 #endif | |
657 } | 624 } |
658 | 625 |
659 // Flaky, http://crbug.com/69475. | 626 // Flaky, http://crbug.com/69475. |
660 #if defined(OS_LINUX) || defined(OS_WIN) | 627 #if defined(OS_LINUX) || defined(OS_WIN) |
661 #define MAYBE_ReservedAccelerators DISABLED_ReservedAccelerators | 628 #define MAYBE_ReservedAccelerators DISABLED_ReservedAccelerators |
662 #else | 629 #else |
663 #define MAYBE_ReservedAccelerators ReservedAccelerators | 630 #define MAYBE_ReservedAccelerators ReservedAccelerators |
664 #endif | 631 #endif |
665 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, MAYBE_ReservedAccelerators) { | 632 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, MAYBE_ReservedAccelerators) { |
666 ASSERT_TRUE(embedded_test_server()->Start()); | 633 ASSERT_TRUE(embedded_test_server()->Start()); |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
865 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestAltKeySuppress)); | 832 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestAltKeySuppress)); |
866 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER)); | 833 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER)); |
867 | 834 |
868 // Ctrl+Alt should have no effect. | 835 // Ctrl+Alt should have no effect. |
869 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlAltKey)); | 836 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlAltKey)); |
870 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER)); | 837 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER)); |
871 } | 838 } |
872 #endif | 839 #endif |
873 | 840 |
874 } // namespace | 841 } // namespace |
OLD | NEW |