OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 <string> | 5 #include <string> |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 #include "content/public/test/browser_test_utils.h" | 46 #include "content/public/test/browser_test_utils.h" |
47 #include "content/public/test/test_renderer_host.h" | 47 #include "content/public/test/test_renderer_host.h" |
48 #include "content/public/test/test_utils.h" | 48 #include "content/public/test/test_utils.h" |
49 #include "net/base/net_errors.h" | 49 #include "net/base/net_errors.h" |
50 #include "net/test/embedded_test_server/embedded_test_server.h" | 50 #include "net/test/embedded_test_server/embedded_test_server.h" |
51 #include "net/url_request/test_url_fetcher_factory.h" | 51 #include "net/url_request/test_url_fetcher_factory.h" |
52 #include "net/url_request/url_request_status.h" | 52 #include "net/url_request/url_request_status.h" |
53 #include "testing/gmock/include/gmock/gmock.h" | 53 #include "testing/gmock/include/gmock/gmock.h" |
54 #include "testing/gtest/include/gtest/gtest.h" | 54 #include "testing/gtest/include/gtest/gtest.h" |
55 #include "ui/base/clipboard/scoped_clipboard_writer.h" | 55 #include "ui/base/clipboard/scoped_clipboard_writer.h" |
| 56 #include "ui/events/keycodes/keyboard_code_conversion.h" |
56 #include "ui/events/keycodes/keyboard_codes.h" | 57 #include "ui/events/keycodes/keyboard_codes.h" |
57 | 58 |
58 using base::ASCIIToUTF16; | 59 using base::ASCIIToUTF16; |
59 | 60 |
60 namespace autofill { | 61 namespace autofill { |
61 | 62 |
62 static const char kDataURIPrefix[] = "data:text/html;charset=utf-8,"; | 63 static const char kDataURIPrefix[] = "data:text/html;charset=utf-8,"; |
63 static const char kTestFormString[] = | 64 static const char kTestFormString[] = |
64 "<form action=\"http://www.example.com/\" method=\"POST\">" | 65 "<form action=\"http://www.example.com/\" method=\"POST\">" |
65 "<label for=\"firstname\">First name:</label>" | 66 "<label for=\"firstname\">First name:</label>" |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 AddTestProfile(browser(), profile); | 280 AddTestProfile(browser(), profile); |
280 } | 281 } |
281 | 282 |
282 // Populates a webpage form using autofill data and keypress events. | 283 // Populates a webpage form using autofill data and keypress events. |
283 // This function focuses the specified input field in the form, and then | 284 // This function focuses the specified input field in the form, and then |
284 // sends keypress events to the tab to cause the form to be populated. | 285 // sends keypress events to the tab to cause the form to be populated. |
285 void PopulateForm(const std::string& field_id) { | 286 void PopulateForm(const std::string& field_id) { |
286 std::string js("document.getElementById('" + field_id + "').focus();"); | 287 std::string js("document.getElementById('" + field_id + "').focus();"); |
287 ASSERT_TRUE(content::ExecuteScript(GetRenderViewHost(), js)); | 288 ASSERT_TRUE(content::ExecuteScript(GetRenderViewHost(), js)); |
288 | 289 |
289 SendKeyToPageAndWait(ui::VKEY_DOWN); | 290 SendKeyToPageAndWait(ui::DomKey::ARROW_DOWN); |
290 SendKeyToPopupAndWait(ui::VKEY_DOWN); | 291 SendKeyToPopupAndWait(ui::DomKey::ARROW_DOWN); |
291 SendKeyToPopupAndWait(ui::VKEY_RETURN); | 292 SendKeyToPopupAndWait(ui::DomKey::ENTER); |
292 } | 293 } |
293 | 294 |
294 void ExpectFieldValue(const std::string& field_name, | 295 void ExpectFieldValue(const std::string& field_name, |
295 const std::string& expected_value) { | 296 const std::string& expected_value) { |
296 std::string value; | 297 std::string value; |
297 ASSERT_TRUE(content::ExecuteScriptAndExtractString( | 298 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
298 GetWebContents(), | 299 GetWebContents(), |
299 "window.domAutomationController.send(" | 300 "window.domAutomationController.send(" |
300 " document.getElementById('" + field_name + "').value);", | 301 " document.getElementById('" + field_name + "').value);", |
301 &value)); | 302 &value)); |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 ExpectFieldValue("lastname", "Waddams"); | 420 ExpectFieldValue("lastname", "Waddams"); |
420 ExpectFieldValue("address1", "4120 Freidrich Lane"); | 421 ExpectFieldValue("address1", "4120 Freidrich Lane"); |
421 ExpectFieldValue("address2", "Basement"); | 422 ExpectFieldValue("address2", "Basement"); |
422 ExpectFieldValue("city", "Austin"); | 423 ExpectFieldValue("city", "Austin"); |
423 ExpectFieldValue("state", "TX"); | 424 ExpectFieldValue("state", "TX"); |
424 ExpectFieldValue("zip", "78744"); | 425 ExpectFieldValue("zip", "78744"); |
425 ExpectFieldValue("country", "US"); | 426 ExpectFieldValue("country", "US"); |
426 ExpectFieldValue("phone", "5125551234"); | 427 ExpectFieldValue("phone", "5125551234"); |
427 } | 428 } |
428 | 429 |
429 void SendKeyToPageAndWait(ui::KeyboardCode key) { | 430 void SendKeyToPageAndWait(ui::DomKey key) { |
| 431 ui::KeyboardCode key_code = ui::NonPrintableDomKeyToKeyboardCode(key); |
| 432 ui::DomCode code = ui::UsLayoutKeyboardCodeToDomCode(key_code); |
| 433 SendKeyToPageAndWait(key, code, key_code); |
| 434 } |
| 435 |
| 436 void SendKeyToPageAndWait(ui::DomKey key, |
| 437 ui::DomCode code, |
| 438 ui::KeyboardCode key_code) { |
430 test_delegate_.Reset(); | 439 test_delegate_.Reset(); |
431 content::SimulateKeyPress( | 440 content::SimulateKeyPress(GetWebContents(), key, code, key_code, false, |
432 GetWebContents(), key, false, false, false, false); | 441 false, false, false); |
433 test_delegate_.Wait(); | 442 test_delegate_.Wait(); |
434 } | 443 } |
435 | 444 |
436 void PasteStringAndWait(const std::string& pastedata) { | 445 void PasteStringAndWait(const std::string& pastedata) { |
437 { | 446 { |
438 ui::ScopedClipboardWriter writer(ui::CLIPBOARD_TYPE_COPY_PASTE); | 447 ui::ScopedClipboardWriter writer(ui::CLIPBOARD_TYPE_COPY_PASTE); |
439 writer.WriteText(base::ASCIIToUTF16(pastedata)); | 448 writer.WriteText(base::ASCIIToUTF16(pastedata)); |
440 } | 449 } |
441 test_delegate_.Reset(); | 450 test_delegate_.Reset(); |
442 GetWebContents()->Paste(); | 451 GetWebContents()->Paste(); |
443 test_delegate_.WaitForTextChange(); | 452 test_delegate_.WaitForTextChange(); |
444 } | 453 } |
445 | 454 |
446 bool HandleKeyPressEvent(const content::NativeWebKeyboardEvent& event) { | 455 bool HandleKeyPressEvent(const content::NativeWebKeyboardEvent& event) { |
447 return true; | 456 return true; |
448 } | 457 } |
449 | 458 |
450 void SendKeyToPopupAndWait(ui::KeyboardCode key) { | 459 void SendKeyToPopupAndWait(ui::DomKey key) { |
| 460 ui::KeyboardCode key_code = ui::NonPrintableDomKeyToKeyboardCode(key); |
| 461 ui::DomCode code = ui::UsLayoutKeyboardCodeToDomCode(key_code); |
| 462 SendKeyToPopupAndWait(key, code, key_code); |
| 463 } |
| 464 |
| 465 void SendKeyToPopupAndWait(ui::DomKey key, |
| 466 ui::DomCode code, |
| 467 ui::KeyboardCode key_code) { |
451 // Route popup-targeted key presses via the render view host. | 468 // Route popup-targeted key presses via the render view host. |
452 content::NativeWebKeyboardEvent event; | 469 content::NativeWebKeyboardEvent event; |
453 event.windowsKeyCode = key; | 470 event.windowsKeyCode = key_code; |
| 471 event.domCode = static_cast<int>(code); |
| 472 event.domKey = key; |
454 event.type = blink::WebKeyboardEvent::RawKeyDown; | 473 event.type = blink::WebKeyboardEvent::RawKeyDown; |
455 test_delegate_.Reset(); | 474 test_delegate_.Reset(); |
456 // Install the key press event sink to ensure that any events that are not | 475 // Install the key press event sink to ensure that any events that are not |
457 // handled by the installed callbacks do not end up crashing the test. | 476 // handled by the installed callbacks do not end up crashing the test. |
458 GetRenderViewHost()->GetWidget()->AddKeyPressEventCallback( | 477 GetRenderViewHost()->GetWidget()->AddKeyPressEventCallback( |
459 key_press_event_sink_); | 478 key_press_event_sink_); |
460 GetRenderViewHost()->GetWidget()->ForwardKeyboardEvent(event); | 479 GetRenderViewHost()->GetWidget()->ForwardKeyboardEvent(event); |
461 test_delegate_.Wait(); | 480 test_delegate_.Wait(); |
462 GetRenderViewHost()->GetWidget()->RemoveKeyPressEventCallback( | 481 GetRenderViewHost()->GetWidget()->RemoveKeyPressEventCallback( |
463 key_press_event_sink_); | 482 key_press_event_sink_); |
464 } | 483 } |
465 | 484 |
| 485 void SendKeyToDataListPopup(ui::DomKey key) { |
| 486 ui::KeyboardCode key_code = ui::NonPrintableDomKeyToKeyboardCode(key); |
| 487 ui::DomCode code = ui::UsLayoutKeyboardCodeToDomCode(key_code); |
| 488 SendKeyToDataListPopup(key, code, key_code); |
| 489 } |
| 490 |
466 // Datalist does not support autofill preview. There is no need to start | 491 // Datalist does not support autofill preview. There is no need to start |
467 // message loop for Datalist. | 492 // message loop for Datalist. |
468 void SendKeyToDataListPopup(ui::KeyboardCode key) { | 493 void SendKeyToDataListPopup(ui::DomKey key, |
| 494 ui::DomCode code, |
| 495 ui::KeyboardCode key_code) { |
469 // Route popup-targeted key presses via the render view host. | 496 // Route popup-targeted key presses via the render view host. |
470 content::NativeWebKeyboardEvent event; | 497 content::NativeWebKeyboardEvent event; |
471 event.windowsKeyCode = key; | 498 event.windowsKeyCode = key_code; |
| 499 event.domCode = static_cast<int>(code); |
| 500 event.domKey = key; |
472 event.type = blink::WebKeyboardEvent::RawKeyDown; | 501 event.type = blink::WebKeyboardEvent::RawKeyDown; |
473 // Install the key press event sink to ensure that any events that are not | 502 // Install the key press event sink to ensure that any events that are not |
474 // handled by the installed callbacks do not end up crashing the test. | 503 // handled by the installed callbacks do not end up crashing the test. |
475 GetRenderViewHost()->GetWidget()->AddKeyPressEventCallback( | 504 GetRenderViewHost()->GetWidget()->AddKeyPressEventCallback( |
476 key_press_event_sink_); | 505 key_press_event_sink_); |
477 GetRenderViewHost()->GetWidget()->ForwardKeyboardEvent(event); | 506 GetRenderViewHost()->GetWidget()->ForwardKeyboardEvent(event); |
478 GetRenderViewHost()->GetWidget()->RemoveKeyPressEventCallback( | 507 GetRenderViewHost()->GetWidget()->RemoveKeyPressEventCallback( |
479 key_press_event_sink_); | 508 key_press_event_sink_); |
480 } | 509 } |
481 | 510 |
482 void TryBasicFormFill() { | 511 void TryBasicFormFill() { |
483 FocusFirstNameField(); | 512 FocusFirstNameField(); |
484 | 513 |
485 // Start filling the first name field with "M" and wait for the popup to be | 514 // Start filling the first name field with "M" and wait for the popup to be |
486 // shown. | 515 // shown. |
487 SendKeyToPageAndWait(ui::VKEY_M); | 516 SendKeyToPageAndWait(ui::DomKey::FromCharacter('M'), ui::DomCode::US_M, |
| 517 ui::VKEY_M); |
488 | 518 |
489 // Press the down arrow to select the suggestion and preview the autofilled | 519 // Press the down arrow to select the suggestion and preview the autofilled |
490 // form. | 520 // form. |
491 SendKeyToPopupAndWait(ui::VKEY_DOWN); | 521 SendKeyToPopupAndWait(ui::DomKey::ARROW_DOWN); |
492 | 522 |
493 // The previewed values should not be accessible to JavaScript. | 523 // The previewed values should not be accessible to JavaScript. |
494 ExpectFieldValue("firstname", "M"); | 524 ExpectFieldValue("firstname", "M"); |
495 ExpectFieldValue("lastname", std::string()); | 525 ExpectFieldValue("lastname", std::string()); |
496 ExpectFieldValue("address1", std::string()); | 526 ExpectFieldValue("address1", std::string()); |
497 ExpectFieldValue("address2", std::string()); | 527 ExpectFieldValue("address2", std::string()); |
498 ExpectFieldValue("city", std::string()); | 528 ExpectFieldValue("city", std::string()); |
499 ExpectFieldValue("state", std::string()); | 529 ExpectFieldValue("state", std::string()); |
500 ExpectFieldValue("zip", std::string()); | 530 ExpectFieldValue("zip", std::string()); |
501 ExpectFieldValue("country", std::string()); | 531 ExpectFieldValue("country", std::string()); |
502 ExpectFieldValue("phone", std::string()); | 532 ExpectFieldValue("phone", std::string()); |
503 // TODO(isherman): It would be nice to test that the previewed values are | 533 // TODO(isherman): It would be nice to test that the previewed values are |
504 // displayed: http://crbug.com/57220 | 534 // displayed: http://crbug.com/57220 |
505 | 535 |
506 // Press Enter to accept the autofill suggestions. | 536 // Press Enter to accept the autofill suggestions. |
507 SendKeyToPopupAndWait(ui::VKEY_RETURN); | 537 SendKeyToPopupAndWait(ui::DomKey::ENTER); |
508 | 538 |
509 // The form should be filled. | 539 // The form should be filled. |
510 ExpectFilledTestForm(); | 540 ExpectFilledTestForm(); |
511 } | 541 } |
512 | 542 |
513 AutofillManagerTestDelegateImpl* test_delegate() { return &test_delegate_; } | 543 AutofillManagerTestDelegateImpl* test_delegate() { return &test_delegate_; } |
514 | 544 |
515 private: | 545 private: |
516 AutofillManagerTestDelegateImpl test_delegate_; | 546 AutofillManagerTestDelegateImpl test_delegate_; |
517 | 547 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
558 | 588 |
559 // Load the test page. | 589 // Load the test page. |
560 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), | 590 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), |
561 GURL(std::string(kDataURIPrefix) + kTestFormString))); | 591 GURL(std::string(kDataURIPrefix) + kTestFormString))); |
562 | 592 |
563 // Focus a fillable field. | 593 // Focus a fillable field. |
564 FocusFirstNameField(); | 594 FocusFirstNameField(); |
565 | 595 |
566 // Press the down arrow to initiate Autofill and wait for the popup to be | 596 // Press the down arrow to initiate Autofill and wait for the popup to be |
567 // shown. | 597 // shown. |
568 SendKeyToPageAndWait(ui::VKEY_DOWN); | 598 SendKeyToPageAndWait(ui::DomKey::ARROW_DOWN); |
569 | 599 |
570 // Press the down arrow to select the suggestion and preview the autofilled | 600 // Press the down arrow to select the suggestion and preview the autofilled |
571 // form. | 601 // form. |
572 SendKeyToPopupAndWait(ui::VKEY_DOWN); | 602 SendKeyToPopupAndWait(ui::DomKey::ARROW_DOWN); |
573 | 603 |
574 // Press Enter to accept the autofill suggestions. | 604 // Press Enter to accept the autofill suggestions. |
575 SendKeyToPopupAndWait(ui::VKEY_RETURN); | 605 SendKeyToPopupAndWait(ui::DomKey::ENTER); |
576 | 606 |
577 // The form should be filled. | 607 // The form should be filled. |
578 ExpectFilledTestForm(); | 608 ExpectFilledTestForm(); |
579 } | 609 } |
580 | 610 |
581 // crbug.com/516052 | 611 // crbug.com/516052 |
582 #if defined(OS_CHROMEOS) | 612 #if defined(OS_CHROMEOS) |
583 #define MAYBE_AutofillSelectViaTab DISABLED_AutofillSelectViaTab | 613 #define MAYBE_AutofillSelectViaTab DISABLED_AutofillSelectViaTab |
584 #else | 614 #else |
585 #define MAYBE_AutofillSelectViaTab AutofillSelectViaTab | 615 #define MAYBE_AutofillSelectViaTab AutofillSelectViaTab |
586 #endif | 616 #endif |
587 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, MAYBE_AutofillSelectViaTab) { | 617 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, MAYBE_AutofillSelectViaTab) { |
588 CreateTestProfile(); | 618 CreateTestProfile(); |
589 | 619 |
590 // Load the test page. | 620 // Load the test page. |
591 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), | 621 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), |
592 GURL(std::string(kDataURIPrefix) + kTestFormString))); | 622 GURL(std::string(kDataURIPrefix) + kTestFormString))); |
593 | 623 |
594 // Focus a fillable field. | 624 // Focus a fillable field. |
595 FocusFirstNameField(); | 625 FocusFirstNameField(); |
596 | 626 |
597 // Press the down arrow to initiate Autofill and wait for the popup to be | 627 // Press the down arrow to initiate Autofill and wait for the popup to be |
598 // shown. | 628 // shown. |
599 SendKeyToPageAndWait(ui::VKEY_DOWN); | 629 SendKeyToPageAndWait(ui::DomKey::ARROW_DOWN); |
600 | 630 |
601 // Press the down arrow to select the suggestion and preview the autofilled | 631 // Press the down arrow to select the suggestion and preview the autofilled |
602 // form. | 632 // form. |
603 SendKeyToPopupAndWait(ui::VKEY_DOWN); | 633 SendKeyToPopupAndWait(ui::DomKey::ARROW_DOWN); |
604 | 634 |
605 // Press tab to accept the autofill suggestions. | 635 // Press tab to accept the autofill suggestions. |
606 SendKeyToPopupAndWait(ui::VKEY_TAB); | 636 SendKeyToPopupAndWait(ui::DomKey::TAB); |
607 | 637 |
608 // The form should be filled. | 638 // The form should be filled. |
609 ExpectFilledTestForm(); | 639 ExpectFilledTestForm(); |
610 } | 640 } |
611 | 641 |
612 // crbug.com/516052 | 642 // crbug.com/516052 |
613 #if defined(OS_CHROMEOS) | 643 #if defined(OS_CHROMEOS) |
614 #define MAYBE_AutofillViaClick DISABLED_AutofillViaClick | 644 #define MAYBE_AutofillViaClick DISABLED_AutofillViaClick |
615 #else | 645 #else |
616 #define MAYBE_AutofillViaClick AutofillViaClick | 646 #define MAYBE_AutofillViaClick AutofillViaClick |
617 #endif | 647 #endif |
618 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, MAYBE_AutofillViaClick) { | 648 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, MAYBE_AutofillViaClick) { |
619 CreateTestProfile(); | 649 CreateTestProfile(); |
620 | 650 |
621 // Load the test page. | 651 // Load the test page. |
622 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 652 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
623 browser(), GURL(std::string(kDataURIPrefix) + kTestFormString))); | 653 browser(), GURL(std::string(kDataURIPrefix) + kTestFormString))); |
624 // Focus a fillable field. | 654 // Focus a fillable field. |
625 ASSERT_NO_FATAL_FAILURE(FocusFirstNameField()); | 655 ASSERT_NO_FATAL_FAILURE(FocusFirstNameField()); |
626 | 656 |
627 // Now click it. | 657 // Now click it. |
628 test_delegate()->Reset(); | 658 test_delegate()->Reset(); |
629 ASSERT_NO_FATAL_FAILURE(ClickFirstNameField()); | 659 ASSERT_NO_FATAL_FAILURE(ClickFirstNameField()); |
630 test_delegate()->Wait(); | 660 test_delegate()->Wait(); |
631 | 661 |
632 // Press the down arrow to select the suggestion and preview the autofilled | 662 // Press the down arrow to select the suggestion and preview the autofilled |
633 // form. | 663 // form. |
634 SendKeyToPopupAndWait(ui::VKEY_DOWN); | 664 SendKeyToPopupAndWait(ui::DomKey::ARROW_DOWN); |
635 | 665 |
636 // Press Enter to accept the autofill suggestions. | 666 // Press Enter to accept the autofill suggestions. |
637 SendKeyToPopupAndWait(ui::VKEY_RETURN); | 667 SendKeyToPopupAndWait(ui::DomKey::ENTER); |
638 | 668 |
639 // The form should be filled. | 669 // The form should be filled. |
640 ExpectFilledTestForm(); | 670 ExpectFilledTestForm(); |
641 } | 671 } |
642 | 672 |
643 // Makes sure that the first click does *not* activate the popup. | 673 // Makes sure that the first click does *not* activate the popup. |
644 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, DontAutofillForFirstClick) { | 674 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, DontAutofillForFirstClick) { |
645 CreateTestProfile(); | 675 CreateTestProfile(); |
646 | 676 |
647 // Load the test page. | 677 // Load the test page. |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
696 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, | 726 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, |
697 MAYBE_OnDeleteValueAfterAutofill) { | 727 MAYBE_OnDeleteValueAfterAutofill) { |
698 CreateTestProfile(); | 728 CreateTestProfile(); |
699 | 729 |
700 // Load the test page. | 730 // Load the test page. |
701 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), | 731 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), |
702 GURL(std::string(kDataURIPrefix) + kTestFormString))); | 732 GURL(std::string(kDataURIPrefix) + kTestFormString))); |
703 | 733 |
704 // Invoke and accept the Autofill popup and verify the form was filled. | 734 // Invoke and accept the Autofill popup and verify the form was filled. |
705 FocusFirstNameField(); | 735 FocusFirstNameField(); |
706 SendKeyToPageAndWait(ui::VKEY_M); | 736 SendKeyToPageAndWait(ui::DomKey::FromCharacter('M'), ui::DomCode::US_M, |
707 SendKeyToPopupAndWait(ui::VKEY_DOWN); | 737 ui::VKEY_M); |
708 SendKeyToPopupAndWait(ui::VKEY_RETURN); | 738 SendKeyToPopupAndWait(ui::DomKey::ARROW_DOWN); |
| 739 SendKeyToPopupAndWait(ui::DomKey::ENTER); |
709 ExpectFilledTestForm(); | 740 ExpectFilledTestForm(); |
710 | 741 |
711 // Delete the value of a filled field. | 742 // Delete the value of a filled field. |
712 ASSERT_TRUE(content::ExecuteScript( | 743 ASSERT_TRUE(content::ExecuteScript( |
713 GetRenderViewHost(), | 744 GetRenderViewHost(), |
714 "document.getElementById('firstname').value = '';")); | 745 "document.getElementById('firstname').value = '';")); |
715 ExpectFieldValue("firstname", ""); | 746 ExpectFieldValue("firstname", ""); |
716 | 747 |
717 // Invoke and accept the Autofill popup and verify the field was filled. | 748 // Invoke and accept the Autofill popup and verify the field was filled. |
718 SendKeyToPageAndWait(ui::VKEY_M); | 749 SendKeyToPageAndWait(ui::DomKey::FromCharacter('M'), ui::DomCode::US_M, |
719 SendKeyToPopupAndWait(ui::VKEY_DOWN); | 750 ui::VKEY_M); |
720 SendKeyToPopupAndWait(ui::VKEY_RETURN); | 751 SendKeyToPopupAndWait(ui::DomKey::ARROW_DOWN); |
| 752 SendKeyToPopupAndWait(ui::DomKey::ENTER); |
721 ExpectFieldValue("firstname", "Milton"); | 753 ExpectFieldValue("firstname", "Milton"); |
722 } | 754 } |
723 | 755 |
724 // Test that an input field is not rendered with the yellow autofilled | 756 // Test that an input field is not rendered with the yellow autofilled |
725 // background color when choosing an option from the datalist suggestion list. | 757 // background color when choosing an option from the datalist suggestion list. |
726 #if defined(OS_MACOSX) || defined(OS_CHROMEOS) | 758 #if defined(OS_MACOSX) || defined(OS_CHROMEOS) |
727 // Flakily triggers and assert on Mac; flakily gets empty string instead | 759 // Flakily triggers and assert on Mac; flakily gets empty string instead |
728 // of "Adam" on ChromeOS. | 760 // of "Adam" on ChromeOS. |
729 // http://crbug.com/419868, http://crbug.com/595385. | 761 // http://crbug.com/419868, http://crbug.com/595385. |
730 #define MAYBE_OnSelectOptionFromDatalist DISABLED_OnSelectOptionFromDatalist | 762 #define MAYBE_OnSelectOptionFromDatalist DISABLED_OnSelectOptionFromDatalist |
(...skipping 12 matching lines...) Expand all Loading... |
743 " <datalist id=\"dl\">" | 775 " <datalist id=\"dl\">" |
744 " <option value=\"Adam\"></option>" | 776 " <option value=\"Adam\"></option>" |
745 " <option value=\"Bob\"></option>" | 777 " <option value=\"Bob\"></option>" |
746 " <option value=\"Carl\"></option>" | 778 " <option value=\"Carl\"></option>" |
747 " </datalist>" | 779 " </datalist>" |
748 "</form>"))); | 780 "</form>"))); |
749 std::string orginalcolor; | 781 std::string orginalcolor; |
750 GetFieldBackgroundColor("firstname", &orginalcolor); | 782 GetFieldBackgroundColor("firstname", &orginalcolor); |
751 | 783 |
752 FocusFirstNameField(); | 784 FocusFirstNameField(); |
753 SendKeyToPageAndWait(ui::VKEY_DOWN); | 785 SendKeyToPageAndWait(ui::DomKey::ARROW_DOWN); |
754 SendKeyToDataListPopup(ui::VKEY_DOWN); | 786 SendKeyToDataListPopup(ui::DomKey::ARROW_DOWN); |
755 SendKeyToDataListPopup(ui::VKEY_RETURN); | 787 SendKeyToDataListPopup(ui::DomKey::ENTER); |
756 ExpectFieldValue("firstname", "Adam"); | 788 ExpectFieldValue("firstname", "Adam"); |
757 std::string color; | 789 std::string color; |
758 GetFieldBackgroundColor("firstname", &color); | 790 GetFieldBackgroundColor("firstname", &color); |
759 EXPECT_EQ(color, orginalcolor); | 791 EXPECT_EQ(color, orginalcolor); |
760 } | 792 } |
761 | 793 |
762 // Test that a JavaScript oninput event is fired after auto-filling a form. | 794 // Test that a JavaScript oninput event is fired after auto-filling a form. |
763 // Flakily times out on ChromeOS http://crbug.com/585885 | 795 // Flakily times out on ChromeOS http://crbug.com/585885 |
764 #if defined(OS_CHROMEOS) | 796 #if defined(OS_CHROMEOS) |
765 #define MAYBE_OnInputAfterAutofill DISABLED_OnInputAfterAutofill | 797 #define MAYBE_OnInputAfterAutofill DISABLED_OnInputAfterAutofill |
(...skipping 26 matching lines...) Expand all Loading... |
792 | 824 |
793 // Load the test page. | 825 // Load the test page. |
794 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), | 826 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), |
795 GURL(std::string(kDataURIPrefix) + kTestFormString + kOnInputScript))); | 827 GURL(std::string(kDataURIPrefix) + kTestFormString + kOnInputScript))); |
796 | 828 |
797 // Invoke Autofill. | 829 // Invoke Autofill. |
798 FocusFirstNameField(); | 830 FocusFirstNameField(); |
799 | 831 |
800 // Start filling the first name field with "M" and wait for the popup to be | 832 // Start filling the first name field with "M" and wait for the popup to be |
801 // shown. | 833 // shown. |
802 SendKeyToPageAndWait(ui::VKEY_M); | 834 SendKeyToPageAndWait(ui::DomKey::FromCharacter('M'), ui::DomCode::US_M, |
| 835 ui::VKEY_M); |
803 | 836 |
804 // Press the down arrow to select the suggestion and preview the autofilled | 837 // Press the down arrow to select the suggestion and preview the autofilled |
805 // form. | 838 // form. |
806 SendKeyToPopupAndWait(ui::VKEY_DOWN); | 839 SendKeyToPopupAndWait(ui::DomKey::ARROW_DOWN); |
807 | 840 |
808 // Press Enter to accept the autofill suggestions. | 841 // Press Enter to accept the autofill suggestions. |
809 SendKeyToPopupAndWait(ui::VKEY_RETURN); | 842 SendKeyToPopupAndWait(ui::DomKey::ENTER); |
810 | 843 |
811 // The form should be filled. | 844 // The form should be filled. |
812 ExpectFilledTestForm(); | 845 ExpectFilledTestForm(); |
813 | 846 |
814 bool focused_fired = false; | 847 bool focused_fired = false; |
815 bool unfocused_fired = false; | 848 bool unfocused_fired = false; |
816 bool changed_select_fired = false; | 849 bool changed_select_fired = false; |
817 bool unchanged_select_fired = false; | 850 bool unchanged_select_fired = false; |
818 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( | 851 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( |
819 GetRenderViewHost(), | 852 GetRenderViewHost(), |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
870 | 903 |
871 // Load the test page. | 904 // Load the test page. |
872 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), | 905 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), |
873 GURL(std::string(kDataURIPrefix) + kTestFormString + kOnChangeScript))); | 906 GURL(std::string(kDataURIPrefix) + kTestFormString + kOnChangeScript))); |
874 | 907 |
875 // Invoke Autofill. | 908 // Invoke Autofill. |
876 FocusFirstNameField(); | 909 FocusFirstNameField(); |
877 | 910 |
878 // Start filling the first name field with "M" and wait for the popup to be | 911 // Start filling the first name field with "M" and wait for the popup to be |
879 // shown. | 912 // shown. |
880 SendKeyToPageAndWait(ui::VKEY_M); | 913 SendKeyToPageAndWait(ui::DomKey::FromCharacter('M'), ui::DomCode::US_M, |
| 914 ui::VKEY_M); |
881 | 915 |
882 // Press the down arrow to select the suggestion and preview the autofilled | 916 // Press the down arrow to select the suggestion and preview the autofilled |
883 // form. | 917 // form. |
884 SendKeyToPopupAndWait(ui::VKEY_DOWN); | 918 SendKeyToPopupAndWait(ui::DomKey::ARROW_DOWN); |
885 | 919 |
886 // Press Enter to accept the autofill suggestions. | 920 // Press Enter to accept the autofill suggestions. |
887 SendKeyToPopupAndWait(ui::VKEY_RETURN); | 921 SendKeyToPopupAndWait(ui::DomKey::ENTER); |
888 | 922 |
889 // The form should be filled. | 923 // The form should be filled. |
890 ExpectFilledTestForm(); | 924 ExpectFilledTestForm(); |
891 | 925 |
892 bool focused_fired = false; | 926 bool focused_fired = false; |
893 bool unfocused_fired = false; | 927 bool unfocused_fired = false; |
894 bool changed_select_fired = false; | 928 bool changed_select_fired = false; |
895 bool unchanged_select_fired = false; | 929 bool unchanged_select_fired = false; |
896 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( | 930 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( |
897 GetRenderViewHost(), | 931 GetRenderViewHost(), |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
942 "document.getElementById('country').onchange = recordSelectElementEvent;" | 976 "document.getElementById('country').onchange = recordSelectElementEvent;" |
943 "</script>"; | 977 "</script>"; |
944 | 978 |
945 // Load the test page. | 979 // Load the test page. |
946 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), | 980 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), |
947 GURL(std::string(kDataURIPrefix) + kTestFormString + | 981 GURL(std::string(kDataURIPrefix) + kTestFormString + |
948 kInputFiresBeforeChangeScript))); | 982 kInputFiresBeforeChangeScript))); |
949 | 983 |
950 // Invoke and accept the Autofill popup and verify the form was filled. | 984 // Invoke and accept the Autofill popup and verify the form was filled. |
951 FocusFirstNameField(); | 985 FocusFirstNameField(); |
952 SendKeyToPageAndWait(ui::VKEY_M); | 986 SendKeyToPageAndWait(ui::DomKey::FromCharacter('M'), ui::DomCode::US_M, |
953 SendKeyToPopupAndWait(ui::VKEY_DOWN); | 987 ui::VKEY_M); |
954 SendKeyToPopupAndWait(ui::VKEY_RETURN); | 988 SendKeyToPopupAndWait(ui::DomKey::ARROW_DOWN); |
| 989 SendKeyToPopupAndWait(ui::DomKey::ENTER); |
955 ExpectFilledTestForm(); | 990 ExpectFilledTestForm(); |
956 | 991 |
957 int num_input_element_events = -1; | 992 int num_input_element_events = -1; |
958 ASSERT_TRUE(content::ExecuteScriptAndExtractInt( | 993 ASSERT_TRUE(content::ExecuteScriptAndExtractInt( |
959 GetRenderViewHost(), | 994 GetRenderViewHost(), |
960 "domAutomationController.send(inputElementEvents.length);", | 995 "domAutomationController.send(inputElementEvents.length);", |
961 &num_input_element_events)); | 996 &num_input_element_events)); |
962 EXPECT_EQ(2, num_input_element_events); | 997 EXPECT_EQ(2, num_input_element_events); |
963 | 998 |
964 std::vector<std::string> input_element_events; | 999 std::vector<std::string> input_element_events; |
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1653 MAYBE_DisableAutocompleteWhileFilling) { | 1688 MAYBE_DisableAutocompleteWhileFilling) { |
1654 CreateTestProfile(); | 1689 CreateTestProfile(); |
1655 | 1690 |
1656 // Load the test page. | 1691 // Load the test page. |
1657 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), | 1692 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), |
1658 GURL(std::string(kDataURIPrefix) + kTestFormString))); | 1693 GURL(std::string(kDataURIPrefix) + kTestFormString))); |
1659 | 1694 |
1660 // Invoke Autofill: Start filling the first name field with "M" and wait for | 1695 // Invoke Autofill: Start filling the first name field with "M" and wait for |
1661 // the popup to be shown. | 1696 // the popup to be shown. |
1662 FocusFirstNameField(); | 1697 FocusFirstNameField(); |
1663 SendKeyToPageAndWait(ui::VKEY_M); | 1698 SendKeyToPageAndWait(ui::DomKey::FromCharacter('M'), ui::DomCode::US_M, |
| 1699 ui::VKEY_M); |
1664 | 1700 |
1665 // Now that the popup with suggestions is showing, disable autocomplete for | 1701 // Now that the popup with suggestions is showing, disable autocomplete for |
1666 // the active field. | 1702 // the active field. |
1667 ASSERT_TRUE(content::ExecuteScript( | 1703 ASSERT_TRUE(content::ExecuteScript( |
1668 GetRenderViewHost(), | 1704 GetRenderViewHost(), |
1669 "document.querySelector('input').autocomplete = 'off';")); | 1705 "document.querySelector('input').autocomplete = 'off';")); |
1670 | 1706 |
1671 // Press the down arrow to select the suggestion and attempt to preview the | 1707 // Press the down arrow to select the suggestion and attempt to preview the |
1672 // autofilled form. | 1708 // autofilled form. |
1673 SendKeyToPopupAndWait(ui::VKEY_DOWN); | 1709 SendKeyToPopupAndWait(ui::DomKey::ARROW_DOWN); |
1674 } | 1710 } |
1675 | 1711 |
1676 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, | 1712 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, |
1677 PastedPasswordIsSaved) { | 1713 PastedPasswordIsSaved) { |
1678 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), | 1714 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), |
1679 GURL(std::string(kDataURIPrefix) + kTestPasswordFormString))); | 1715 GURL(std::string(kDataURIPrefix) + kTestPasswordFormString))); |
1680 ASSERT_TRUE(content::ExecuteScript( | 1716 ASSERT_TRUE(content::ExecuteScript( |
1681 GetRenderViewHost(), | 1717 GetRenderViewHost(), |
1682 "document.getElementById('user').value = 'user';")); | 1718 "document.getElementById('user').value = 'user';")); |
1683 FocusFieldByName("password"); | 1719 FocusFieldByName("password"); |
1684 PasteStringAndWait("foobar"); | 1720 PasteStringAndWait("foobar"); |
1685 } | 1721 } |
1686 | 1722 |
1687 } // namespace autofill | 1723 } // namespace autofill |
OLD | NEW |