| 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 1703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2572 SimulateElementClick(kUsernameName); | 2596 SimulateElementClick(kUsernameName); |
| 2573 | 2597 |
| 2574 // Simulate a user clicking on the password element. This should produce a | 2598 // Simulate a user clicking on the password element. This should produce a |
| 2575 // dropdown with suggestion of all available usernames. | 2599 // dropdown with suggestion of all available usernames. |
| 2576 static_cast<PageClickListener*>(autofill_agent_) | 2600 static_cast<PageClickListener*>(autofill_agent_) |
| 2577 ->FormControlElementClicked(password_element_, false); | 2601 ->FormControlElementClicked(password_element_, false); |
| 2578 CheckSuggestions("", false); | 2602 CheckSuggestions("", false); |
| 2579 } | 2603 } |
| 2580 | 2604 |
| 2581 } // namespace autofill | 2605 } // namespace autofill |
| OLD | NEW |