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" |
9 #include "base/logging.h" | 8 #include "base/logging.h" |
10 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
11 #include "base/string_util.h" | 10 #include "base/string_util.h" |
12 #include "base/utf_string_conversions.h" | 11 #include "base/utf_string_conversions.h" |
13 #include "base/values.h" | 12 #include "base/values.h" |
14 #include "chrome/browser/dom_operation_notification_details.h" | 13 #include "chrome/browser/dom_operation_notification_details.h" |
15 #include "chrome/browser/renderer_host/render_view_host.h" | 14 #include "chrome/browser/renderer_host/render_view_host.h" |
16 #include "chrome/browser/renderer_host/render_widget_host_view.h" | 15 #include "chrome/browser/renderer_host/render_widget_host_view.h" |
17 #include "chrome/browser/tab_contents/tab_contents.h" | 16 #include "chrome/browser/tab_contents/tab_contents.h" |
18 #include "chrome/browser/tab_contents/tab_contents_view.h" | 17 #include "chrome/browser/tab_contents/tab_contents_view.h" |
19 #include "chrome/browser/ui/browser.h" | 18 #include "chrome/browser/ui/browser.h" |
20 #include "chrome/common/chrome_paths.h" | 19 #include "chrome/common/chrome_paths.h" |
21 #include "chrome/common/notification_registrar.h" | 20 #include "chrome/common/notification_registrar.h" |
22 #include "chrome/common/notification_service.h" | 21 #include "chrome/common/notification_service.h" |
23 #include "chrome/test/in_process_browser_test.h" | 22 #include "chrome/test/in_process_browser_test.h" |
24 #include "chrome/test/ui_test_utils.h" | 23 #include "chrome/test/ui_test_utils.h" |
25 #include "net/test/test_server.h" | 24 #include "net/test/test_server.h" |
| 25 #include "ui/base/keycodes/keyboard_codes.h" |
26 | 26 |
27 namespace { | 27 namespace { |
28 | 28 |
29 const char kTestingPage[] = "files/keyevents_test.html"; | 29 const char kTestingPage[] = "files/keyevents_test.html"; |
30 const wchar_t kSuppressEventJS[] = | 30 const wchar_t kSuppressEventJS[] = |
31 L"window.domAutomationController.send(setDefaultAction('%ls', %ls));"; | 31 L"window.domAutomationController.send(setDefaultAction('%ls', %ls));"; |
32 const wchar_t kGetResultJS[] = | 32 const wchar_t kGetResultJS[] = |
33 L"window.domAutomationController.send(keyEventResult[%d]);"; | 33 L"window.domAutomationController.send(keyEventResult[%d]);"; |
34 const wchar_t kGetResultLengthJS[] = | 34 const wchar_t kGetResultLengthJS[] = |
35 L"window.domAutomationController.send(keyEventResult.length);"; | 35 L"window.domAutomationController.send(keyEventResult.length);"; |
(...skipping 18 matching lines...) Expand all Loading... |
54 // the result of keydown, keypress, keyup and textInput events. | 54 // the result of keydown, keypress, keyup and textInput events. |
55 // For keydown, keypress and keyup events, the format of the result string is: | 55 // For keydown, keypress and keyup events, the format of the result string is: |
56 // <type> <keyCode> <charCode> <ctrlKey> <shiftKey> <altKey> <commandKey> | 56 // <type> <keyCode> <charCode> <ctrlKey> <shiftKey> <altKey> <commandKey> |
57 // where <type> may be 'D' (keydown), 'P' (keypress) or 'U' (keyup). | 57 // where <type> may be 'D' (keydown), 'P' (keypress) or 'U' (keyup). |
58 // <ctrlKey>, <shiftKey> <altKey> and <commandKey> are boolean value indicating | 58 // <ctrlKey>, <shiftKey> <altKey> and <commandKey> are boolean value indicating |
59 // the state of corresponding modifier key. | 59 // the state of corresponding modifier key. |
60 // For textInput event, the format is: T <text>, where <text> is the text to be | 60 // For textInput event, the format is: T <text>, where <text> is the text to be |
61 // input. | 61 // input. |
62 // Please refer to chrome/test/data/keyevents_test.html for details. | 62 // Please refer to chrome/test/data/keyevents_test.html for details. |
63 struct KeyEventTestData { | 63 struct KeyEventTestData { |
64 app::KeyboardCode key; | 64 ui::KeyboardCode key; |
65 bool ctrl; | 65 bool ctrl; |
66 bool shift; | 66 bool shift; |
67 bool alt; | 67 bool alt; |
68 bool command; | 68 bool command; |
69 | 69 |
70 bool suppress_keydown; | 70 bool suppress_keydown; |
71 bool suppress_keypress; | 71 bool suppress_keypress; |
72 bool suppress_keyup; | 72 bool suppress_keyup; |
73 bool suppress_textinput; | 73 bool suppress_textinput; |
74 | 74 |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
282 desc.append(data.result[i]); | 282 desc.append(data.result[i]); |
283 desc.append("\n"); | 283 desc.append("\n"); |
284 } | 284 } |
285 return desc; | 285 return desc; |
286 } | 286 } |
287 }; | 287 }; |
288 | 288 |
289 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, NormalKeyEvents) { | 289 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, NormalKeyEvents) { |
290 static const KeyEventTestData kTestNoInput[] = { | 290 static const KeyEventTestData kTestNoInput[] = { |
291 // a | 291 // a |
292 { app::VKEY_A, false, false, false, false, | 292 { ui::VKEY_A, false, false, false, false, |
293 false, false, false, false, 3, | 293 false, false, false, false, 3, |
294 { "D 65 0 false false false false", | 294 { "D 65 0 false false false false", |
295 "P 97 97 false false false false", | 295 "P 97 97 false false false false", |
296 "U 65 0 false false false false" } }, | 296 "U 65 0 false false false false" } }, |
297 // shift-a | 297 // shift-a |
298 { app::VKEY_A, false, true, false, false, | 298 { ui::VKEY_A, false, true, false, false, |
299 false, false, false, false, 5, | 299 false, false, false, false, 5, |
300 { "D 16 0 false true false false", | 300 { "D 16 0 false true false false", |
301 "D 65 0 false true false false", | 301 "D 65 0 false true false false", |
302 "P 65 65 false true false false", | 302 "P 65 65 false true false false", |
303 "U 65 0 false true false false", | 303 "U 65 0 false true false false", |
304 "U 16 0 false true false false" } }, | 304 "U 16 0 false true false false" } }, |
305 // a, suppress keydown | 305 // a, suppress keydown |
306 { app::VKEY_A, false, false, false, false, | 306 { ui::VKEY_A, false, false, false, false, |
307 true, false, false, false, 2, | 307 true, false, false, false, 2, |
308 { "D 65 0 false false false false", | 308 { "D 65 0 false false false false", |
309 "U 65 0 false false false false" } }, | 309 "U 65 0 false false false false" } }, |
310 }; | 310 }; |
311 | 311 |
312 static const KeyEventTestData kTestWithInput[] = { | 312 static const KeyEventTestData kTestWithInput[] = { |
313 // a | 313 // a |
314 { app::VKEY_A, false, false, false, false, | 314 { ui::VKEY_A, false, false, false, false, |
315 false, false, false, false, 4, | 315 false, false, false, false, 4, |
316 { "D 65 0 false false false false", | 316 { "D 65 0 false false false false", |
317 "P 97 97 false false false false", | 317 "P 97 97 false false false false", |
318 "T a", | 318 "T a", |
319 "U 65 0 false false false false" } }, | 319 "U 65 0 false false false false" } }, |
320 // shift-a | 320 // shift-a |
321 { app::VKEY_A, false, true, false, false, | 321 { ui::VKEY_A, false, true, false, false, |
322 false, false, false, false, 6, | 322 false, false, false, false, 6, |
323 { "D 16 0 false true false false", | 323 { "D 16 0 false true false false", |
324 "D 65 0 false true false false", | 324 "D 65 0 false true false false", |
325 "P 65 65 false true false false", | 325 "P 65 65 false true false false", |
326 "T A", | 326 "T A", |
327 "U 65 0 false true false false", | 327 "U 65 0 false true false false", |
328 "U 16 0 false true false false" } }, | 328 "U 16 0 false true false false" } }, |
329 // a, suppress keydown | 329 // a, suppress keydown |
330 { app::VKEY_A, false, false, false, false, | 330 { ui::VKEY_A, false, false, false, false, |
331 true, false, false, false, 2, | 331 true, false, false, false, 2, |
332 { "D 65 0 false false false false", | 332 { "D 65 0 false false false false", |
333 "U 65 0 false false false false" } }, | 333 "U 65 0 false false false false" } }, |
334 // a, suppress keypress | 334 // a, suppress keypress |
335 { app::VKEY_A, false, false, false, false, | 335 { ui::VKEY_A, false, false, false, false, |
336 false, true, false, false, 3, | 336 false, true, false, false, 3, |
337 { "D 65 0 false false false false", | 337 { "D 65 0 false false false false", |
338 "P 97 97 false false false false", | 338 "P 97 97 false false false false", |
339 "U 65 0 false false false false" } }, | 339 "U 65 0 false false false false" } }, |
340 // a, suppress textInput | 340 // a, suppress textInput |
341 { app::VKEY_A, false, false, false, false, | 341 { ui::VKEY_A, false, false, false, false, |
342 false, false, false, true, 4, | 342 false, false, false, true, 4, |
343 { "D 65 0 false false false false", | 343 { "D 65 0 false false false false", |
344 "P 97 97 false false false false", | 344 "P 97 97 false false false false", |
345 "T a", | 345 "T a", |
346 "U 65 0 false false false false" } }, | 346 "U 65 0 false false false false" } }, |
347 }; | 347 }; |
348 | 348 |
349 ASSERT_TRUE(test_server()->Start()); | 349 ASSERT_TRUE(test_server()->Start()); |
350 | 350 |
351 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 351 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
(...skipping 25 matching lines...) Expand all Loading... |
377 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestWithInput[i])) | 377 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestWithInput[i])) |
378 << "kTestWithInput[" << i << "] in password box failed:\n" | 378 << "kTestWithInput[" << i << "] in password box failed:\n" |
379 << GetTestDataDescription(kTestWithInput[i]); | 379 << GetTestDataDescription(kTestWithInput[i]); |
380 } | 380 } |
381 EXPECT_NO_FATAL_FAILURE(CheckTextBoxValue(tab_index, L"B", L"aA")); | 381 EXPECT_NO_FATAL_FAILURE(CheckTextBoxValue(tab_index, L"B", L"aA")); |
382 } | 382 } |
383 | 383 |
384 #if defined(OS_WIN) || defined(OS_LINUX) | 384 #if defined(OS_WIN) || defined(OS_LINUX) |
385 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, CtrlKeyEvents) { | 385 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, CtrlKeyEvents) { |
386 static const KeyEventTestData kTestCtrlF = { | 386 static const KeyEventTestData kTestCtrlF = { |
387 app::VKEY_F, true, false, false, false, | 387 ui::VKEY_F, true, false, false, false, |
388 false, false, false, false, 2, | 388 false, false, false, false, 2, |
389 { "D 17 0 true false false false", | 389 { "D 17 0 true false false false", |
390 "D 70 0 true false false false" } | 390 "D 70 0 true false false false" } |
391 }; | 391 }; |
392 | 392 |
393 static const KeyEventTestData kTestCtrlFSuppressKeyDown = { | 393 static const KeyEventTestData kTestCtrlFSuppressKeyDown = { |
394 app::VKEY_F, true, false, false, false, | 394 ui::VKEY_F, true, false, false, false, |
395 true, false, false, false, 4, | 395 true, false, false, false, 4, |
396 { "D 17 0 true false false false", | 396 { "D 17 0 true false false false", |
397 "D 70 0 true false false false", | 397 "D 70 0 true false false false", |
398 "U 70 0 true false false false", | 398 "U 70 0 true false false false", |
399 "U 17 0 true false false false" } | 399 "U 17 0 true false false false" } |
400 }; | 400 }; |
401 | 401 |
402 // Ctrl+Z doesn't bind to any accelerators, which then should generate a | 402 // Ctrl+Z doesn't bind to any accelerators, which then should generate a |
403 // keypress event with charCode=26. | 403 // keypress event with charCode=26. |
404 static const KeyEventTestData kTestCtrlZ = { | 404 static const KeyEventTestData kTestCtrlZ = { |
405 app::VKEY_Z, true, false, false, false, | 405 ui::VKEY_Z, true, false, false, false, |
406 false, false, false, false, 5, | 406 false, false, false, false, 5, |
407 { "D 17 0 true false false false", | 407 { "D 17 0 true false false false", |
408 "D 90 0 true false false false", | 408 "D 90 0 true false false false", |
409 "P 26 26 true false false false", | 409 "P 26 26 true false false false", |
410 "U 90 0 true false false false", | 410 "U 90 0 true false false false", |
411 "U 17 0 true false false false" } | 411 "U 17 0 true false false false" } |
412 }; | 412 }; |
413 | 413 |
414 static const KeyEventTestData kTestCtrlZSuppressKeyDown = { | 414 static const KeyEventTestData kTestCtrlZSuppressKeyDown = { |
415 app::VKEY_Z, true, false, false, false, | 415 ui::VKEY_Z, true, false, false, false, |
416 true, false, false, false, 4, | 416 true, false, false, false, 4, |
417 { "D 17 0 true false false false", | 417 { "D 17 0 true false false false", |
418 "D 90 0 true false false false", | 418 "D 90 0 true false false false", |
419 "U 90 0 true false false false", | 419 "U 90 0 true false false false", |
420 "U 17 0 true false false false" } | 420 "U 17 0 true false false false" } |
421 }; | 421 }; |
422 | 422 |
423 // Ctrl+Enter shall generate a keypress event with charCode=10 (LF). | 423 // Ctrl+Enter shall generate a keypress event with charCode=10 (LF). |
424 static const KeyEventTestData kTestCtrlEnter = { | 424 static const KeyEventTestData kTestCtrlEnter = { |
425 app::VKEY_RETURN, true, false, false, false, | 425 ui::VKEY_RETURN, true, false, false, false, |
426 false, false, false, false, 5, | 426 false, false, false, false, 5, |
427 { "D 17 0 true false false false", | 427 { "D 17 0 true false false false", |
428 "D 13 0 true false false false", | 428 "D 13 0 true false false false", |
429 "P 10 10 true false false false", | 429 "P 10 10 true false false false", |
430 "U 13 0 true false false false", | 430 "U 13 0 true false false false", |
431 "U 17 0 true false false false" } | 431 "U 17 0 true false false false" } |
432 }; | 432 }; |
433 | 433 |
434 ASSERT_TRUE(test_server()->Start()); | 434 ASSERT_TRUE(test_server()->Start()); |
435 | 435 |
436 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 436 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
437 GURL url = test_server()->GetURL(kTestingPage); | 437 GURL url = test_server()->GetURL(kTestingPage); |
438 ui_test_utils::NavigateToURL(browser(), url); | 438 ui_test_utils::NavigateToURL(browser(), url); |
439 | 439 |
440 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); | 440 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); |
441 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 441 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
442 | 442 |
443 int tab_index = browser()->selected_index(); | 443 int tab_index = browser()->selected_index(); |
444 // Press Ctrl+F, which will make the Find box open and request focus. | 444 // Press Ctrl+F, which will make the Find box open and request focus. |
445 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlF)); | 445 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlF)); |
446 EXPECT_TRUE(IsViewFocused(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); | 446 EXPECT_TRUE(IsViewFocused(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); |
447 | 447 |
448 // Press Escape to close the Find box and move the focus back to the web page. | 448 // Press Escape to close the Find box and move the focus back to the web page. |
449 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 449 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( |
450 browser(), app::VKEY_ESCAPE, false, false, false, false)); | 450 browser(), ui::VKEY_ESCAPE, false, false, false, false)); |
451 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 451 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
452 | 452 |
453 // Press Ctrl+F with keydown suppressed shall not open the find box. | 453 // Press Ctrl+F with keydown suppressed shall not open the find box. |
454 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlFSuppressKeyDown)); | 454 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlFSuppressKeyDown)); |
455 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 455 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
456 | 456 |
457 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlZ)); | 457 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlZ)); |
458 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlZSuppressKeyDown)); | 458 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlZSuppressKeyDown)); |
459 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlEnter)); | 459 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlEnter)); |
460 } | 460 } |
461 #elif defined(OS_MACOSX) | 461 #elif defined(OS_MACOSX) |
462 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, CommandKeyEvents) { | 462 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, CommandKeyEvents) { |
463 static const KeyEventTestData kTestCmdF = { | 463 static const KeyEventTestData kTestCmdF = { |
464 app::VKEY_F, false, false, false, true, | 464 ui::VKEY_F, false, false, false, true, |
465 false, false, false, false, 2, | 465 false, false, false, false, 2, |
466 { "D 91 0 false false false true", | 466 { "D 91 0 false false false true", |
467 "D 70 0 false false false true" } | 467 "D 70 0 false false false true" } |
468 }; | 468 }; |
469 | 469 |
470 // On Mac we don't send key up events when command modifier is down. | 470 // On Mac we don't send key up events when command modifier is down. |
471 static const KeyEventTestData kTestCmdFSuppressKeyDown = { | 471 static const KeyEventTestData kTestCmdFSuppressKeyDown = { |
472 app::VKEY_F, false, false, false, true, | 472 ui::VKEY_F, false, false, false, true, |
473 true, false, false, false, 3, | 473 true, false, false, false, 3, |
474 { "D 91 0 false false false true", | 474 { "D 91 0 false false false true", |
475 "D 70 0 false false false true", | 475 "D 70 0 false false false true", |
476 "U 91 0 false false false true" } | 476 "U 91 0 false false false true" } |
477 }; | 477 }; |
478 | 478 |
479 ASSERT_TRUE(test_server()->Start()); | 479 ASSERT_TRUE(test_server()->Start()); |
480 | 480 |
481 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 481 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
482 GURL url = test_server()->GetURL(kTestingPage); | 482 GURL url = test_server()->GetURL(kTestingPage); |
483 ui_test_utils::NavigateToURL(browser(), url); | 483 ui_test_utils::NavigateToURL(browser(), url); |
484 | 484 |
485 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); | 485 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); |
486 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 486 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
487 | 487 |
488 int tab_index = browser()->selected_index(); | 488 int tab_index = browser()->selected_index(); |
489 // Press Cmd+F, which will make the Find box open and request focus. | 489 // Press Cmd+F, which will make the Find box open and request focus. |
490 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCmdF)); | 490 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCmdF)); |
491 EXPECT_TRUE(IsViewFocused(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); | 491 EXPECT_TRUE(IsViewFocused(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); |
492 | 492 |
493 // Press Escape to close the Find box and move the focus back to the web page. | 493 // Press Escape to close the Find box and move the focus back to the web page. |
494 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 494 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( |
495 browser(), app::VKEY_ESCAPE, false, false, false, false)); | 495 browser(), ui::VKEY_ESCAPE, false, false, false, false)); |
496 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 496 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
497 | 497 |
498 // Press Cmd+F with keydown suppressed shall not open the find box. | 498 // Press Cmd+F with keydown suppressed shall not open the find box. |
499 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCmdFSuppressKeyDown)); | 499 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCmdFSuppressKeyDown)); |
500 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 500 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
501 } | 501 } |
502 #endif | 502 #endif |
503 | 503 |
504 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, AccessKeys) { | 504 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, AccessKeys) { |
505 #if defined(OS_MACOSX) | 505 #if defined(OS_MACOSX) |
506 // On Mac, access keys use ctrl+alt modifiers. | 506 // On Mac, access keys use ctrl+alt modifiers. |
507 static const KeyEventTestData kTestAccessA = { | 507 static const KeyEventTestData kTestAccessA = { |
508 app::VKEY_A, true, false, true, false, | 508 ui::VKEY_A, true, false, true, false, |
509 false, false, false, false, 6, | 509 false, false, false, false, 6, |
510 { "D 17 0 true false false false", | 510 { "D 17 0 true false false false", |
511 "D 18 0 true false true false", | 511 "D 18 0 true false true false", |
512 "D 65 0 true false true false", | 512 "D 65 0 true false true false", |
513 "U 65 0 true false true false", | 513 "U 65 0 true false true false", |
514 "U 18 0 true false true false", | 514 "U 18 0 true false true false", |
515 "U 17 0 true false false false" } | 515 "U 17 0 true false false false" } |
516 }; | 516 }; |
517 | 517 |
518 static const KeyEventTestData kTestAccessDSuppress = { | 518 static const KeyEventTestData kTestAccessDSuppress = { |
519 app::VKEY_D, true, false, true, false, | 519 ui::VKEY_D, true, false, true, false, |
520 true, true, true, false, 6, | 520 true, true, true, false, 6, |
521 { "D 17 0 true false false false", | 521 { "D 17 0 true false false false", |
522 "D 18 0 true false true false", | 522 "D 18 0 true false true false", |
523 "D 68 0 true false true false", | 523 "D 68 0 true false true false", |
524 "U 68 0 true false true false", | 524 "U 68 0 true false true false", |
525 "U 18 0 true false true false", | 525 "U 18 0 true false true false", |
526 "U 17 0 true false false false" } | 526 "U 17 0 true false false false" } |
527 }; | 527 }; |
528 | 528 |
529 static const KeyEventTestData kTestAccess1 = { | 529 static const KeyEventTestData kTestAccess1 = { |
530 app::VKEY_1, true, false, true, false, | 530 ui::VKEY_1, true, false, true, false, |
531 false, false, false, false, 6, | 531 false, false, false, false, 6, |
532 { "D 17 0 true false false false", | 532 { "D 17 0 true false false false", |
533 "D 18 0 true false true false", | 533 "D 18 0 true false true false", |
534 "D 49 0 true false true false", | 534 "D 49 0 true false true false", |
535 "U 49 0 true false true false", | 535 "U 49 0 true false true false", |
536 "U 18 0 true false true false", | 536 "U 18 0 true false true false", |
537 "U 17 0 true false false false" } | 537 "U 17 0 true false false false" } |
538 }; | 538 }; |
539 #else | 539 #else |
540 static const KeyEventTestData kTestAccessA = { | 540 static const KeyEventTestData kTestAccessA = { |
541 app::VKEY_A, false, false, true, false, | 541 ui::VKEY_A, false, false, true, false, |
542 false, false, false, false, 4, | 542 false, false, false, false, 4, |
543 { "D 18 0 false false true false", | 543 { "D 18 0 false false true false", |
544 "D 65 0 false false true false", | 544 "D 65 0 false false true false", |
545 "U 65 0 false false true false", | 545 "U 65 0 false false true false", |
546 "U 18 0 false false true false" } | 546 "U 18 0 false false true false" } |
547 }; | 547 }; |
548 | 548 |
549 static const KeyEventTestData kTestAccessD = { | 549 static const KeyEventTestData kTestAccessD = { |
550 app::VKEY_D, false, false, true, false, | 550 ui::VKEY_D, false, false, true, false, |
551 false, false, false, false, 2, | 551 false, false, false, false, 2, |
552 { "D 18 0 false false true false", | 552 { "D 18 0 false false true false", |
553 "D 68 0 false false true false" } | 553 "D 68 0 false false true false" } |
554 }; | 554 }; |
555 | 555 |
556 static const KeyEventTestData kTestAccessDSuppress = { | 556 static const KeyEventTestData kTestAccessDSuppress = { |
557 app::VKEY_D, false, false, true, false, | 557 ui::VKEY_D, false, false, true, false, |
558 true, true, true, false, 4, | 558 true, true, true, false, 4, |
559 { "D 18 0 false false true false", | 559 { "D 18 0 false false true false", |
560 "D 68 0 false false true false", | 560 "D 68 0 false false true false", |
561 "U 68 0 false false true false", | 561 "U 68 0 false false true false", |
562 "U 18 0 false false true false" } | 562 "U 18 0 false false true false" } |
563 }; | 563 }; |
564 | 564 |
565 static const KeyEventTestData kTestAccess1 = { | 565 static const KeyEventTestData kTestAccess1 = { |
566 app::VKEY_1, false, false, true, false, | 566 ui::VKEY_1, false, false, true, false, |
567 false, false, false, false, 4, | 567 false, false, false, false, 4, |
568 { "D 18 0 false false true false", | 568 { "D 18 0 false false true false", |
569 "D 49 0 false false true false", | 569 "D 49 0 false false true false", |
570 "U 49 0 false false true false", | 570 "U 49 0 false false true false", |
571 "U 18 0 false false true false" } | 571 "U 18 0 false false true false" } |
572 }; | 572 }; |
573 #endif | 573 #endif |
574 | 574 |
575 ASSERT_TRUE(test_server()->Start()); | 575 ASSERT_TRUE(test_server()->Start()); |
576 | 576 |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
644 GURL url = test_server()->GetURL(kTestingPage); | 644 GURL url = test_server()->GetURL(kTestingPage); |
645 ui_test_utils::NavigateToURL(browser(), url); | 645 ui_test_utils::NavigateToURL(browser(), url); |
646 | 646 |
647 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); | 647 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); |
648 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 648 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
649 | 649 |
650 ASSERT_EQ(1, browser()->tab_count()); | 650 ASSERT_EQ(1, browser()->tab_count()); |
651 | 651 |
652 static const KeyEventTestData kTestCtrlOrCmdT = { | 652 static const KeyEventTestData kTestCtrlOrCmdT = { |
653 #if defined(OS_MACOSX) | 653 #if defined(OS_MACOSX) |
654 app::VKEY_T, false, false, false, true, | 654 ui::VKEY_T, false, false, false, true, |
655 true, false, false, false, 1, | 655 true, false, false, false, 1, |
656 { "D 91 0 false false false true" } | 656 { "D 91 0 false false false true" } |
657 #else | 657 #else |
658 app::VKEY_T, true, false, false, false, | 658 ui::VKEY_T, true, false, false, false, |
659 true, false, false, false, 1, | 659 true, false, false, false, 1, |
660 { "D 17 0 true false false false" } | 660 { "D 17 0 true false false false" } |
661 #endif | 661 #endif |
662 }; | 662 }; |
663 | 663 |
664 ui_test_utils::WindowedNotificationObserver wait_for_new_tab( | 664 ui_test_utils::WindowedNotificationObserver wait_for_new_tab( |
665 NotificationType::TAB_PARENTED, | 665 NotificationType::TAB_PARENTED, |
666 NotificationService::AllSources()); | 666 NotificationService::AllSources()); |
667 | 667 |
668 // Press Ctrl/Cmd+T, which will open a new tab. It cannot be suppressed. | 668 // Press Ctrl/Cmd+T, which will open a new tab. It cannot be suppressed. |
(...skipping 22 matching lines...) Expand all Loading... |
691 // Reserved accelerators can't be suppressed. | 691 // Reserved accelerators can't be suppressed. |
692 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(1, true)); | 692 ASSERT_NO_FATAL_FAILURE(SuppressAllEvents(1, true)); |
693 | 693 |
694 ui_test_utils::WindowedNotificationObserver wait_for_tab_closed( | 694 ui_test_utils::WindowedNotificationObserver wait_for_tab_closed( |
695 NotificationType::TAB_CLOSED, Source<NavigationController>( | 695 NotificationType::TAB_CLOSED, Source<NavigationController>( |
696 &browser()->GetTabContentsAt(1)->controller())); | 696 &browser()->GetTabContentsAt(1)->controller())); |
697 | 697 |
698 // Press Ctrl/Cmd+W, which will close the tab. | 698 // Press Ctrl/Cmd+W, which will close the tab. |
699 #if defined(OS_MACOSX) | 699 #if defined(OS_MACOSX) |
700 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 700 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( |
701 browser(), app::VKEY_W, false, false, false, true)); | 701 browser(), ui::VKEY_W, false, false, false, true)); |
702 #else | 702 #else |
703 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 703 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( |
704 browser(), app::VKEY_W, true, false, false, false)); | 704 browser(), ui::VKEY_W, true, false, false, false)); |
705 #endif | 705 #endif |
706 | 706 |
707 ASSERT_NO_FATAL_FAILURE(wait_for_tab_closed.Wait()); | 707 ASSERT_NO_FATAL_FAILURE(wait_for_tab_closed.Wait()); |
708 | 708 |
709 EXPECT_EQ(1, browser()->tab_count()); | 709 EXPECT_EQ(1, browser()->tab_count()); |
710 } | 710 } |
711 | 711 |
712 #if defined(OS_MACOSX) | 712 #if defined(OS_MACOSX) |
713 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, EditorKeyBindings) { | 713 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, EditorKeyBindings) { |
714 static const KeyEventTestData kTestCtrlA = { | 714 static const KeyEventTestData kTestCtrlA = { |
715 app::VKEY_A, true, false, false, false, | 715 ui::VKEY_A, true, false, false, false, |
716 false, false, false, false, 4, | 716 false, false, false, false, 4, |
717 { "D 17 0 true false false false", | 717 { "D 17 0 true false false false", |
718 "D 65 0 true false false false", | 718 "D 65 0 true false false false", |
719 "U 65 0 true false false false", | 719 "U 65 0 true false false false", |
720 "U 17 0 true false false false" } | 720 "U 17 0 true false false false" } |
721 }; | 721 }; |
722 | 722 |
723 static const KeyEventTestData kTestCtrlF = { | 723 static const KeyEventTestData kTestCtrlF = { |
724 app::VKEY_F, true, false, false, false, | 724 ui::VKEY_F, true, false, false, false, |
725 false, false, false, false, 4, | 725 false, false, false, false, 4, |
726 { "D 17 0 true false false false", | 726 { "D 17 0 true false false false", |
727 "D 70 0 true false false false", | 727 "D 70 0 true false false false", |
728 "U 70 0 true false false false", | 728 "U 70 0 true false false false", |
729 "U 17 0 true false false false" } | 729 "U 17 0 true false false false" } |
730 }; | 730 }; |
731 | 731 |
732 static const KeyEventTestData kTestCtrlK = { | 732 static const KeyEventTestData kTestCtrlK = { |
733 app::VKEY_K, true, false, false, false, | 733 ui::VKEY_K, true, false, false, false, |
734 false, false, false, false, 4, | 734 false, false, false, false, 4, |
735 { "D 17 0 true false false false", | 735 { "D 17 0 true false false false", |
736 "D 75 0 true false false false", | 736 "D 75 0 true false false false", |
737 "U 75 0 true false false false", | 737 "U 75 0 true false false false", |
738 "U 17 0 true false false false" } | 738 "U 17 0 true false false false" } |
739 }; | 739 }; |
740 | 740 |
741 ASSERT_TRUE(test_server()->Start()); | 741 ASSERT_TRUE(test_server()->Start()); |
742 | 742 |
743 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 743 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
(...skipping 11 matching lines...) Expand all Loading... |
755 // Forward one character | 755 // Forward one character |
756 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlF)); | 756 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlF)); |
757 // Delete to the end of the line. | 757 // Delete to the end of the line. |
758 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlK)); | 758 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlK)); |
759 EXPECT_NO_FATAL_FAILURE(CheckTextBoxValue(tab_index, L"A", L"H")); | 759 EXPECT_NO_FATAL_FAILURE(CheckTextBoxValue(tab_index, L"A", L"H")); |
760 } | 760 } |
761 #endif | 761 #endif |
762 | 762 |
763 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, PageUpDownKeys) { | 763 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, PageUpDownKeys) { |
764 static const KeyEventTestData kTestPageUp = { | 764 static const KeyEventTestData kTestPageUp = { |
765 app::VKEY_PRIOR, false, false, false, false, | 765 ui::VKEY_PRIOR, false, false, false, false, |
766 false, false, false, false, 2, | 766 false, false, false, false, 2, |
767 { "D 33 0 false false false false", | 767 { "D 33 0 false false false false", |
768 "U 33 0 false false false false" } | 768 "U 33 0 false false false false" } |
769 }; | 769 }; |
770 | 770 |
771 static const KeyEventTestData kTestPageDown = { | 771 static const KeyEventTestData kTestPageDown = { |
772 app::VKEY_NEXT, false, false, false, false, | 772 ui::VKEY_NEXT, false, false, false, false, |
773 false, false, false, false, 2, | 773 false, false, false, false, 2, |
774 { "D 34 0 false false false false", | 774 { "D 34 0 false false false false", |
775 "U 34 0 false false false false" } | 775 "U 34 0 false false false false" } |
776 }; | 776 }; |
777 | 777 |
778 ASSERT_TRUE(test_server()->Start()); | 778 ASSERT_TRUE(test_server()->Start()); |
779 | 779 |
780 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 780 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
781 GURL url = test_server()->GetURL(kTestingPage); | 781 GURL url = test_server()->GetURL(kTestingPage); |
782 ui_test_utils::NavigateToURL(browser(), url); | 782 ui_test_utils::NavigateToURL(browser(), url); |
783 | 783 |
784 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); | 784 ASSERT_NO_FATAL_FAILURE(ClickOnView(VIEW_ID_TAB_CONTAINER)); |
785 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 785 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
786 | 786 |
787 int tab_index = browser()->selected_index(); | 787 int tab_index = browser()->selected_index(); |
788 ASSERT_NO_FATAL_FAILURE(SetFocusedElement(tab_index, L"A")); | 788 ASSERT_NO_FATAL_FAILURE(SetFocusedElement(tab_index, L"A")); |
789 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestPageUp)); | 789 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestPageUp)); |
790 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestPageDown)); | 790 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestPageDown)); |
791 EXPECT_NO_FATAL_FAILURE(CheckTextBoxValue(tab_index, L"A", L"")); | 791 EXPECT_NO_FATAL_FAILURE(CheckTextBoxValue(tab_index, L"A", L"")); |
792 } | 792 } |
793 | 793 |
794 #if defined(OS_WIN) || defined(TOOLKIT_VIEWS) | 794 #if defined(OS_WIN) || defined(TOOLKIT_VIEWS) |
795 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, FocusMenuBarByAltKey) { | 795 IN_PROC_BROWSER_TEST_F(BrowserKeyEventsTest, FocusMenuBarByAltKey) { |
796 static const KeyEventTestData kTestAltKey = { | 796 static const KeyEventTestData kTestAltKey = { |
797 app::VKEY_MENU, false, false, false, false, | 797 ui::VKEY_MENU, false, false, false, false, |
798 false, false, false, false, 2, | 798 false, false, false, false, 2, |
799 { "D 18 0 false false true false", | 799 { "D 18 0 false false true false", |
800 "U 18 0 false false true false" } | 800 "U 18 0 false false true false" } |
801 }; | 801 }; |
802 | 802 |
803 static const KeyEventTestData kTestAltKeySuppress = { | 803 static const KeyEventTestData kTestAltKeySuppress = { |
804 app::VKEY_MENU, false, false, false, false, | 804 ui::VKEY_MENU, false, false, false, false, |
805 true, false, false, false, 2, | 805 true, false, false, false, 2, |
806 { "D 18 0 false false true false", | 806 { "D 18 0 false false true false", |
807 "U 18 0 false false true false" } | 807 "U 18 0 false false true false" } |
808 }; | 808 }; |
809 | 809 |
810 static const KeyEventTestData kTestCtrlAltKey = { | 810 static const KeyEventTestData kTestCtrlAltKey = { |
811 app::VKEY_MENU, true, false, false, false, | 811 ui::VKEY_MENU, true, false, false, false, |
812 false, false, false, false, 4, | 812 false, false, false, false, 4, |
813 { "D 17 0 true false false false", | 813 { "D 17 0 true false false false", |
814 "D 18 0 true false true false", | 814 "D 18 0 true false true false", |
815 "U 18 0 true false true false", | 815 "U 18 0 true false true false", |
816 "U 17 0 true false false false" } | 816 "U 17 0 true false false false" } |
817 }; | 817 }; |
818 | 818 |
819 ASSERT_TRUE(test_server()->Start()); | 819 ASSERT_TRUE(test_server()->Start()); |
820 | 820 |
821 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 821 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
(...skipping 15 matching lines...) Expand all Loading... |
837 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestAltKeySuppress)); | 837 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestAltKeySuppress)); |
838 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 838 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
839 | 839 |
840 // Ctrl+Alt should have no effect. | 840 // Ctrl+Alt should have no effect. |
841 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlAltKey)); | 841 EXPECT_NO_FATAL_FAILURE(TestKeyEvent(tab_index, kTestCtrlAltKey)); |
842 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); | 842 ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW)); |
843 } | 843 } |
844 #endif | 844 #endif |
845 | 845 |
846 } // namespace | 846 } // namespace |
OLD | NEW |