| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/autofill/content/renderer/password_autofill_agent.h" | 5 #include "components/autofill/content/renderer/password_autofill_agent.h" |
| 6 | 6 |
| 7 #include "base/macros.h" | 7 #include "base/macros.h" |
| 8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
| 9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
| 10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 " <input type='password' id='password'/>" | 89 " <input type='password' id='password'/>" |
| 90 " </div>" | 90 " </div>" |
| 91 " </form>" | 91 " </form>" |
| 92 "</body>"; | 92 "</body>"; |
| 93 | 93 |
| 94 const char kEmptyFormHTML[] = | 94 const char kEmptyFormHTML[] = |
| 95 "<head> <style> form {display: inline;} </style> </head>" | 95 "<head> <style> form {display: inline;} </style> </head>" |
| 96 "<body> <form> </form> </body>"; | 96 "<body> <form> </form> </body>"; |
| 97 | 97 |
| 98 const char kNonVisibleFormHTML[] = | 98 const char kNonVisibleFormHTML[] = |
| 99 "<head> <style> form {visibility: hidden;} </style> </head>" |
| 100 "<body>" |
| 101 " <form>" |
| 102 " <div>" |
| 103 " <input type='password' id='password'/>" |
| 104 " </div>" |
| 105 " </form>" |
| 106 "</body>"; |
| 107 |
| 108 const char kNonDisplayedFormHTML[] = |
| 99 "<head> <style> form {display: none;} </style> </head>" | 109 "<head> <style> form {display: none;} </style> </head>" |
| 100 "<body>" | 110 "<body>" |
| 101 " <form>" | 111 " <form>" |
| 102 " <div>" | 112 " <div>" |
| 103 " <input type='password' id='password'/>" | 113 " <input type='password' id='password'/>" |
| 104 " </div>" | 114 " </div>" |
| 105 " </form>" | 115 " </form>" |
| 106 "</body>"; | 116 "</body>"; |
| 107 | 117 |
| 108 const char kSignupFormHTML[] = | 118 const char kSignupFormHTML[] = |
| (...skipping 701 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 810 CheckTextFieldsState(std::string(), false, std::string(), false); | 820 CheckTextFieldsState(std::string(), false, std::string(), false); |
| 811 | 821 |
| 812 SimulateUsernameChange(kAliceUsername); | 822 SimulateUsernameChange(kAliceUsername); |
| 813 // Change focus in between to make sure blur events don't trigger filling. | 823 // Change focus in between to make sure blur events don't trigger filling. |
| 814 SetFocused(password_element_); | 824 SetFocused(password_element_); |
| 815 SetFocused(username_element_); | 825 SetFocused(username_element_); |
| 816 // No autocomplete should happen when text is entered in the username. | 826 // No autocomplete should happen when text is entered in the username. |
| 817 CheckTextFieldsState(kAliceUsername, false, std::string(), false); | 827 CheckTextFieldsState(kAliceUsername, false, std::string(), false); |
| 818 } | 828 } |
| 819 | 829 |
| 820 TEST_F(PasswordAutofillAgentTest, IsWebNodeVisibleTest) { | 830 TEST_F(PasswordAutofillAgentTest, IsWebElementVisibleTest) { |
| 821 blink::WebVector<WebFormElement> forms1, forms2, forms3; | 831 blink::WebVector<WebFormElement> forms1, forms2, forms3; |
| 832 blink::WebVector<blink::WebFormControlElement> web_control_elements; |
| 822 blink::WebFrame* frame; | 833 blink::WebFrame* frame; |
| 823 | 834 |
| 824 LoadHTML(kVisibleFormWithNoUsernameHTML); | 835 LoadHTML(kVisibleFormWithNoUsernameHTML); |
| 825 frame = GetMainFrame(); | 836 frame = GetMainFrame(); |
| 826 frame->document().forms(forms1); | 837 frame->document().forms(forms1); |
| 827 ASSERT_EQ(1u, forms1.size()); | 838 ASSERT_EQ(1u, forms1.size()); |
| 828 EXPECT_TRUE(form_util::IsWebNodeVisible(forms1[0])); | 839 forms1[0].getFormControlElements(web_control_elements); |
| 840 ASSERT_EQ(1u, web_control_elements.size()); |
| 841 EXPECT_TRUE(form_util::IsWebElementVisible(web_control_elements[0])); |
| 829 | 842 |
| 830 LoadHTML(kEmptyFormHTML); | 843 LoadHTML(kNonVisibleFormHTML); |
| 831 frame = GetMainFrame(); | 844 frame = GetMainFrame(); |
| 832 frame->document().forms(forms2); | 845 frame->document().forms(forms2); |
| 833 ASSERT_EQ(1u, forms2.size()); | 846 ASSERT_EQ(1u, forms2.size()); |
| 834 EXPECT_FALSE(form_util::IsWebNodeVisible(forms2[0])); | 847 forms2[0].getFormControlElements(web_control_elements); |
| 848 ASSERT_EQ(1u, web_control_elements.size()); |
| 849 EXPECT_FALSE(form_util::IsWebElementVisible(web_control_elements[0])); |
| 835 | 850 |
| 836 LoadHTML(kNonVisibleFormHTML); | 851 LoadHTML(kNonDisplayedFormHTML); |
| 837 frame = GetMainFrame(); | 852 frame = GetMainFrame(); |
| 838 frame->document().forms(forms3); | 853 frame->document().forms(forms3); |
| 839 ASSERT_EQ(1u, forms3.size()); | 854 ASSERT_EQ(1u, forms3.size()); |
| 840 EXPECT_FALSE(form_util::IsWebNodeVisible(forms3[0])); | 855 forms3[0].getFormControlElements(web_control_elements); |
| 856 ASSERT_EQ(1u, web_control_elements.size()); |
| 857 EXPECT_FALSE(form_util::IsWebElementVisible(web_control_elements[0])); |
| 841 } | 858 } |
| 842 | 859 |
| 843 TEST_F(PasswordAutofillAgentTest, SendPasswordFormsTest) { | 860 TEST_F(PasswordAutofillAgentTest, SendPasswordFormsTest) { |
| 844 fake_driver_.reset_password_forms_rendered(); | 861 fake_driver_.reset_password_forms_rendered(); |
| 845 LoadHTML(kVisibleFormWithNoUsernameHTML); | 862 LoadHTML(kVisibleFormWithNoUsernameHTML); |
| 846 base::RunLoop().RunUntilIdle(); | 863 base::RunLoop().RunUntilIdle(); |
| 847 EXPECT_TRUE(fake_driver_.called_password_forms_rendered()); | 864 EXPECT_TRUE(fake_driver_.called_password_forms_rendered()); |
| 848 ASSERT_TRUE(static_cast<bool>(fake_driver_.password_forms_rendered())); | 865 ASSERT_TRUE(static_cast<bool>(fake_driver_.password_forms_rendered())); |
| 849 EXPECT_FALSE(fake_driver_.password_forms_rendered()->empty()); | 866 EXPECT_FALSE(fake_driver_.password_forms_rendered()->empty()); |
| 850 | 867 |
| 851 fake_driver_.reset_password_forms_rendered(); | 868 fake_driver_.reset_password_forms_rendered(); |
| 852 LoadHTML(kEmptyFormHTML); | 869 LoadHTML(kEmptyFormHTML); |
| 853 base::RunLoop().RunUntilIdle(); | 870 base::RunLoop().RunUntilIdle(); |
| 854 EXPECT_TRUE(fake_driver_.called_password_forms_rendered()); | 871 EXPECT_TRUE(fake_driver_.called_password_forms_rendered()); |
| 855 ASSERT_TRUE(static_cast<bool>(fake_driver_.password_forms_rendered())); | 872 ASSERT_TRUE(static_cast<bool>(fake_driver_.password_forms_rendered())); |
| 856 EXPECT_TRUE(fake_driver_.password_forms_rendered()->empty()); | 873 EXPECT_TRUE(fake_driver_.password_forms_rendered()->empty()); |
| 857 | 874 |
| 858 fake_driver_.reset_password_forms_rendered(); | 875 fake_driver_.reset_password_forms_rendered(); |
| 876 LoadHTML(kNonDisplayedFormHTML); |
| 877 base::RunLoop().RunUntilIdle(); |
| 878 EXPECT_TRUE(fake_driver_.called_password_forms_rendered()); |
| 879 ASSERT_TRUE(static_cast<bool>(fake_driver_.password_forms_rendered())); |
| 880 EXPECT_TRUE(fake_driver_.password_forms_rendered()->empty()); |
| 881 |
| 882 fake_driver_.reset_password_forms_rendered(); |
| 859 LoadHTML(kNonVisibleFormHTML); | 883 LoadHTML(kNonVisibleFormHTML); |
| 860 base::RunLoop().RunUntilIdle(); | 884 base::RunLoop().RunUntilIdle(); |
| 861 EXPECT_TRUE(fake_driver_.called_password_forms_rendered()); | 885 EXPECT_TRUE(fake_driver_.called_password_forms_rendered()); |
| 862 ASSERT_TRUE(static_cast<bool>(fake_driver_.password_forms_rendered())); | 886 ASSERT_TRUE(static_cast<bool>(fake_driver_.password_forms_rendered())); |
| 863 EXPECT_TRUE(fake_driver_.password_forms_rendered()->empty()); | 887 EXPECT_TRUE(fake_driver_.password_forms_rendered()->empty()); |
| 864 } | 888 } |
| 865 | 889 |
| 866 TEST_F(PasswordAutofillAgentTest, SendPasswordFormsTest_Redirection) { | 890 TEST_F(PasswordAutofillAgentTest, SendPasswordFormsTest_Redirection) { |
| 867 fake_driver_.reset_password_forms_rendered(); | 891 fake_driver_.reset_password_forms_rendered(); |
| 868 LoadHTML(kEmptyWebpage); | 892 LoadHTML(kEmptyWebpage); |
| (...skipping 1728 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2597 | 2621 |
| 2598 // Chect that the form was submitted with in-page navigation. | 2622 // Chect that the form was submitted with in-page navigation. |
| 2599 EXPECT_TRUE(fake_driver_.called_inpage_navigation()); | 2623 EXPECT_TRUE(fake_driver_.called_inpage_navigation()); |
| 2600 EXPECT_EQ(base::string16(), | 2624 EXPECT_EQ(base::string16(), |
| 2601 fake_driver_.password_form_inpage_navigation()->username_value); | 2625 fake_driver_.password_form_inpage_navigation()->username_value); |
| 2602 EXPECT_EQ(ASCIIToUTF16("random"), | 2626 EXPECT_EQ(ASCIIToUTF16("random"), |
| 2603 fake_driver_.password_form_inpage_navigation()->password_value); | 2627 fake_driver_.password_form_inpage_navigation()->password_value); |
| 2604 } | 2628 } |
| 2605 | 2629 |
| 2606 } // namespace autofill | 2630 } // namespace autofill |
| OLD | NEW |