OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "app/keyboard_codes.h" | 7 #include "app/keyboard_codes.h" |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
(...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
629 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestAccess1)); | 629 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestAccess1)); |
630 #if defined(TOOLKIT_GTK) | 630 #if defined(TOOLKIT_GTK) |
631 // On GTK, alt-0..9 are assigned as tab selection accelerators, so they can | 631 // On GTK, alt-0..9 are assigned as tab selection accelerators, so they can |
632 // not be used as accesskeys. | 632 // not be used as accesskeys. |
633 EXPECT_NO_FATAL_FAILURE(CheckFocusedElement(tab_index, L"")); | 633 EXPECT_NO_FATAL_FAILURE(CheckFocusedElement(tab_index, L"")); |
634 #else | 634 #else |
635 EXPECT_NO_FATAL_FAILURE(CheckFocusedElement(tab_index, L"1")); | 635 EXPECT_NO_FATAL_FAILURE(CheckFocusedElement(tab_index, L"1")); |
636 #endif | 636 #endif |
637 } | 637 } |
638 | 638 |
639 #if defined(OS_MACOSX) | 639 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, ReservedAccelerators) { |
640 // See http://crbug.com/50447 for details. | |
641 #define MAYBE_ReservedAccelerators FLAKY_ReservedAccelerators | |
642 #else | |
643 #define MAYBE_ReservedAccelerators ReservedAccelerators | |
644 #endif | |
645 | |
646 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, MAYBE_ReservedAccelerators) { | |
647 ASSERT_TRUE(test_server()->Start()); | 640 ASSERT_TRUE(test_server()->Start()); |
648 | 641 |
649 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 642 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
650 GURL url = test_server()->GetURL(kTestingPage); | 643 GURL url = test_server()->GetURL(kTestingPage); |
651 ui_test_utils::NavigateToURL(browser(), url); | 644 ui_test_utils::NavigateToURL(browser(), url); |
652 | 645 |
653 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); | 646 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); |
654 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 647 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
655 | 648 |
| 649 ASSERT_EQ(1, browser()->tab_count()); |
| 650 |
656 #if defined(OS_WIN) || defined(TOOLKIT_VIEWS) | 651 #if defined(OS_WIN) || defined(TOOLKIT_VIEWS) |
657 static const KeyEventTestData kTestCtrlT = { | 652 static const KeyEventTestData kTestCtrlT = { |
658 app::VKEY_T, true, false, false, false, | 653 app::VKEY_T, true, false, false, false, |
659 true, false, false, false, 1, | 654 true, false, false, false, 1, |
660 { "D 17 0 true false false false" } | 655 { "D 17 0 true false false false" } |
661 }; | 656 }; |
662 | 657 |
663 ASSERT_EQ(1, browser()->tab_count()); | 658 // Press Ctrl+T, which will open a new tab. It cannot be suppressed. |
664 // Press Ctrl+T, which will open a new tab. | |
665 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlT)); | 659 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlT)); |
666 EXPECT_EQ(2, browser()->tab_count()); | 660 EXPECT_EQ(2, browser()->tab_count()); |
667 browser()->SelectNumberedTab(0); | 661 browser()->SelectNumberedTab(0); |
668 ASSERT_EQ(0, browser()->selected_index()); | 662 ASSERT_EQ(0, browser()->selected_index()); |
669 | 663 |
670 int result_length; | 664 int result_length; |
671 ASSERT_NO_FATAL_FAILURE(GetResultLength(0, &result_length)); | 665 ASSERT_NO_FATAL_FAILURE(GetResultLength(0, &result_length)); |
672 EXPECT_EQ(1, result_length); | 666 EXPECT_EQ(1, result_length); |
673 | 667 |
| 668 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
| 669 |
674 // Reserved accelerators can't be suppressed. | 670 // Reserved accelerators can't be suppressed. |
675 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); | 671 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); |
676 // Press Ctrl+W, which will close the tab. | 672 // Press Ctrl+W, which will close the tab. |
677 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 673 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( |
678 browser(), app::VKEY_W, true, false, false, false)); | 674 browser(), app::VKEY_W, true, false, false, false)); |
679 EXPECT_EQ(1, browser()->tab_count()); | 675 EXPECT_EQ(1, browser()->tab_count()); |
680 #elif defined(OS_MACOSX) | 676 #elif defined(OS_MACOSX) |
681 static const KeyEventTestData kTestCmdT = { | 677 static const KeyEventTestData kTestCmdT = { |
682 app::VKEY_T, false, false, false, true, | 678 app::VKEY_T, false, false, false, true, |
683 true, false, false, false, 1, | 679 true, false, false, false, 1, |
684 { "D 91 0 false false false true" } | 680 { "D 91 0 false false false true" } |
685 }; | 681 }; |
686 | 682 |
687 ASSERT_EQ(1, browser()->tab_count()); | 683 ui_test_utils::WindowedNotificationObserver wait_for_new_tab( |
688 // Press Cmd+T, which will open a new tab. | 684 NotificationType::TAB_PARENTED, |
| 685 NotificationService::AllSources()); |
| 686 |
| 687 // Press Cmd+T, which will open a new tab. It cannot be suppressed. |
689 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCmdT)); | 688 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCmdT)); |
690 EXPECT_EQ(2, browser()->tab_count()); | 689 |
691 browser()->SelectNumberedTab(0); | 690 wait_for_new_tab.WaitFor(Source<NavigationController>( |
692 ASSERT_EQ(0, browser()->selected_index()); | 691 &browser()->GetTabContentsAt(1)->controller())); |
693 | 692 |
694 int result_length; | 693 int result_length; |
695 ASSERT_NO_FATAL_FAILURE(GetResultLength(0, &result_length)); | 694 ASSERT_NO_FATAL_FAILURE(GetResultLength(0, &result_length)); |
696 EXPECT_EQ(1, result_length); | 695 EXPECT_EQ(1, result_length); |
697 | 696 |
| 697 EXPECT_EQ(2, browser()->tab_count()); |
| 698 ASSERT_EQ(1, browser()->selected_index()); |
| 699 |
| 700 // Because of issue http://crbug.com/65375, switching back to the first tab |
| 701 // may cause the focus to be grabbed by omnibox. So instead, we load our |
| 702 // testing page in the newly created tab and try Cmd-W here. |
| 703 ui_test_utils::NavigateToURL(browser(), url); |
| 704 |
| 705 // Make sure the focus is in the testing page. |
| 706 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); |
| 707 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
| 708 |
698 // Reserved accelerators can't be suppressed. | 709 // Reserved accelerators can't be suppressed. |
699 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); | 710 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(1, true)); |
| 711 |
700 // Press Cmd+W, which will close the tab. | 712 // Press Cmd+W, which will close the tab. |
701 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 713 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( |
702 browser(), app::VKEY_W, false, false, false, true)); | 714 browser(), app::VKEY_W, false, false, false, true)); |
703 EXPECT_EQ(1, browser()->tab_count()); | 715 EXPECT_EQ(1, browser()->tab_count()); |
704 #elif defined(TOOLKIT_GTK) | 716 #elif defined(TOOLKIT_GTK) |
705 // Ctrl-[a-z] are not treated as reserved accelerators on GTK. | 717 // Ctrl-[a-z] are not treated as reserved accelerators on GTK. |
706 static const KeyEventTestData kTestCtrlT = { | 718 static const KeyEventTestData kTestCtrlT = { |
707 app::VKEY_T, true, false, false, false, | 719 app::VKEY_T, true, false, false, false, |
708 false, false, false, false, 2, | 720 false, false, false, false, 2, |
709 { "D 17 0 true false false false", | 721 { "D 17 0 true false false false", |
(...skipping 23 matching lines...) Expand all Loading... |
733 | 745 |
734 static const KeyEventTestData kTestCtrlWBlocked = { | 746 static const KeyEventTestData kTestCtrlWBlocked = { |
735 app::VKEY_W, true, false, false, false, | 747 app::VKEY_W, true, false, false, false, |
736 true, false, false, false, 4, | 748 true, false, false, false, 4, |
737 { "D 17 0 true false false false", | 749 { "D 17 0 true false false false", |
738 "D 87 0 true false false false", | 750 "D 87 0 true false false false", |
739 "U 87 0 true false false false", | 751 "U 87 0 true false false false", |
740 "U 17 0 true false false false" } | 752 "U 17 0 true false false false" } |
741 }; | 753 }; |
742 | 754 |
743 ASSERT_EQ(1, browser()->tab_count()); | |
744 | |
745 // Ctrl+T should be blockable. | 755 // Ctrl+T should be blockable. |
746 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlTBlocked)); | 756 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlTBlocked)); |
747 ASSERT_EQ(1, browser()->tab_count()); | 757 ASSERT_EQ(1, browser()->tab_count()); |
748 | 758 |
749 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlT)); | 759 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlT)); |
750 ASSERT_EQ(2, browser()->tab_count()); | 760 ASSERT_EQ(2, browser()->tab_count()); |
751 ASSERT_EQ(1, browser()->selected_index()); | 761 ASSERT_EQ(1, browser()->selected_index()); |
752 browser()->SelectNumberedTab(0); | 762 browser()->SelectNumberedTab(0); |
753 ASSERT_EQ(0, browser()->selected_index()); | 763 ASSERT_EQ(0, browser()->selected_index()); |
| 764 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
754 | 765 |
755 // Ctrl+PageDown and Ctrl+Tab switches to the next tab. | 766 // Ctrl+PageDown and Ctrl+Tab switches to the next tab. |
756 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlPageDown)); | 767 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlPageDown)); |
757 ASSERT_EQ(1, browser()->selected_index()); | 768 ASSERT_EQ(1, browser()->selected_index()); |
758 | 769 |
759 browser()->SelectNumberedTab(0); | 770 browser()->SelectNumberedTab(0); |
760 ASSERT_EQ(0, browser()->selected_index()); | 771 ASSERT_EQ(0, browser()->selected_index()); |
| 772 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
| 773 |
761 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlTab)); | 774 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlTab)); |
762 ASSERT_EQ(1, browser()->selected_index()); | 775 ASSERT_EQ(1, browser()->selected_index()); |
763 | 776 |
764 // Ctrl+W should be blockable. | 777 // Ctrl+W should be blockable. |
765 browser()->SelectNumberedTab(0); | 778 browser()->SelectNumberedTab(0); |
766 ASSERT_EQ(0, browser()->selected_index()); | 779 ASSERT_EQ(0, browser()->selected_index()); |
| 780 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
| 781 |
767 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlWBlocked)); | 782 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlWBlocked)); |
768 ASSERT_EQ(2, browser()->tab_count()); | 783 ASSERT_EQ(2, browser()->tab_count()); |
769 | 784 |
770 // Ctrl+F4 to close the tab. | 785 // Ctrl+F4 to close the tab. |
771 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); | 786 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); |
772 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 787 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( |
773 browser(), app::VKEY_F4, true, false, false, false)); | 788 browser(), app::VKEY_F4, true, false, false, false)); |
774 ASSERT_EQ(1, browser()->tab_count()); | 789 ASSERT_EQ(1, browser()->tab_count()); |
775 #endif | 790 #endif |
776 } | 791 } |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
903 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestAltKeySuppress)); | 918 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestAltKeySuppress)); |
904 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 919 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
905 | 920 |
906 // Ctrl+Alt should have no effect. | 921 // Ctrl+Alt should have no effect. |
907 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlAltKey)); | 922 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlAltKey)); |
908 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 923 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
909 } | 924 } |
910 #endif | 925 #endif |
911 | 926 |
912 } // namespace | 927 } // namespace |
OLD | NEW |