OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/keyboard_codes.h" | 8 #include "base/keyboard_codes.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
(...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
529 #if defined(OS_LINUX) | 529 #if defined(OS_LINUX) |
530 // On Linux, alt-0..9 are assigned as tab selection accelerators, so they can | 530 // On Linux, alt-0..9 are assigned as tab selection accelerators, so they can |
531 // not be used as accesskeys. | 531 // not be used as accesskeys. |
532 EXPECT_NO_FATAL_FAILURE(CheckFocusedElement(tab_index, L"")); | 532 EXPECT_NO_FATAL_FAILURE(CheckFocusedElement(tab_index, L"")); |
533 #elif defined(OS_WIN) | 533 #elif defined(OS_WIN) |
534 EXPECT_NO_FATAL_FAILURE(CheckFocusedElement(tab_index, L"1")); | 534 EXPECT_NO_FATAL_FAILURE(CheckFocusedElement(tab_index, L"1")); |
535 #endif | 535 #endif |
536 } | 536 } |
537 | 537 |
538 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, ReservedAccelerators) { | 538 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, ReservedAccelerators) { |
539 static const KeyEventTestData kTestCtrlT = { | |
540 base::VKEY_T, true, false, false, | |
541 false, false, false, false, 1, | |
542 { "D 17 0 true false false" } | |
543 }; | |
544 | |
545 HTTPTestServer* server = StartHTTPServer(); | 539 HTTPTestServer* server = StartHTTPServer(); |
546 | 540 |
547 GURL url = server->TestServerPageW(kTestingPage); | 541 GURL url = server->TestServerPageW(kTestingPage); |
548 ui_test_utils::NavigateToURL(browser(), url); | 542 ui_test_utils::NavigateToURL(browser(), url); |
549 | 543 |
550 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); | 544 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); |
551 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 545 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
552 | 546 |
553 int tab_index = browser()->selected_index(); | 547 #if defined(OS_WIN) |
| 548 static const KeyEventTestData kTestCtrlT = { |
| 549 base::VKEY_T, true, false, false, |
| 550 true, false, false, false, 1, |
| 551 { "D 17 0 true false false" } |
| 552 }; |
| 553 |
554 ASSERT_EQ(1, browser()->tab_count()); | 554 ASSERT_EQ(1, browser()->tab_count()); |
555 // Press Ctrl+T, which will open a new tab. | 555 // Press Ctrl+T, which will open a new tab. |
556 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlT)); | 556 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlT)); |
557 EXPECT_EQ(2, browser()->tab_count()); | 557 EXPECT_EQ(2, browser()->tab_count()); |
558 browser()->SelectNumberedTab(tab_index); | 558 browser()->SelectNumberedTab(0); |
559 ASSERT_EQ(tab_index, browser()->selected_index()); | 559 ASSERT_EQ(0, browser()->selected_index()); |
560 | 560 |
561 int result_length; | 561 int result_length; |
562 ASSERT_NO_FATAL_FAILURE(GetResultLength(tab_index, &result_length)); | 562 ASSERT_NO_FATAL_FAILURE(GetResultLength(0, &result_length)); |
563 EXPECT_EQ(1, result_length); | 563 EXPECT_EQ(1, result_length); |
564 | 564 |
565 // Reserved accelerators can't be suppressed. | 565 // Reserved accelerators can't be suppressed. |
566 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(tab_index, true)); | 566 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); |
567 // Press Ctrl+W, which will close the tab. | 567 // Press Ctrl+W, which will close the tab. |
568 ASSERT_NO_FATAL_FAILURE(SendKey(base::VKEY_W, true, false, false)); | 568 ASSERT_NO_FATAL_FAILURE(SendKey(base::VKEY_W, true, false, false)); |
569 EXPECT_EQ(1, browser()->tab_count()); | 569 EXPECT_EQ(1, browser()->tab_count()); |
| 570 |
| 571 #elif defined(OS_LINUX) && !defined(TOOLKIT_VIEWS) |
| 572 // Ctrl-[a-z] are not treated as reserved accelerators on Linux. |
| 573 static const KeyEventTestData kTestCtrlT = { |
| 574 base::VKEY_T, true, false, false, |
| 575 false, false, false, false, 2, |
| 576 { "D 17 0 true false false", |
| 577 "D 84 0 true false false" } |
| 578 }; |
| 579 |
| 580 static const KeyEventTestData kTestCtrlPageDown = { |
| 581 base::VKEY_NEXT, true, false, false, |
| 582 true, false, false, false, 1, |
| 583 { "D 17 0 true false false" } |
| 584 }; |
| 585 |
| 586 static const KeyEventTestData kTestCtrlTab = { |
| 587 base::VKEY_TAB, true, false, false, |
| 588 true, false, false, false, 1, |
| 589 { "D 17 0 true false false" } |
| 590 }; |
| 591 |
| 592 static const KeyEventTestData kTestCtrlTBlocked = { |
| 593 base::VKEY_T, true, false, false, |
| 594 true, false, false, false, 4, |
| 595 { "D 17 0 true false false", |
| 596 "D 84 0 true false false", |
| 597 "U 84 0 true false false", |
| 598 "U 17 0 true false false" } |
| 599 }; |
| 600 |
| 601 static const KeyEventTestData kTestCtrlWBlocked = { |
| 602 base::VKEY_W, true, false, false, |
| 603 true, false, false, false, 4, |
| 604 { "D 17 0 true false false", |
| 605 "D 87 0 true false false", |
| 606 "U 87 0 true false false", |
| 607 "U 17 0 true false false" } |
| 608 }; |
| 609 |
| 610 ASSERT_EQ(1, browser()->tab_count()); |
| 611 |
| 612 // Ctrl+T should be blockable. |
| 613 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlTBlocked)); |
| 614 ASSERT_EQ(1, browser()->tab_count()); |
| 615 |
| 616 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlT)); |
| 617 ASSERT_EQ(2, browser()->tab_count()); |
| 618 ASSERT_EQ(1, browser()->selected_index()); |
| 619 browser()->SelectNumberedTab(0); |
| 620 ASSERT_EQ(0, browser()->selected_index()); |
| 621 |
| 622 // Ctrl+PageDown and Ctrl+Tab switches to the next tab. |
| 623 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlPageDown)); |
| 624 ASSERT_EQ(1, browser()->selected_index()); |
| 625 |
| 626 browser()->SelectNumberedTab(0); |
| 627 ASSERT_EQ(0, browser()->selected_index()); |
| 628 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlTab)); |
| 629 ASSERT_EQ(1, browser()->selected_index()); |
| 630 |
| 631 // Ctrl+W should be blockable. |
| 632 browser()->SelectNumberedTab(0); |
| 633 ASSERT_EQ(0, browser()->selected_index()); |
| 634 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlWBlocked)); |
| 635 ASSERT_EQ(2, browser()->tab_count()); |
| 636 |
| 637 // Ctrl+F4 to close the tab. |
| 638 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); |
| 639 ASSERT_NO_FATAL_FAILURE(SendKey(base::VKEY_F4, true, false, false)); |
| 640 ASSERT_EQ(1, browser()->tab_count()); |
| 641 #endif |
570 } | 642 } |
OLD | NEW |