| 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 "base/strings/string_util.h" | 5 #include "base/strings/string_util.h" |
| 6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" |
| 7 #include "chrome/test/base/chrome_render_view_test.h" | 7 #include "chrome/test/base/chrome_render_view_test.h" |
| 8 #include "components/autofill/content/common/autofill_messages.h" | 8 #include "components/autofill/content/common/autofill_messages.h" |
| 9 #include "components/autofill/content/renderer/autofill_agent.h" | 9 #include "components/autofill/content/renderer/autofill_agent.h" |
| 10 #include "components/autofill/content/renderer/form_autofill_util.h" | 10 #include "components/autofill/content/renderer/form_autofill_util.h" |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 password1_ = ASCIIToUTF16(kAlicePassword); | 194 password1_ = ASCIIToUTF16(kAlicePassword); |
| 195 username2_ = ASCIIToUTF16(kBobUsername); | 195 username2_ = ASCIIToUTF16(kBobUsername); |
| 196 password2_ = ASCIIToUTF16(kBobPassword); | 196 password2_ = ASCIIToUTF16(kBobPassword); |
| 197 username3_ = ASCIIToUTF16(kCarolUsername); | 197 username3_ = ASCIIToUTF16(kCarolUsername); |
| 198 password3_ = ASCIIToUTF16(kCarolPassword); | 198 password3_ = ASCIIToUTF16(kCarolPassword); |
| 199 alternate_username3_ = ASCIIToUTF16(kCarolAlternateUsername); | 199 alternate_username3_ = ASCIIToUTF16(kCarolAlternateUsername); |
| 200 | 200 |
| 201 FormFieldData username_field; | 201 FormFieldData username_field; |
| 202 username_field.name = ASCIIToUTF16(kUsernameName); | 202 username_field.name = ASCIIToUTF16(kUsernameName); |
| 203 username_field.value = username1_; | 203 username_field.value = username1_; |
| 204 fill_data_.basic_data.fields.push_back(username_field); | 204 fill_data_.username_field = username_field; |
| 205 | 205 |
| 206 FormFieldData password_field; | 206 FormFieldData password_field; |
| 207 password_field.name = ASCIIToUTF16(kPasswordName); | 207 password_field.name = ASCIIToUTF16(kPasswordName); |
| 208 password_field.value = password1_; | 208 password_field.value = password1_; |
| 209 password_field.form_control_type = "password"; | 209 password_field.form_control_type = "password"; |
| 210 fill_data_.basic_data.fields.push_back(password_field); | 210 fill_data_.password_field = password_field; |
| 211 | 211 |
| 212 PasswordAndRealm password2; | 212 PasswordAndRealm password2; |
| 213 password2.password = password2_; | 213 password2.password = password2_; |
| 214 fill_data_.additional_logins[username2_] = password2; | 214 fill_data_.additional_logins[username2_] = password2; |
| 215 PasswordAndRealm password3; | 215 PasswordAndRealm password3; |
| 216 password3.password = password3_; | 216 password3.password = password3_; |
| 217 fill_data_.additional_logins[username3_] = password3; | 217 fill_data_.additional_logins[username3_] = password3; |
| 218 | 218 |
| 219 UsernamesCollectionKey key; | 219 UsernamesCollectionKey key; |
| 220 key.username = username3_; | 220 key.username = username3_; |
| 221 key.password = password3_; | 221 key.password = password3_; |
| 222 key.realm = "google.com"; | 222 key.realm = "google.com"; |
| 223 fill_data_.other_possible_usernames[key].push_back(alternate_username3_); | 223 fill_data_.other_possible_usernames[key].push_back(alternate_username3_); |
| 224 | 224 |
| 225 // We need to set the origin so it matches the frame URL and the action so | 225 // We need to set the origin so it matches the frame URL and the action so |
| 226 // it matches the form action, otherwise we won't autocomplete. | 226 // it matches the form action, otherwise we won't autocomplete. |
| 227 UpdateOriginForHTML(kFormHTML); | 227 UpdateOriginForHTML(kFormHTML); |
| 228 fill_data_.basic_data.action = GURL("http://www.bidule.com"); | 228 fill_data_.action = GURL("http://www.bidule.com"); |
| 229 | 229 |
| 230 LoadHTML(kFormHTML); | 230 LoadHTML(kFormHTML); |
| 231 | 231 |
| 232 // Now retrieve the input elements so the test can access them. | 232 // Now retrieve the input elements so the test can access them. |
| 233 UpdateUsernameAndPasswordElements(); | 233 UpdateUsernameAndPasswordElements(); |
| 234 } | 234 } |
| 235 | 235 |
| 236 void TearDown() override { | 236 void TearDown() override { |
| 237 username_element_.reset(); | 237 username_element_.reset(); |
| 238 password_element_.reset(); | 238 password_element_.reset(); |
| 239 ChromeRenderViewTest::TearDown(); | 239 ChromeRenderViewTest::TearDown(); |
| 240 } | 240 } |
| 241 | 241 |
| 242 void UpdateOriginForHTML(const std::string& html) { | 242 void UpdateOriginForHTML(const std::string& html) { |
| 243 std::string origin = "data:text/html;charset=utf-8," + html; | 243 std::string origin = "data:text/html;charset=utf-8," + html; |
| 244 fill_data_.basic_data.origin = GURL(origin); | 244 fill_data_.origin = GURL(origin); |
| 245 } | 245 } |
| 246 | 246 |
| 247 void UpdateUsernameAndPasswordElements() { | 247 void UpdateUsernameAndPasswordElements() { |
| 248 WebDocument document = GetMainFrame()->document(); | 248 WebDocument document = GetMainFrame()->document(); |
| 249 WebElement element = | 249 WebElement element = |
| 250 document.getElementById(WebString::fromUTF8(kUsernameName)); | 250 document.getElementById(WebString::fromUTF8(kUsernameName)); |
| 251 ASSERT_FALSE(element.isNull()); | 251 ASSERT_FALSE(element.isNull()); |
| 252 username_element_ = element.to<blink::WebInputElement>(); | 252 username_element_ = element.to<blink::WebInputElement>(); |
| 253 element = document.getElementById(WebString::fromUTF8(kPasswordName)); | 253 element = document.getElementById(WebString::fromUTF8(kPasswordName)); |
| 254 ASSERT_FALSE(element.isNull()); | 254 ASSERT_FALSE(element.isNull()); |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 538 WebElement element = | 538 WebElement element = |
| 539 document.getElementById(WebString::fromUTF8(kUsernameName)); | 539 document.getElementById(WebString::fromUTF8(kUsernameName)); |
| 540 ASSERT_FALSE(element.isNull()); | 540 ASSERT_FALSE(element.isNull()); |
| 541 username_element_ = element.to<blink::WebInputElement>(); | 541 username_element_ = element.to<blink::WebInputElement>(); |
| 542 element = document.getElementById(WebString::fromUTF8(kPasswordName)); | 542 element = document.getElementById(WebString::fromUTF8(kPasswordName)); |
| 543 ASSERT_FALSE(element.isNull()); | 543 ASSERT_FALSE(element.isNull()); |
| 544 password_element_ = element.to<blink::WebInputElement>(); | 544 password_element_ = element.to<blink::WebInputElement>(); |
| 545 | 545 |
| 546 // Set the expected form origin and action URLs. | 546 // Set the expected form origin and action URLs. |
| 547 UpdateOriginForHTML(kEmptyActionFormHTML); | 547 UpdateOriginForHTML(kEmptyActionFormHTML); |
| 548 fill_data_.basic_data.action = fill_data_.basic_data.origin; | 548 fill_data_.action = fill_data_.origin; |
| 549 | 549 |
| 550 // Simulate the browser sending back the login info, it triggers the | 550 // Simulate the browser sending back the login info, it triggers the |
| 551 // autocomplete. | 551 // autocomplete. |
| 552 SimulateOnFillPasswordForm(fill_data_); | 552 SimulateOnFillPasswordForm(fill_data_); |
| 553 | 553 |
| 554 // The username and password should have been autocompleted. | 554 // The username and password should have been autocompleted. |
| 555 CheckTextFieldsState(kAliceUsername, true, kAlicePassword, true); | 555 CheckTextFieldsState(kAliceUsername, true, kAlicePassword, true); |
| 556 } | 556 } |
| 557 | 557 |
| 558 // Tests that if a password is marked as readonly, neither field is autofilled | 558 // Tests that if a password is marked as readonly, neither field is autofilled |
| (...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 898 std::string origin("data:text/html;charset=utf-8,"); | 898 std::string origin("data:text/html;charset=utf-8,"); |
| 899 origin += kSimpleWebpage; | 899 origin += kSimpleWebpage; |
| 900 | 900 |
| 901 std::string page_html(kWebpageWithIframeStart); | 901 std::string page_html(kWebpageWithIframeStart); |
| 902 page_html += origin; | 902 page_html += origin; |
| 903 page_html += kWebpageWithIframeEnd; | 903 page_html += kWebpageWithIframeEnd; |
| 904 | 904 |
| 905 LoadHTML(page_html.c_str()); | 905 LoadHTML(page_html.c_str()); |
| 906 | 906 |
| 907 // Set the expected form origin and action URLs. | 907 // Set the expected form origin and action URLs. |
| 908 fill_data_.basic_data.origin = GURL(origin); | 908 fill_data_.origin = GURL(origin); |
| 909 fill_data_.basic_data.action = GURL(origin); | 909 fill_data_.action = GURL(origin); |
| 910 | 910 |
| 911 SimulateOnFillPasswordForm(fill_data_); | 911 SimulateOnFillPasswordForm(fill_data_); |
| 912 | 912 |
| 913 // Retrieve the input elements from the iframe since that is where we want to | 913 // Retrieve the input elements from the iframe since that is where we want to |
| 914 // test the autofill. | 914 // test the autofill. |
| 915 WebFrame* iframe = GetMainFrame()->findChildByName(kIframeName); | 915 WebFrame* iframe = GetMainFrame()->findChildByName(kIframeName); |
| 916 ASSERT_TRUE(iframe); | 916 ASSERT_TRUE(iframe); |
| 917 WebDocument document = iframe->document(); | 917 WebDocument document = iframe->document(); |
| 918 | 918 |
| 919 WebElement username_element = document.getElementById(kUsernameName); | 919 WebElement username_element = document.getElementById(kUsernameName); |
| (...skipping 711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1631 password_element_, | 1631 password_element_, |
| 1632 /*is_user_input=*/true); | 1632 /*is_user_input=*/true); |
| 1633 | 1633 |
| 1634 // Simulate the user typing a stored username. | 1634 // Simulate the user typing a stored username. |
| 1635 SimulateUsernameChange(kAliceUsername, true); | 1635 SimulateUsernameChange(kAliceUsername, true); |
| 1636 // The autofileld password should replace the typed one. | 1636 // The autofileld password should replace the typed one. |
| 1637 CheckTextFieldsDOMState(kAliceUsername, true, kAlicePassword, true); | 1637 CheckTextFieldsDOMState(kAliceUsername, true, kAlicePassword, true); |
| 1638 } | 1638 } |
| 1639 | 1639 |
| 1640 } // namespace autofill | 1640 } // namespace autofill |
| OLD | NEW |