| 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 |