| 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" | |
| 8 #include "base/basictypes.h" | 7 #include "base/basictypes.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" |
| 11 #include "base/string_util.h" | 11 #include "base/string_util.h" |
| 12 #include "base/utf_string_conversions.h" | 12 #include "base/utf_string_conversions.h" |
| 13 #include "base/values.h" | 13 #include "base/values.h" |
| 14 #include "chrome/browser/automation/ui_controls.h" | 14 #include "chrome/browser/automation/ui_controls.h" |
| 15 #include "chrome/browser/browser.h" | 15 #include "chrome/browser/browser.h" |
| 16 #include "chrome/browser/browser_window.h" | 16 #include "chrome/browser/browser_window.h" |
| 17 #include "chrome/browser/dom_operation_notification_details.h" | 17 #include "chrome/browser/dom_operation_notification_details.h" |
| 18 #include "chrome/browser/renderer_host/render_view_host.h" | 18 #include "chrome/browser/renderer_host/render_view_host.h" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 // the result of keydown, keypress, keyup and textInput events. | 56 // the result of keydown, keypress, keyup and textInput events. |
| 57 // For keydown, keypress and keyup events, the format of the result string is: | 57 // For keydown, keypress and keyup events, the format of the result string is: |
| 58 // <type> <keyCode> <charCode> <ctrlKey> <shiftKey> <altKey> <commandKey> | 58 // <type> <keyCode> <charCode> <ctrlKey> <shiftKey> <altKey> <commandKey> |
| 59 // where <type> may be 'D' (keydown), 'P' (keypress) or 'U' (keyup). | 59 // where <type> may be 'D' (keydown), 'P' (keypress) or 'U' (keyup). |
| 60 // <ctrlKey>, <shiftKey> <altKey> and <commandKey> are boolean value indicating | 60 // <ctrlKey>, <shiftKey> <altKey> and <commandKey> are boolean value indicating |
| 61 // the state of corresponding modifier key. | 61 // the state of corresponding modifier key. |
| 62 // For textInput event, the format is: T <text>, where <text> is the text to be | 62 // For textInput event, the format is: T <text>, where <text> is the text to be |
| 63 // input. | 63 // input. |
| 64 // Please refer to chrome/test/data/keyevents_test.html for details. | 64 // Please refer to chrome/test/data/keyevents_test.html for details. |
| 65 struct KeyEventTestData { | 65 struct KeyEventTestData { |
| 66 app::KeyboardCode key; | 66 base::KeyboardCode key; |
| 67 bool ctrl; | 67 bool ctrl; |
| 68 bool shift; | 68 bool shift; |
| 69 bool alt; | 69 bool alt; |
| 70 bool command; | 70 bool command; |
| 71 | 71 |
| 72 bool suppress_keydown; | 72 bool suppress_keydown; |
| 73 bool suppress_keypress; | 73 bool suppress_keypress; |
| 74 bool suppress_keyup; | 74 bool suppress_keyup; |
| 75 bool suppress_textinput; | 75 bool suppress_textinput; |
| 76 | 76 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 *native_window = window->GetNativeHandle(); | 135 *native_window = window->GetNativeHandle(); |
| 136 ASSERT_TRUE(*native_window); | 136 ASSERT_TRUE(*native_window); |
| 137 } | 137 } |
| 138 | 138 |
| 139 void BringBrowserWindowToFront() { | 139 void BringBrowserWindowToFront() { |
| 140 gfx::NativeWindow window = NULL; | 140 gfx::NativeWindow window = NULL; |
| 141 ASSERT_NO_FATAL_FAILURE(GetNativeWindow(&window)); | 141 ASSERT_NO_FATAL_FAILURE(GetNativeWindow(&window)); |
| 142 ui_test_utils::ShowAndFocusNativeWindow(window); | 142 ui_test_utils::ShowAndFocusNativeWindow(window); |
| 143 } | 143 } |
| 144 | 144 |
| 145 void SendKey(app::KeyboardCode key, | 145 void SendKey(base::KeyboardCode key, |
| 146 bool control, | 146 bool control, |
| 147 bool shift, | 147 bool shift, |
| 148 bool alt, | 148 bool alt, |
| 149 bool command) { | 149 bool command) { |
| 150 gfx::NativeWindow window = NULL; | 150 gfx::NativeWindow window = NULL; |
| 151 ASSERT_NO_FATAL_FAILURE(GetNativeWindow(&window)); | 151 ASSERT_NO_FATAL_FAILURE(GetNativeWindow(&window)); |
| 152 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 152 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( |
| 153 window, key, control, shift, alt, command)); | 153 window, key, control, shift, alt, command)); |
| 154 } | 154 } |
| 155 | 155 |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 desc.append(data.result[i]); | 308 desc.append(data.result[i]); |
| 309 desc.append("\n"); | 309 desc.append("\n"); |
| 310 } | 310 } |
| 311 return desc; | 311 return desc; |
| 312 } | 312 } |
| 313 }; | 313 }; |
| 314 | 314 |
| 315 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, NormalKeyEvents) { | 315 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, NormalKeyEvents) { |
| 316 static const KeyEventTestData kTestNoInput[] = { | 316 static const KeyEventTestData kTestNoInput[] = { |
| 317 // a | 317 // a |
| 318 { app::VKEY_A, false, false, false, false, | 318 { base::VKEY_A, false, false, false, false, |
| 319 false, false, false, false, 3, | 319 false, false, false, false, 3, |
| 320 { "D 65 0 false false false false", | 320 { "D 65 0 false false false false", |
| 321 "P 97 97 false false false false", | 321 "P 97 97 false false false false", |
| 322 "U 65 0 false false false false" } }, | 322 "U 65 0 false false false false" } }, |
| 323 // shift-a | 323 // shift-a |
| 324 { app::VKEY_A, false, true, false, false, | 324 { base::VKEY_A, false, true, false, false, |
| 325 false, false, false, false, 5, | 325 false, false, false, false, 5, |
| 326 { "D 16 0 false true false false", | 326 { "D 16 0 false true false false", |
| 327 "D 65 0 false true false false", | 327 "D 65 0 false true false false", |
| 328 "P 65 65 false true false false", | 328 "P 65 65 false true false false", |
| 329 "U 65 0 false true false false", | 329 "U 65 0 false true false false", |
| 330 "U 16 0 false true false false" } }, | 330 "U 16 0 false true false false" } }, |
| 331 // a, suppress keydown | 331 // a, suppress keydown |
| 332 { app::VKEY_A, false, false, false, false, | 332 { base::VKEY_A, false, false, false, false, |
| 333 true, false, false, false, 2, | 333 true, false, false, false, 2, |
| 334 { "D 65 0 false false false false", | 334 { "D 65 0 false false false false", |
| 335 "U 65 0 false false false false" } }, | 335 "U 65 0 false false false false" } }, |
| 336 }; | 336 }; |
| 337 | 337 |
| 338 static const KeyEventTestData kTestWithInput[] = { | 338 static const KeyEventTestData kTestWithInput[] = { |
| 339 // a | 339 // a |
| 340 { app::VKEY_A, false, false, false, false, | 340 { base::VKEY_A, false, false, false, false, |
| 341 false, false, false, false, 4, | 341 false, false, false, false, 4, |
| 342 { "D 65 0 false false false false", | 342 { "D 65 0 false false false false", |
| 343 "P 97 97 false false false false", | 343 "P 97 97 false false false false", |
| 344 "T a", | 344 "T a", |
| 345 "U 65 0 false false false false" } }, | 345 "U 65 0 false false false false" } }, |
| 346 // shift-a | 346 // shift-a |
| 347 { app::VKEY_A, false, true, false, false, | 347 { base::VKEY_A, false, true, false, false, |
| 348 false, false, false, false, 6, | 348 false, false, false, false, 6, |
| 349 { "D 16 0 false true false false", | 349 { "D 16 0 false true false false", |
| 350 "D 65 0 false true false false", | 350 "D 65 0 false true false false", |
| 351 "P 65 65 false true false false", | 351 "P 65 65 false true false false", |
| 352 "T A", | 352 "T A", |
| 353 "U 65 0 false true false false", | 353 "U 65 0 false true false false", |
| 354 "U 16 0 false true false false" } }, | 354 "U 16 0 false true false false" } }, |
| 355 // a, suppress keydown | 355 // a, suppress keydown |
| 356 { app::VKEY_A, false, false, false, false, | 356 { base::VKEY_A, false, false, false, false, |
| 357 true, false, false, false, 2, | 357 true, false, false, false, 2, |
| 358 { "D 65 0 false false false false", | 358 { "D 65 0 false false false false", |
| 359 "U 65 0 false false false false" } }, | 359 "U 65 0 false false false false" } }, |
| 360 // a, suppress keypress | 360 // a, suppress keypress |
| 361 { app::VKEY_A, false, false, false, false, | 361 { base::VKEY_A, false, false, false, false, |
| 362 false, true, false, false, 3, | 362 false, true, false, false, 3, |
| 363 { "D 65 0 false false false false", | 363 { "D 65 0 false false false false", |
| 364 "P 97 97 false false false false", | 364 "P 97 97 false false false false", |
| 365 "U 65 0 false false false false" } }, | 365 "U 65 0 false false false false" } }, |
| 366 // a, suppress textInput | 366 // a, suppress textInput |
| 367 { app::VKEY_A, false, false, false, false, | 367 { base::VKEY_A, false, false, false, false, |
| 368 false, false, false, true, 4, | 368 false, false, false, true, 4, |
| 369 { "D 65 0 false false false false", | 369 { "D 65 0 false false false false", |
| 370 "P 97 97 false false false false", | 370 "P 97 97 false false false false", |
| 371 "T a", | 371 "T a", |
| 372 "U 65 0 false false false false" } }, | 372 "U 65 0 false false false false" } }, |
| 373 }; | 373 }; |
| 374 | 374 |
| 375 ASSERT_TRUE(test_server()->Start()); | 375 ASSERT_TRUE(test_server()->Start()); |
| 376 | 376 |
| 377 BringBrowserWindowToFront(); | 377 BringBrowserWindowToFront(); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 403 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestWithInput[i])) | 403 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestWithInput[i])) |
| 404 << "kTestWithInput[" << i << "] in password box failed:\n" | 404 << "kTestWithInput[" << i << "] in password box failed:\n" |
| 405 << GetTestDataDescription(kTestWithInput[i]); | 405 << GetTestDataDescription(kTestWithInput[i]); |
| 406 } | 406 } |
| 407 EXPECT_NO_FATAL_FAILURE(CheckTextBoxValue(tab_index, L"B", L"aA")); | 407 EXPECT_NO_FATAL_FAILURE(CheckTextBoxValue(tab_index, L"B", L"aA")); |
| 408 } | 408 } |
| 409 | 409 |
| 410 #if defined(OS_WIN) || defined(OS_LINUX) | 410 #if defined(OS_WIN) || defined(OS_LINUX) |
| 411 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, CtrlKeyEvents) { | 411 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, CtrlKeyEvents) { |
| 412 static const KeyEventTestData kTestCtrlF = { | 412 static const KeyEventTestData kTestCtrlF = { |
| 413 app::VKEY_F, true, false, false, false, | 413 base::VKEY_F, true, false, false, false, |
| 414 false, false, false, false, 2, | 414 false, false, false, false, 2, |
| 415 { "D 17 0 true false false false", | 415 { "D 17 0 true false false false", |
| 416 "D 70 0 true false false false" } | 416 "D 70 0 true false false false" } |
| 417 }; | 417 }; |
| 418 | 418 |
| 419 static const KeyEventTestData kTestCtrlFSuppressKeyDown = { | 419 static const KeyEventTestData kTestCtrlFSuppressKeyDown = { |
| 420 app::VKEY_F, true, false, false, false, | 420 base::VKEY_F, true, false, false, false, |
| 421 true, false, false, false, 4, | 421 true, false, false, false, 4, |
| 422 { "D 17 0 true false false false", | 422 { "D 17 0 true false false false", |
| 423 "D 70 0 true false false false", | 423 "D 70 0 true false false false", |
| 424 "U 70 0 true false false false", | 424 "U 70 0 true false false false", |
| 425 "U 17 0 true false false false" } | 425 "U 17 0 true false false false" } |
| 426 }; | 426 }; |
| 427 | 427 |
| 428 // Ctrl+Z doesn't bind to any accelerators, which then should generate a | 428 // Ctrl+Z doesn't bind to any accelerators, which then should generate a |
| 429 // keypress event with charCode=26. | 429 // keypress event with charCode=26. |
| 430 static const KeyEventTestData kTestCtrlZ = { | 430 static const KeyEventTestData kTestCtrlZ = { |
| 431 app::VKEY_Z, true, false, false, false, | 431 base::VKEY_Z, true, false, false, false, |
| 432 false, false, false, false, 5, | 432 false, false, false, false, 5, |
| 433 { "D 17 0 true false false false", | 433 { "D 17 0 true false false false", |
| 434 "D 90 0 true false false false", | 434 "D 90 0 true false false false", |
| 435 "P 26 26 true false false false", | 435 "P 26 26 true false false false", |
| 436 "U 90 0 true false false false", | 436 "U 90 0 true false false false", |
| 437 "U 17 0 true false false false" } | 437 "U 17 0 true false false false" } |
| 438 }; | 438 }; |
| 439 | 439 |
| 440 static const KeyEventTestData kTestCtrlZSuppressKeyDown = { | 440 static const KeyEventTestData kTestCtrlZSuppressKeyDown = { |
| 441 app::VKEY_Z, true, false, false, false, | 441 base::VKEY_Z, true, false, false, false, |
| 442 true, false, false, false, 4, | 442 true, false, false, false, 4, |
| 443 { "D 17 0 true false false false", | 443 { "D 17 0 true false false false", |
| 444 "D 90 0 true false false false", | 444 "D 90 0 true false false false", |
| 445 "U 90 0 true false false false", | 445 "U 90 0 true false false false", |
| 446 "U 17 0 true false false false" } | 446 "U 17 0 true false false false" } |
| 447 }; | 447 }; |
| 448 | 448 |
| 449 // Ctrl+Enter shall generate a keypress event with charCode=10 (LF). | 449 // Ctrl+Enter shall generate a keypress event with charCode=10 (LF). |
| 450 static const KeyEventTestData kTestCtrlEnter = { | 450 static const KeyEventTestData kTestCtrlEnter = { |
| 451 app::VKEY_RETURN, true, false, false, false, | 451 base::VKEY_RETURN, true, false, false, false, |
| 452 false, false, false, false, 5, | 452 false, false, false, false, 5, |
| 453 { "D 17 0 true false false false", | 453 { "D 17 0 true false false false", |
| 454 "D 13 0 true false false false", | 454 "D 13 0 true false false false", |
| 455 "P 10 10 true false false false", | 455 "P 10 10 true false false false", |
| 456 "U 13 0 true false false false", | 456 "U 13 0 true false false false", |
| 457 "U 17 0 true false false false" } | 457 "U 17 0 true false false false" } |
| 458 }; | 458 }; |
| 459 | 459 |
| 460 ASSERT_TRUE(test_server()->Start()); | 460 ASSERT_TRUE(test_server()->Start()); |
| 461 | 461 |
| 462 BringBrowserWindowToFront(); | 462 BringBrowserWindowToFront(); |
| 463 GURL url = test_server()->GetURL(kTestingPage); | 463 GURL url = test_server()->GetURL(kTestingPage); |
| 464 ui_test_utils::NavigateToURL(browser(), url); | 464 ui_test_utils::NavigateToURL(browser(), url); |
| 465 | 465 |
| 466 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); | 466 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); |
| 467 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 467 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
| 468 | 468 |
| 469 int tab_index = browser()->selected_index(); | 469 int tab_index = browser()->selected_index(); |
| 470 // Press Ctrl+F, which will make the Find box open and request focus. | 470 // Press Ctrl+F, which will make the Find box open and request focus. |
| 471 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlF)); | 471 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlF)); |
| 472 EXPECT_TRUE(IsViewFocused(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); | 472 EXPECT_TRUE(IsViewFocused(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); |
| 473 | 473 |
| 474 // Press Escape to close the Find box and move the focus back to the web page. | 474 // Press Escape to close the Find box and move the focus back to the web page. |
| 475 ASSERT_NO_FATAL_FAILURE( | 475 ASSERT_NO_FATAL_FAILURE( |
| 476 SendKey(app::VKEY_ESCAPE, false, false, false, false)); | 476 SendKey(base::VKEY_ESCAPE, false, false, false, false)); |
| 477 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 477 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
| 478 | 478 |
| 479 // Press Ctrl+F with keydown suppressed shall not open the find box. | 479 // Press Ctrl+F with keydown suppressed shall not open the find box. |
| 480 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlFSuppressKeyDown)); | 480 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlFSuppressKeyDown)); |
| 481 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 481 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
| 482 | 482 |
| 483 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlZ)); | 483 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlZ)); |
| 484 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlZSuppressKeyDown)); | 484 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlZSuppressKeyDown)); |
| 485 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlEnter)); | 485 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlEnter)); |
| 486 } | 486 } |
| 487 #elif defined(OS_MACOSX) | 487 #elif defined(OS_MACOSX) |
| 488 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, CommandKeyEvents) { | 488 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, CommandKeyEvents) { |
| 489 static const KeyEventTestData kTestCmdF = { | 489 static const KeyEventTestData kTestCmdF = { |
| 490 app::VKEY_F, false, false, false, true, | 490 base::VKEY_F, false, false, false, true, |
| 491 false, false, false, false, 2, | 491 false, false, false, false, 2, |
| 492 { "D 91 0 false false false true", | 492 { "D 91 0 false false false true", |
| 493 "D 70 0 false false false true" } | 493 "D 70 0 false false false true" } |
| 494 }; | 494 }; |
| 495 | 495 |
| 496 // On Mac we don't send key up events when command modifier is down. | 496 // On Mac we don't send key up events when command modifier is down. |
| 497 static const KeyEventTestData kTestCmdFSuppressKeyDown = { | 497 static const KeyEventTestData kTestCmdFSuppressKeyDown = { |
| 498 app::VKEY_F, false, false, false, true, | 498 base::VKEY_F, false, false, false, true, |
| 499 true, false, false, false, 3, | 499 true, false, false, false, 3, |
| 500 { "D 91 0 false false false true", | 500 { "D 91 0 false false false true", |
| 501 "D 70 0 false false false true", | 501 "D 70 0 false false false true", |
| 502 "U 91 0 false false false true" } | 502 "U 91 0 false false false true" } |
| 503 }; | 503 }; |
| 504 | 504 |
| 505 ASSERT_TRUE(test_server()->Start()); | 505 ASSERT_TRUE(test_server()->Start()); |
| 506 | 506 |
| 507 BringBrowserWindowToFront(); | 507 BringBrowserWindowToFront(); |
| 508 GURL url = test_server()->GetURL(kTestingPage); | 508 GURL url = test_server()->GetURL(kTestingPage); |
| 509 ui_test_utils::NavigateToURL(browser(), url); | 509 ui_test_utils::NavigateToURL(browser(), url); |
| 510 | 510 |
| 511 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); | 511 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); |
| 512 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 512 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
| 513 | 513 |
| 514 int tab_index = browser()->selected_index(); | 514 int tab_index = browser()->selected_index(); |
| 515 // Press Cmd+F, which will make the Find box open and request focus. | 515 // Press Cmd+F, which will make the Find box open and request focus. |
| 516 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCmdF)); | 516 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCmdF)); |
| 517 EXPECT_TRUE(IsViewFocused(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); | 517 EXPECT_TRUE(IsViewFocused(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); |
| 518 | 518 |
| 519 // Press Escape to close the Find box and move the focus back to the web page. | 519 // Press Escape to close the Find box and move the focus back to the web page. |
| 520 ASSERT_NO_FATAL_FAILURE( | 520 ASSERT_NO_FATAL_FAILURE( |
| 521 SendKey(app::VKEY_ESCAPE, false, false, false, false)); | 521 SendKey(base::VKEY_ESCAPE, false, false, false, false)); |
| 522 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 522 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
| 523 | 523 |
| 524 // Press Cmd+F with keydown suppressed shall not open the find box. | 524 // Press Cmd+F with keydown suppressed shall not open the find box. |
| 525 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCmdFSuppressKeyDown)); | 525 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCmdFSuppressKeyDown)); |
| 526 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 526 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
| 527 } | 527 } |
| 528 #endif | 528 #endif |
| 529 | 529 |
| 530 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, AccessKeys) { | 530 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, AccessKeys) { |
| 531 #if defined(OS_MACOSX) | 531 #if defined(OS_MACOSX) |
| 532 // On Mac, access keys use ctrl+alt modifiers. | 532 // On Mac, access keys use ctrl+alt modifiers. |
| 533 static const KeyEventTestData kTestAccessA = { | 533 static const KeyEventTestData kTestAccessA = { |
| 534 app::VKEY_A, true, false, true, false, | 534 base::VKEY_A, true, false, true, false, |
| 535 false, false, false, false, 6, | 535 false, false, false, false, 6, |
| 536 { "D 17 0 true false false false", | 536 { "D 17 0 true false false false", |
| 537 "D 18 0 true false true false", | 537 "D 18 0 true false true false", |
| 538 "D 65 0 true false true false", | 538 "D 65 0 true false true false", |
| 539 "U 65 0 true false true false", | 539 "U 65 0 true false true false", |
| 540 "U 18 0 true false true false", | 540 "U 18 0 true false true false", |
| 541 "U 17 0 true false false false" } | 541 "U 17 0 true false false false" } |
| 542 }; | 542 }; |
| 543 | 543 |
| 544 static const KeyEventTestData kTestAccessDSuppress = { | 544 static const KeyEventTestData kTestAccessDSuppress = { |
| 545 app::VKEY_D, true, false, true, false, | 545 base::VKEY_D, true, false, true, false, |
| 546 true, true, true, false, 6, | 546 true, true, true, false, 6, |
| 547 { "D 17 0 true false false false", | 547 { "D 17 0 true false false false", |
| 548 "D 18 0 true false true false", | 548 "D 18 0 true false true false", |
| 549 "D 68 0 true false true false", | 549 "D 68 0 true false true false", |
| 550 "U 68 0 true false true false", | 550 "U 68 0 true false true false", |
| 551 "U 18 0 true false true false", | 551 "U 18 0 true false true false", |
| 552 "U 17 0 true false false false" } | 552 "U 17 0 true false false false" } |
| 553 }; | 553 }; |
| 554 | 554 |
| 555 static const KeyEventTestData kTestAccess1 = { | 555 static const KeyEventTestData kTestAccess1 = { |
| 556 app::VKEY_1, true, false, true, false, | 556 base::VKEY_1, true, false, true, false, |
| 557 false, false, false, false, 6, | 557 false, false, false, false, 6, |
| 558 { "D 17 0 true false false false", | 558 { "D 17 0 true false false false", |
| 559 "D 18 0 true false true false", | 559 "D 18 0 true false true false", |
| 560 "D 49 0 true false true false", | 560 "D 49 0 true false true false", |
| 561 "U 49 0 true false true false", | 561 "U 49 0 true false true false", |
| 562 "U 18 0 true false true false", | 562 "U 18 0 true false true false", |
| 563 "U 17 0 true false false false" } | 563 "U 17 0 true false false false" } |
| 564 }; | 564 }; |
| 565 #else | 565 #else |
| 566 static const KeyEventTestData kTestAccessA = { | 566 static const KeyEventTestData kTestAccessA = { |
| 567 app::VKEY_A, false, false, true, false, | 567 base::VKEY_A, false, false, true, false, |
| 568 false, false, false, false, 4, | 568 false, false, false, false, 4, |
| 569 { "D 18 0 false false true false", | 569 { "D 18 0 false false true false", |
| 570 "D 65 0 false false true false", | 570 "D 65 0 false false true false", |
| 571 "U 65 0 false false true false", | 571 "U 65 0 false false true false", |
| 572 "U 18 0 false false true false" } | 572 "U 18 0 false false true false" } |
| 573 }; | 573 }; |
| 574 | 574 |
| 575 static const KeyEventTestData kTestAccessD = { | 575 static const KeyEventTestData kTestAccessD = { |
| 576 app::VKEY_D, false, false, true, false, | 576 base::VKEY_D, false, false, true, false, |
| 577 false, false, false, false, 2, | 577 false, false, false, false, 2, |
| 578 { "D 18 0 false false true false", | 578 { "D 18 0 false false true false", |
| 579 "D 68 0 false false true false" } | 579 "D 68 0 false false true false" } |
| 580 }; | 580 }; |
| 581 | 581 |
| 582 static const KeyEventTestData kTestAccessDSuppress = { | 582 static const KeyEventTestData kTestAccessDSuppress = { |
| 583 app::VKEY_D, false, false, true, false, | 583 base::VKEY_D, false, false, true, false, |
| 584 true, true, true, false, 4, | 584 true, true, true, false, 4, |
| 585 { "D 18 0 false false true false", | 585 { "D 18 0 false false true false", |
| 586 "D 68 0 false false true false", | 586 "D 68 0 false false true false", |
| 587 "U 68 0 false false true false", | 587 "U 68 0 false false true false", |
| 588 "U 18 0 false false true false" } | 588 "U 18 0 false false true false" } |
| 589 }; | 589 }; |
| 590 | 590 |
| 591 static const KeyEventTestData kTestAccess1 = { | 591 static const KeyEventTestData kTestAccess1 = { |
| 592 app::VKEY_1, false, false, true, false, | 592 base::VKEY_1, false, false, true, false, |
| 593 false, false, false, false, 4, | 593 false, false, false, false, 4, |
| 594 { "D 18 0 false false true false", | 594 { "D 18 0 false false true false", |
| 595 "D 49 0 false false true false", | 595 "D 49 0 false false true false", |
| 596 "U 49 0 false false true false", | 596 "U 49 0 false false true false", |
| 597 "U 18 0 false false true false" } | 597 "U 18 0 false false true false" } |
| 598 }; | 598 }; |
| 599 #endif | 599 #endif |
| 600 | 600 |
| 601 ASSERT_TRUE(test_server()->Start()); | 601 ASSERT_TRUE(test_server()->Start()); |
| 602 | 602 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 669 | 669 |
| 670 BringBrowserWindowToFront(); | 670 BringBrowserWindowToFront(); |
| 671 GURL url = test_server()->GetURL(kTestingPage); | 671 GURL url = test_server()->GetURL(kTestingPage); |
| 672 ui_test_utils::NavigateToURL(browser(), url); | 672 ui_test_utils::NavigateToURL(browser(), url); |
| 673 | 673 |
| 674 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); | 674 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); |
| 675 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 675 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
| 676 | 676 |
| 677 #if defined(OS_WIN) || defined(TOOLKIT_VIEWS) | 677 #if defined(OS_WIN) || defined(TOOLKIT_VIEWS) |
| 678 static const KeyEventTestData kTestCtrlT = { | 678 static const KeyEventTestData kTestCtrlT = { |
| 679 app::VKEY_T, true, false, false, false, | 679 base::VKEY_T, true, false, false, false, |
| 680 true, false, false, false, 1, | 680 true, false, false, false, 1, |
| 681 { "D 17 0 true false false false" } | 681 { "D 17 0 true false false false" } |
| 682 }; | 682 }; |
| 683 | 683 |
| 684 ASSERT_EQ(1, browser()->tab_count()); | 684 ASSERT_EQ(1, browser()->tab_count()); |
| 685 // Press Ctrl+T, which will open a new tab. | 685 // Press Ctrl+T, which will open a new tab. |
| 686 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlT)); | 686 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlT)); |
| 687 EXPECT_EQ(2, browser()->tab_count()); | 687 EXPECT_EQ(2, browser()->tab_count()); |
| 688 browser()->SelectNumberedTab(0); | 688 browser()->SelectNumberedTab(0); |
| 689 ASSERT_EQ(0, browser()->selected_index()); | 689 ASSERT_EQ(0, browser()->selected_index()); |
| 690 | 690 |
| 691 int result_length; | 691 int result_length; |
| 692 ASSERT_NO_FATAL_FAILURE(GetResultLength(0, &result_length)); | 692 ASSERT_NO_FATAL_FAILURE(GetResultLength(0, &result_length)); |
| 693 EXPECT_EQ(1, result_length); | 693 EXPECT_EQ(1, result_length); |
| 694 | 694 |
| 695 // Reserved accelerators can't be suppressed. | 695 // Reserved accelerators can't be suppressed. |
| 696 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); | 696 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); |
| 697 // Press Ctrl+W, which will close the tab. | 697 // Press Ctrl+W, which will close the tab. |
| 698 ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_W, true, false, false, false)); | 698 ASSERT_NO_FATAL_FAILURE(SendKey(base::VKEY_W, true, false, false, false)); |
| 699 EXPECT_EQ(1, browser()->tab_count()); | 699 EXPECT_EQ(1, browser()->tab_count()); |
| 700 #elif defined(OS_MACOSX) | 700 #elif defined(OS_MACOSX) |
| 701 static const KeyEventTestData kTestCmdT = { | 701 static const KeyEventTestData kTestCmdT = { |
| 702 app::VKEY_T, false, false, false, true, | 702 base::VKEY_T, false, false, false, true, |
| 703 true, false, false, false, 1, | 703 true, false, false, false, 1, |
| 704 { "D 91 0 false false false true" } | 704 { "D 91 0 false false false true" } |
| 705 }; | 705 }; |
| 706 | 706 |
| 707 ASSERT_EQ(1, browser()->tab_count()); | 707 ASSERT_EQ(1, browser()->tab_count()); |
| 708 // Press Cmd+T, which will open a new tab. | 708 // Press Cmd+T, which will open a new tab. |
| 709 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCmdT)); | 709 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCmdT)); |
| 710 EXPECT_EQ(2, browser()->tab_count()); | 710 EXPECT_EQ(2, browser()->tab_count()); |
| 711 browser()->SelectNumberedTab(0); | 711 browser()->SelectNumberedTab(0); |
| 712 ASSERT_EQ(0, browser()->selected_index()); | 712 ASSERT_EQ(0, browser()->selected_index()); |
| 713 | 713 |
| 714 int result_length; | 714 int result_length; |
| 715 ASSERT_NO_FATAL_FAILURE(GetResultLength(0, &result_length)); | 715 ASSERT_NO_FATAL_FAILURE(GetResultLength(0, &result_length)); |
| 716 EXPECT_EQ(1, result_length); | 716 EXPECT_EQ(1, result_length); |
| 717 | 717 |
| 718 // Reserved accelerators can't be suppressed. | 718 // Reserved accelerators can't be suppressed. |
| 719 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); | 719 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); |
| 720 // Press Cmd+W, which will close the tab. | 720 // Press Cmd+W, which will close the tab. |
| 721 ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_W, false, false, false, true)); | 721 ASSERT_NO_FATAL_FAILURE(SendKey(base::VKEY_W, false, false, false, true)); |
| 722 EXPECT_EQ(1, browser()->tab_count()); | 722 EXPECT_EQ(1, browser()->tab_count()); |
| 723 #elif defined(TOOLKIT_GTK) | 723 #elif defined(TOOLKIT_GTK) |
| 724 // Ctrl-[a-z] are not treated as reserved accelerators on GTK. | 724 // Ctrl-[a-z] are not treated as reserved accelerators on GTK. |
| 725 static const KeyEventTestData kTestCtrlT = { | 725 static const KeyEventTestData kTestCtrlT = { |
| 726 app::VKEY_T, true, false, false, false, | 726 base::VKEY_T, true, false, false, false, |
| 727 false, false, false, false, 2, | 727 false, false, false, false, 2, |
| 728 { "D 17 0 true false false false", | 728 { "D 17 0 true false false false", |
| 729 "D 84 0 true false false false" } | 729 "D 84 0 true false false false" } |
| 730 }; | 730 }; |
| 731 | 731 |
| 732 static const KeyEventTestData kTestCtrlPageDown = { | 732 static const KeyEventTestData kTestCtrlPageDown = { |
| 733 app::VKEY_NEXT, true, false, false, false, | 733 base::VKEY_NEXT, true, false, false, false, |
| 734 true, false, false, false, 1, | 734 true, false, false, false, 1, |
| 735 { "D 17 0 true false false false" } | 735 { "D 17 0 true false false false" } |
| 736 }; | 736 }; |
| 737 | 737 |
| 738 static const KeyEventTestData kTestCtrlTab = { | 738 static const KeyEventTestData kTestCtrlTab = { |
| 739 app::VKEY_TAB, true, false, false, false, | 739 base::VKEY_TAB, true, false, false, false, |
| 740 true, false, false, false, 1, | 740 true, false, false, false, 1, |
| 741 { "D 17 0 true false false false" } | 741 { "D 17 0 true false false false" } |
| 742 }; | 742 }; |
| 743 | 743 |
| 744 static const KeyEventTestData kTestCtrlTBlocked = { | 744 static const KeyEventTestData kTestCtrlTBlocked = { |
| 745 app::VKEY_T, true, false, false, false, | 745 base::VKEY_T, true, false, false, false, |
| 746 true, false, false, false, 4, | 746 true, false, false, false, 4, |
| 747 { "D 17 0 true false false false", | 747 { "D 17 0 true false false false", |
| 748 "D 84 0 true false false false", | 748 "D 84 0 true false false false", |
| 749 "U 84 0 true false false false", | 749 "U 84 0 true false false false", |
| 750 "U 17 0 true false false false" } | 750 "U 17 0 true false false false" } |
| 751 }; | 751 }; |
| 752 | 752 |
| 753 static const KeyEventTestData kTestCtrlWBlocked = { | 753 static const KeyEventTestData kTestCtrlWBlocked = { |
| 754 app::VKEY_W, true, false, false, false, | 754 base::VKEY_W, true, false, false, false, |
| 755 true, false, false, false, 4, | 755 true, false, false, false, 4, |
| 756 { "D 17 0 true false false false", | 756 { "D 17 0 true false false false", |
| 757 "D 87 0 true false false false", | 757 "D 87 0 true false false false", |
| 758 "U 87 0 true false false false", | 758 "U 87 0 true false false false", |
| 759 "U 17 0 true false false false" } | 759 "U 17 0 true false false false" } |
| 760 }; | 760 }; |
| 761 | 761 |
| 762 ASSERT_EQ(1, browser()->tab_count()); | 762 ASSERT_EQ(1, browser()->tab_count()); |
| 763 | 763 |
| 764 // Ctrl+T should be blockable. | 764 // Ctrl+T should be blockable. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 781 ASSERT_EQ(1, browser()->selected_index()); | 781 ASSERT_EQ(1, browser()->selected_index()); |
| 782 | 782 |
| 783 // Ctrl+W should be blockable. | 783 // Ctrl+W should be blockable. |
| 784 browser()->SelectNumberedTab(0); | 784 browser()->SelectNumberedTab(0); |
| 785 ASSERT_EQ(0, browser()->selected_index()); | 785 ASSERT_EQ(0, browser()->selected_index()); |
| 786 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlWBlocked)); | 786 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(0, kTestCtrlWBlocked)); |
| 787 ASSERT_EQ(2, browser()->tab_count()); | 787 ASSERT_EQ(2, browser()->tab_count()); |
| 788 | 788 |
| 789 // Ctrl+F4 to close the tab. | 789 // Ctrl+F4 to close the tab. |
| 790 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); | 790 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(0, true)); |
| 791 ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_F4, true, false, false, false)); | 791 ASSERT_NO_FATAL_FAILURE(SendKey(base::VKEY_F4, true, false, false, false)); |
| 792 ASSERT_EQ(1, browser()->tab_count()); | 792 ASSERT_EQ(1, browser()->tab_count()); |
| 793 #endif | 793 #endif |
| 794 } | 794 } |
| 795 | 795 |
| 796 #if defined(OS_MACOSX) | 796 #if defined(OS_MACOSX) |
| 797 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, EditorKeyBindings) { | 797 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, EditorKeyBindings) { |
| 798 static const KeyEventTestData kTestCtrlA = { | 798 static const KeyEventTestData kTestCtrlA = { |
| 799 app::VKEY_A, true, false, false, false, | 799 base::VKEY_A, true, false, false, false, |
| 800 false, false, false, false, 4, | 800 false, false, false, false, 4, |
| 801 { "D 17 0 true false false false", | 801 { "D 17 0 true false false false", |
| 802 "D 65 0 true false false false", | 802 "D 65 0 true false false false", |
| 803 "U 65 0 true false false false", | 803 "U 65 0 true false false false", |
| 804 "U 17 0 true false false false" } | 804 "U 17 0 true false false false" } |
| 805 }; | 805 }; |
| 806 | 806 |
| 807 static const KeyEventTestData kTestCtrlF = { | 807 static const KeyEventTestData kTestCtrlF = { |
| 808 app::VKEY_F, true, false, false, false, | 808 base::VKEY_F, true, false, false, false, |
| 809 false, false, false, false, 4, | 809 false, false, false, false, 4, |
| 810 { "D 17 0 true false false false", | 810 { "D 17 0 true false false false", |
| 811 "D 70 0 true false false false", | 811 "D 70 0 true false false false", |
| 812 "U 70 0 true false false false", | 812 "U 70 0 true false false false", |
| 813 "U 17 0 true false false false" } | 813 "U 17 0 true false false false" } |
| 814 }; | 814 }; |
| 815 | 815 |
| 816 static const KeyEventTestData kTestCtrlK = { | 816 static const KeyEventTestData kTestCtrlK = { |
| 817 app::VKEY_K, true, false, false, false, | 817 base::VKEY_K, true, false, false, false, |
| 818 false, false, false, false, 4, | 818 false, false, false, false, 4, |
| 819 { "D 17 0 true false false false", | 819 { "D 17 0 true false false false", |
| 820 "D 75 0 true false false false", | 820 "D 75 0 true false false false", |
| 821 "U 75 0 true false false false", | 821 "U 75 0 true false false false", |
| 822 "U 17 0 true false false false" } | 822 "U 17 0 true false false false" } |
| 823 }; | 823 }; |
| 824 | 824 |
| 825 ASSERT_TRUE(test_server()->Start()); | 825 ASSERT_TRUE(test_server()->Start()); |
| 826 | 826 |
| 827 BringBrowserWindowToFront(); | 827 BringBrowserWindowToFront(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 839 // Forward one character | 839 // Forward one character |
| 840 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlF)); | 840 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlF)); |
| 841 // Delete to the end of the line. | 841 // Delete to the end of the line. |
| 842 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlK)); | 842 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlK)); |
| 843 EXPECT_NO_FATAL_FAILURE(CheckTextBoxValue(tab_index, L"A", L"H")); | 843 EXPECT_NO_FATAL_FAILURE(CheckTextBoxValue(tab_index, L"A", L"H")); |
| 844 } | 844 } |
| 845 #endif | 845 #endif |
| 846 | 846 |
| 847 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, PageUpDownKeys) { | 847 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, PageUpDownKeys) { |
| 848 static const KeyEventTestData kTestPageUp = { | 848 static const KeyEventTestData kTestPageUp = { |
| 849 app::VKEY_PRIOR, false, false, false, false, | 849 base::VKEY_PRIOR, false, false, false, false, |
| 850 false, false, false, false, 2, | 850 false, false, false, false, 2, |
| 851 { "D 33 0 false false false false", | 851 { "D 33 0 false false false false", |
| 852 "U 33 0 false false false false" } | 852 "U 33 0 false false false false" } |
| 853 }; | 853 }; |
| 854 | 854 |
| 855 static const KeyEventTestData kTestPageDown = { | 855 static const KeyEventTestData kTestPageDown = { |
| 856 app::VKEY_NEXT, false, false, false, false, | 856 base::VKEY_NEXT, false, false, false, false, |
| 857 false, false, false, false, 2, | 857 false, false, false, false, 2, |
| 858 { "D 34 0 false false false false", | 858 { "D 34 0 false false false false", |
| 859 "U 34 0 false false false false" } | 859 "U 34 0 false false false false" } |
| 860 }; | 860 }; |
| 861 | 861 |
| 862 ASSERT_TRUE(test_server()->Start()); | 862 ASSERT_TRUE(test_server()->Start()); |
| 863 | 863 |
| 864 BringBrowserWindowToFront(); | 864 BringBrowserWindowToFront(); |
| 865 GURL url = test_server()->GetURL(kTestingPage); | 865 GURL url = test_server()->GetURL(kTestingPage); |
| 866 ui_test_utils::NavigateToURL(browser(), url); | 866 ui_test_utils::NavigateToURL(browser(), url); |
| 867 | 867 |
| 868 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); | 868 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); |
| 869 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 869 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
| 870 | 870 |
| 871 int tab_index = browser()->selected_index(); | 871 int tab_index = browser()->selected_index(); |
| 872 ASSERT_NO_FATAL_FAILURE(SetFocusedElement(tab_index, L"A")); | 872 ASSERT_NO_FATAL_FAILURE(SetFocusedElement(tab_index, L"A")); |
| 873 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestPageUp)); | 873 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestPageUp)); |
| 874 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestPageDown)); | 874 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestPageDown)); |
| 875 EXPECT_NO_FATAL_FAILURE(CheckTextBoxValue(tab_index, L"A", L"")); | 875 EXPECT_NO_FATAL_FAILURE(CheckTextBoxValue(tab_index, L"A", L"")); |
| 876 } | 876 } |
| 877 | 877 |
| 878 #if defined(OS_WIN) || defined(TOOLKIT_VIEWS) | 878 #if defined(OS_WIN) || defined(TOOLKIT_VIEWS) |
| 879 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, FocusMenuBarByAltKey) { | 879 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, FocusMenuBarByAltKey) { |
| 880 static const KeyEventTestData kTestAltKey = { | 880 static const KeyEventTestData kTestAltKey = { |
| 881 app::VKEY_MENU, false, false, false, false, | 881 base::VKEY_MENU, false, false, false, false, |
| 882 false, false, false, false, 2, | 882 false, false, false, false, 2, |
| 883 { "D 18 0 false false true false", | 883 { "D 18 0 false false true false", |
| 884 "U 18 0 false false true false" } | 884 "U 18 0 false false true false" } |
| 885 }; | 885 }; |
| 886 | 886 |
| 887 static const KeyEventTestData kTestAltKeySuppress = { | 887 static const KeyEventTestData kTestAltKeySuppress = { |
| 888 app::VKEY_MENU, false, false, false, false, | 888 base::VKEY_MENU, false, false, false, false, |
| 889 true, false, false, false, 2, | 889 true, false, false, false, 2, |
| 890 { "D 18 0 false false true false", | 890 { "D 18 0 false false true false", |
| 891 "U 18 0 false false true false" } | 891 "U 18 0 false false true false" } |
| 892 }; | 892 }; |
| 893 | 893 |
| 894 static const KeyEventTestData kTestCtrlAltKey = { | 894 static const KeyEventTestData kTestCtrlAltKey = { |
| 895 app::VKEY_MENU, true, false, false, false, | 895 base::VKEY_MENU, true, false, false, false, |
| 896 false, false, false, false, 4, | 896 false, false, false, false, 4, |
| 897 { "D 17 0 true false false false", | 897 { "D 17 0 true false false false", |
| 898 "D 18 0 true false true false", | 898 "D 18 0 true false true false", |
| 899 "U 18 0 true false true false", | 899 "U 18 0 true false true false", |
| 900 "U 17 0 true false false false" } | 900 "U 17 0 true false false false" } |
| 901 }; | 901 }; |
| 902 | 902 |
| 903 ASSERT_TRUE(test_server()->Start()); | 903 ASSERT_TRUE(test_server()->Start()); |
| 904 | 904 |
| 905 BringBrowserWindowToFront(); | 905 BringBrowserWindowToFront(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 921 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestAltKeySuppress)); | 921 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestAltKeySuppress)); |
| 922 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 922 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
| 923 | 923 |
| 924 // Ctrl+Alt should have no effect. | 924 // Ctrl+Alt should have no effect. |
| 925 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlAltKey)); | 925 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlAltKey)); |
| 926 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 926 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
| 927 } | 927 } |
| 928 #endif | 928 #endif |
| 929 | 929 |
| 930 } // namespace | 930 } // namespace |
| OLD | NEW |