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 <tuple> | 5 #include <tuple> |
6 | 6 |
7 #include "base/feature_list.h" | 7 #include "base/feature_list.h" |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 980 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
991 // to prevent the form from being immediately filled. | 991 // to prevent the form from being immediately filled. |
992 fill_data_.wait_for_username = true; | 992 fill_data_.wait_for_username = true; |
993 SimulateOnFillPasswordForm(fill_data_); | 993 SimulateOnFillPasswordForm(fill_data_); |
994 | 994 |
995 // Neither field should have been autocompleted. | 995 // Neither field should have been autocompleted. |
996 CheckTextFieldsDOMState(std::string(), false, std::string(), false); | 996 CheckTextFieldsDOMState(std::string(), false, std::string(), false); |
997 | 997 |
998 // If the password field is not autocompletable, it should not be affected. | 998 // If the password field is not autocompletable, it should not be affected. |
999 SetElementReadOnly(password_element_, true); | 999 SetElementReadOnly(password_element_, true); |
1000 EXPECT_FALSE(password_autofill_agent_->FillSuggestion( | 1000 EXPECT_FALSE(password_autofill_agent_->FillSuggestion( |
1001 username_element_, kAliceUsername, kAlicePassword)); | 1001 username_element_, ASCIIToUTF16(kAliceUsername), |
| 1002 ASCIIToUTF16(kAlicePassword))); |
1002 CheckTextFieldsDOMState(std::string(), false, std::string(), false); | 1003 CheckTextFieldsDOMState(std::string(), false, std::string(), false); |
1003 SetElementReadOnly(password_element_, false); | 1004 SetElementReadOnly(password_element_, false); |
1004 | 1005 |
1005 // After filling with the suggestion, both fields should be autocompleted. | 1006 // After filling with the suggestion, both fields should be autocompleted. |
1006 EXPECT_TRUE(password_autofill_agent_->FillSuggestion( | 1007 EXPECT_TRUE(password_autofill_agent_->FillSuggestion( |
1007 username_element_, kAliceUsername, kAlicePassword)); | 1008 username_element_, ASCIIToUTF16(kAliceUsername), |
| 1009 ASCIIToUTF16(kAlicePassword))); |
1008 CheckTextFieldsDOMState(kAliceUsername, true, kAlicePassword, true); | 1010 CheckTextFieldsDOMState(kAliceUsername, true, kAlicePassword, true); |
1009 int username_length = strlen(kAliceUsername); | 1011 int username_length = strlen(kAliceUsername); |
1010 CheckUsernameSelection(username_length, username_length); | 1012 CheckUsernameSelection(username_length, username_length); |
1011 | 1013 |
1012 // Try Filling with a suggestion with password different from the one that was | 1014 // Try Filling with a suggestion with password different from the one that was |
1013 // initially sent to the renderer. | 1015 // initially sent to the renderer. |
1014 EXPECT_TRUE(password_autofill_agent_->FillSuggestion( | 1016 EXPECT_TRUE(password_autofill_agent_->FillSuggestion( |
1015 username_element_, kBobUsername, kCarolPassword)); | 1017 username_element_, ASCIIToUTF16(kBobUsername), |
| 1018 ASCIIToUTF16(kCarolPassword))); |
1016 CheckTextFieldsDOMState(kBobUsername, true, kCarolPassword, true); | 1019 CheckTextFieldsDOMState(kBobUsername, true, kCarolPassword, true); |
1017 username_length = strlen(kBobUsername); | 1020 username_length = strlen(kBobUsername); |
1018 CheckUsernameSelection(username_length, username_length); | 1021 CheckUsernameSelection(username_length, username_length); |
1019 } | 1022 } |
1020 | 1023 |
1021 // Tests that |PreviewSuggestion| properly previews the username and password. | 1024 // Tests that |PreviewSuggestion| properly previews the username and password. |
1022 TEST_F(PasswordAutofillAgentTest, PreviewSuggestion) { | 1025 TEST_F(PasswordAutofillAgentTest, PreviewSuggestion) { |
1023 // Simulate the browser sending the login info, but set |wait_for_username| | 1026 // Simulate the browser sending the login info, but set |wait_for_username| |
1024 // to prevent the form from being immediately filled. | 1027 // to prevent the form from being immediately filled. |
1025 fill_data_.wait_for_username = true; | 1028 fill_data_.wait_for_username = true; |
(...skipping 952 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1978 // Simulate the browser sending the login info, but set |wait_for_username| | 1981 // Simulate the browser sending the login info, but set |wait_for_username| |
1979 // to prevent the form from being immediately filled. | 1982 // to prevent the form from being immediately filled. |
1980 fill_data_.wait_for_username = true; | 1983 fill_data_.wait_for_username = true; |
1981 fill_data_.is_possible_change_password_form = true; | 1984 fill_data_.is_possible_change_password_form = true; |
1982 SimulateOnFillPasswordForm(fill_data_); | 1985 SimulateOnFillPasswordForm(fill_data_); |
1983 | 1986 |
1984 // Neither field should have been autocompleted. | 1987 // Neither field should have been autocompleted. |
1985 CheckTextFieldsDOMState(std::string(), false, std::string(), false); | 1988 CheckTextFieldsDOMState(std::string(), false, std::string(), false); |
1986 | 1989 |
1987 EXPECT_TRUE(password_autofill_agent_->FillSuggestion( | 1990 EXPECT_TRUE(password_autofill_agent_->FillSuggestion( |
1988 username_element_, kAliceUsername, kAlicePassword)); | 1991 username_element_, ASCIIToUTF16(kAliceUsername), |
| 1992 ASCIIToUTF16(kAlicePassword))); |
1989 CheckTextFieldsDOMState(kAliceUsername, true, kAlicePassword, true); | 1993 CheckTextFieldsDOMState(kAliceUsername, true, kAlicePassword, true); |
1990 } | 1994 } |
1991 | 1995 |
1992 // Tests that a password change form is properly filled with the password when | 1996 // Tests that a password change form is properly filled with the password when |
1993 // the user click on the password field. | 1997 // the user click on the password field. |
1994 TEST_F(PasswordAutofillAgentTest, | 1998 TEST_F(PasswordAutofillAgentTest, |
1995 FillSuggestionPasswordChangeFormsOnlyPassword) { | 1999 FillSuggestionPasswordChangeFormsOnlyPassword) { |
1996 LoadHTML(kPasswordChangeFormHTML); | 2000 LoadHTML(kPasswordChangeFormHTML); |
1997 UpdateOriginForHTML(kPasswordChangeFormHTML); | 2001 UpdateOriginForHTML(kPasswordChangeFormHTML); |
1998 UpdateUsernameAndPasswordElements(); | 2002 UpdateUsernameAndPasswordElements(); |
1999 // Simulate the browser sending the login info, but set |wait_for_username| | 2003 // Simulate the browser sending the login info, but set |wait_for_username| |
2000 // to prevent the form from being immediately filled. | 2004 // to prevent the form from being immediately filled. |
2001 fill_data_.wait_for_username = true; | 2005 fill_data_.wait_for_username = true; |
2002 fill_data_.is_possible_change_password_form = true; | 2006 fill_data_.is_possible_change_password_form = true; |
2003 SimulateOnFillPasswordForm(fill_data_); | 2007 SimulateOnFillPasswordForm(fill_data_); |
2004 | 2008 |
2005 // Neither field should have been autocompleted. | 2009 // Neither field should have been autocompleted. |
2006 CheckTextFieldsDOMState(std::string(), false, std::string(), false); | 2010 CheckTextFieldsDOMState(std::string(), false, std::string(), false); |
2007 | 2011 |
2008 EXPECT_TRUE(password_autofill_agent_->FillSuggestion( | 2012 EXPECT_TRUE(password_autofill_agent_->FillSuggestion( |
2009 password_element_, kAliceUsername, kAlicePassword)); | 2013 password_element_, ASCIIToUTF16(kAliceUsername), |
| 2014 ASCIIToUTF16(kAlicePassword))); |
2010 CheckTextFieldsDOMState("", false, kAlicePassword, true); | 2015 CheckTextFieldsDOMState("", false, kAlicePassword, true); |
2011 } | 2016 } |
2012 | 2017 |
2013 // Tests that one user click on a username field is sufficient to bring up a | 2018 // Tests that one user click on a username field is sufficient to bring up a |
2014 // credential suggestion popup on a change password form. | 2019 // credential suggestion popup on a change password form. |
2015 TEST_F(PasswordAutofillAgentTest, | 2020 TEST_F(PasswordAutofillAgentTest, |
2016 SuggestionsOnUsernameFieldOfChangePasswordForm) { | 2021 SuggestionsOnUsernameFieldOfChangePasswordForm) { |
2017 LoadHTML(kPasswordChangeFormHTML); | 2022 LoadHTML(kPasswordChangeFormHTML); |
2018 UpdateOriginForHTML(kPasswordChangeFormHTML); | 2023 UpdateOriginForHTML(kPasswordChangeFormHTML); |
2019 UpdateUsernameAndPasswordElements(); | 2024 UpdateUsernameAndPasswordElements(); |
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2412 CheckSuggestions("", false); | 2417 CheckSuggestions("", false); |
2413 | 2418 |
2414 SimulateElementClick("newpassword"); | 2419 SimulateElementClick("newpassword"); |
2415 CheckSuggestions("", false); | 2420 CheckSuggestions("", false); |
2416 | 2421 |
2417 SimulateElementClick("confirmpassword"); | 2422 SimulateElementClick("confirmpassword"); |
2418 CheckSuggestions("", false); | 2423 CheckSuggestions("", false); |
2419 | 2424 |
2420 // The user chooses to autofill the current password field. | 2425 // The user chooses to autofill the current password field. |
2421 EXPECT_TRUE(password_autofill_agent_->FillSuggestion( | 2426 EXPECT_TRUE(password_autofill_agent_->FillSuggestion( |
2422 password_element_, kAliceUsername, kAlicePassword)); | 2427 password_element_, ASCIIToUTF16(kAliceUsername), |
| 2428 ASCIIToUTF16(kAlicePassword))); |
2423 | 2429 |
2424 // Simulate a user clicking on not autofilled password fields. This should | 2430 // Simulate a user clicking on not autofilled password fields. This should |
2425 // produce | 2431 // produce |
2426 // no suggestion dropdowns. | 2432 // no suggestion dropdowns. |
2427 render_thread_->sink().ClearMessages(); | 2433 render_thread_->sink().ClearMessages(); |
2428 SimulateElementClick("newpassword"); | 2434 SimulateElementClick("newpassword"); |
2429 SimulateElementClick("confirmpassword"); | 2435 SimulateElementClick("confirmpassword"); |
2430 EXPECT_FALSE(render_thread_->sink().GetFirstMessageMatching( | 2436 EXPECT_FALSE(render_thread_->sink().GetFirstMessageMatching( |
2431 AutofillHostMsg_ShowPasswordSuggestions::ID)); | 2437 AutofillHostMsg_ShowPasswordSuggestions::ID)); |
2432 | 2438 |
2433 // But when the user clicks on the autofilled password field again it should | 2439 // But when the user clicks on the autofilled password field again it should |
2434 // still produce a suggestion dropdown. | 2440 // still produce a suggestion dropdown. |
2435 SimulateElementClick("password"); | 2441 SimulateElementClick("password"); |
2436 CheckSuggestions("", false); | 2442 CheckSuggestions("", false); |
2437 } | 2443 } |
2438 | 2444 |
2439 } // namespace autofill | 2445 } // namespace autofill |
OLD | NEW |