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 |
656 #if defined(OS_WIN) || defined(TOOLKIT_VIEWS) | 649 #if defined(OS_WIN) || defined(TOOLKIT_VIEWS) |
657 static const KeyEventTestData kTestCtrlT = { | 650 static const KeyEventTestData kTestCtrlT = { |
658 app::VKEY_T, true, false, false, false, | 651 app::VKEY_T, true, false, false, false, |
659 true, false, false, false, 1, | 652 true, false, false, false, 1, |
660 { "D 17 0 true false false false" } | 653 { "D 17 0 true false false false" } |
661 }; | 654 }; |
662 | 655 |
663 ASSERT_EQ(1, browser()->tab_count()); | 656 ASSERT_EQ(1, browser()->tab_count()); |
664 // Press Ctrl+T, which will open a new tab. | 657 // Press Ctrl+T, which will open a new tab. |
665 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlT)); | 658 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlT)); |
666 EXPECT_EQ(2, browser()->tab_count()); | 659 EXPECT_EQ(2, browser()->tab_count()); |
667 browser()->SelectNumberedTab(0); | 660 browser()->SelectNumberedTab(0); |
668 ASSERT_EQ(0, browser()->selected_index()); | 661 ASSERT_EQ(0, browser()->selected_index()); |
669 | 662 |
670 int result_length; | 663 int result_length; |
671 ASSERT_NO_FATAL_FAILURE(GetResultLength(0, &result_length)); | 664 ASSERT_NO_FATAL_FAILURE(GetResultLength(0, &result_length)); |
672 EXPECT_EQ(1, result_length); | 665 EXPECT_EQ(1, result_length); |
673 | 666 |
667 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | |
668 | |
674 // Reserved accelerators can't be suppressed. | 669 // Reserved accelerators can't be suppressed. |
675 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); | 670 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); |
676 // Press Ctrl+W, which will close the tab. | 671 // Press Ctrl+W, which will close the tab. |
677 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 672 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( |
678 browser(), app::VKEY_W, true, false, false, false)); | 673 browser(), app::VKEY_W, true, false, false, false)); |
679 EXPECT_EQ(1, browser()->tab_count()); | 674 EXPECT_EQ(1, browser()->tab_count()); |
680 #elif defined(OS_MACOSX) | 675 #elif defined(OS_MACOSX) |
681 static const KeyEventTestData kTestCmdT = { | 676 static const KeyEventTestData kTestCmdT = { |
682 app::VKEY_T, false, false, false, true, | 677 app::VKEY_T, false, false, false, true, |
683 true, false, false, false, 1, | 678 true, false, false, false, 1, |
684 { "D 91 0 false false false true" } | 679 { "D 91 0 false false false true" } |
685 }; | 680 }; |
686 | 681 |
687 ASSERT_EQ(1, browser()->tab_count()); | 682 ASSERT_EQ(1, browser()->tab_count()); |
688 // Press Cmd+T, which will open a new tab. | 683 |
684 ui_test_utils::WindowedNotificationObserver wait_for_new_tab( | |
685 NotificationType::TAB_PARENTED, | |
686 NotificationService::AllSources()); | |
687 | |
688 // Press Cmd+T, which will open a new tab, it can not be suppressed. | |
Ilya Sherman
2010/12/04 02:31:00
nit: The added part would be better as ". It canno
James Su
2010/12/04 03:21:11
Done.
| |
689 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCmdT)); | 689 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCmdT)); |
690 EXPECT_EQ(2, browser()->tab_count()); | 690 |
691 browser()->SelectNumberedTab(0); | 691 wait_for_new_tab.WaitFor(Source<NavigationController>( |
692 ASSERT_EQ(0, browser()->selected_index()); | 692 &browser()->GetTabContentsAt(1)->controller())); |
693 | 693 |
694 int result_length; | 694 int result_length; |
695 ASSERT_NO_FATAL_FAILURE(GetResultLength(0, &result_length)); | 695 ASSERT_NO_FATAL_FAILURE(GetResultLength(0, &result_length)); |
696 EXPECT_EQ(1, result_length); | 696 EXPECT_EQ(1, result_length); |
697 | 697 |
698 EXPECT_EQ(2, browser()->tab_count()); | |
699 ASSERT_EQ(1, browser()->selected_index()); | |
700 | |
701 // Because of issue http://crbug.com/65375, switching back to the first tab | |
702 // may cause the focus to be grabbed by omnibox. So instead, we load our | |
703 // testing page in the newly created tab and try Cmd-W here. | |
704 ui_test_utils::NavigateToURL(browser(), url); | |
705 | |
706 // Make sure the focus is in the testing page. | |
707 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); | |
708 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | |
709 | |
698 // Reserved accelerators can't be suppressed. | 710 // Reserved accelerators can't be suppressed. |
699 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); | 711 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(1, true)); |
712 | |
700 // Press Cmd+W, which will close the tab. | 713 // Press Cmd+W, which will close the tab. |
701 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 714 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( |
702 browser(), app::VKEY_W, false, false, false, true)); | 715 browser(), app::VKEY_W, false, false, false, true)); |
703 EXPECT_EQ(1, browser()->tab_count()); | 716 EXPECT_EQ(1, browser()->tab_count()); |
704 #elif defined(TOOLKIT_GTK) | 717 #elif defined(TOOLKIT_GTK) |
705 // Ctrl-[a-z] are not treated as reserved accelerators on GTK. | 718 // Ctrl-[a-z] are not treated as reserved accelerators on GTK. |
706 static const KeyEventTestData kTestCtrlT = { | 719 static const KeyEventTestData kTestCtrlT = { |
707 app::VKEY_T, true, false, false, false, | 720 app::VKEY_T, true, false, false, false, |
708 false, false, false, false, 2, | 721 false, false, false, false, 2, |
709 { "D 17 0 true false false false", | 722 { "D 17 0 true false false false", |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
744 | 757 |
745 // Ctrl+T should be blockable. | 758 // Ctrl+T should be blockable. |
746 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlTBlocked)); | 759 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlTBlocked)); |
747 ASSERT_EQ(1, browser()->tab_count()); | 760 ASSERT_EQ(1, browser()->tab_count()); |
748 | 761 |
749 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlT)); | 762 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlT)); |
750 ASSERT_EQ(2, browser()->tab_count()); | 763 ASSERT_EQ(2, browser()->tab_count()); |
751 ASSERT_EQ(1, browser()->selected_index()); | 764 ASSERT_EQ(1, browser()->selected_index()); |
752 browser()->SelectNumberedTab(0); | 765 browser()->SelectNumberedTab(0); |
753 ASSERT_EQ(0, browser()->selected_index()); | 766 ASSERT_EQ(0, browser()->selected_index()); |
767 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | |
754 | 768 |
755 // Ctrl+PageDown and Ctrl+Tab switches to the next tab. | 769 // Ctrl+PageDown and Ctrl+Tab switches to the next tab. |
756 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlPageDown)); | 770 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlPageDown)); |
757 ASSERT_EQ(1, browser()->selected_index()); | 771 ASSERT_EQ(1, browser()->selected_index()); |
758 | 772 |
759 browser()->SelectNumberedTab(0); | 773 browser()->SelectNumberedTab(0); |
760 ASSERT_EQ(0, browser()->selected_index()); | 774 ASSERT_EQ(0, browser()->selected_index()); |
775 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | |
776 | |
761 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlTab)); | 777 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlTab)); |
762 ASSERT_EQ(1, browser()->selected_index()); | 778 ASSERT_EQ(1, browser()->selected_index()); |
763 | 779 |
764 // Ctrl+W should be blockable. | 780 // Ctrl+W should be blockable. |
765 browser()->SelectNumberedTab(0); | 781 browser()->SelectNumberedTab(0); |
766 ASSERT_EQ(0, browser()->selected_index()); | 782 ASSERT_EQ(0, browser()->selected_index()); |
783 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | |
784 | |
767 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlWBlocked)); | 785 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlWBlocked)); |
768 ASSERT_EQ(2, browser()->tab_count()); | 786 ASSERT_EQ(2, browser()->tab_count()); |
769 | 787 |
770 // Ctrl+F4 to close the tab. | 788 // Ctrl+F4 to close the tab. |
771 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); | 789 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); |
772 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 790 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( |
773 browser(), app::VKEY_F4, true, false, false, false)); | 791 browser(), app::VKEY_F4, true, false, false, false)); |
774 ASSERT_EQ(1, browser()->tab_count()); | 792 ASSERT_EQ(1, browser()->tab_count()); |
775 #endif | 793 #endif |
776 } | 794 } |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
903 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestAltKeySuppress)); | 921 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestAltKeySuppress)); |
904 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 922 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
905 | 923 |
906 // Ctrl+Alt should have no effect. | 924 // Ctrl+Alt should have no effect. |
907 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlAltKey)); | 925 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlAltKey)); |
908 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 926 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
909 } | 927 } |
910 #endif | 928 #endif |
911 | 929 |
912 } // namespace | 930 } // namespace |
OLD | NEW |