 Chromium Code Reviews
 Chromium Code Reviews Issue 9625026:
  Save password without an associated username.  (Closed) 
  Base URL: http://src.chromium.org/svn/trunk/src/
    
  
    Issue 9625026:
  Save password without an associated username.  (Closed) 
  Base URL: http://src.chromium.org/svn/trunk/src/| Index: chrome/renderer/autofill/password_autofill_manager_browsertest.cc | 
| =================================================================== | 
| --- chrome/renderer/autofill/password_autofill_manager_browsertest.cc (revision 130897) | 
| +++ chrome/renderer/autofill/password_autofill_manager_browsertest.cc (working copy) | 
| @@ -80,16 +80,17 @@ | 
| username3_ = ASCIIToUTF16(kCarolUsername); | 
| password3_ = ASCIIToUTF16(kCarolPassword); | 
| + FormField password_field; | 
| + password_field.name = ASCIIToUTF16(kPasswordName); | 
| + password_field.value = password1_; | 
| + fill_data_.basic_data.fields.push_back(password_field); | 
| + fill_data_only_password_.basic_data.fields.push_back(password_field); | 
| + | 
| FormField username_field; | 
| username_field.name = ASCIIToUTF16(kUsernameName); | 
| username_field.value = username1_; | 
| fill_data_.basic_data.fields.push_back(username_field); | 
| - FormField password_field; | 
| - password_field.name = ASCIIToUTF16(kPasswordName); | 
| - password_field.value = password1_; | 
| - fill_data_.basic_data.fields.push_back(password_field); | 
| - | 
| fill_data_.additional_logins[username2_] = password2_; | 
| fill_data_.additional_logins[username3_] = password3_; | 
| @@ -99,6 +100,8 @@ | 
| origin += kFormHTML; | 
| fill_data_.basic_data.origin = GURL(origin); | 
| fill_data_.basic_data.action = GURL("http://www.bidule.com"); | 
| + fill_data_only_password_.basic_data.origin = GURL(origin); | 
| + fill_data_only_password_.basic_data.action = GURL("http://www.bidule.com"); | 
| LoadHTML(kFormHTML); | 
| @@ -150,6 +153,13 @@ | 
| EXPECT_EQ(password_autofilled, password_element_.isAutofilled()); | 
| } | 
| + void CheckPasswordTextFieldState(const std::string& password, | 
| + bool password_autofilled) { | 
| + EXPECT_EQ(password, | 
| + static_cast<std::string>(password_element_.value().utf8())); | 
| + EXPECT_EQ(password_autofilled, password_element_.isAutofilled()); | 
| + } | 
| 
Ilya Sherman
2012/04/19 00:27:37
nit: Since this function is used only in a single
 | 
| + | 
| void CheckUsernameSelection(int start, int end) { | 
| EXPECT_EQ(start, username_element_.selectionStart()); | 
| EXPECT_EQ(end, username_element_.selectionEnd()); | 
| @@ -162,6 +172,7 @@ | 
| string16 password2_; | 
| string16 password3_; | 
| PasswordFormFillData fill_data_; | 
| + PasswordFormFillData fill_data_only_password_; | 
| 
Ilya Sherman
2012/04/19 00:27:37
nit: Since this is used only in a single test, ple
 | 
| WebInputElement username_element_; | 
| WebInputElement password_element_; | 
| @@ -203,6 +214,17 @@ | 
| CheckTextFieldsState(kAliceUsername, true, kAlicePassword, true); | 
| } | 
| +// Tests that the password login is autocompleted as expected when the browser | 
| +// sends back the password info if there is only a password field. | 
| +TEST_F(PasswordAutofillManagerTest, InitialAutocompleteOnlyPassword) { | 
| + // Simulate the browser sending back the login info, it triggers the | 
| + // autocomplete. | 
| + SimulateOnFillPasswordForm(fill_data_only_password_); | 
| + | 
| + // Only the password should have been autocompleted. | 
| + CheckPasswordTextFieldState(kAlicePassword, true); | 
| +} | 
| + | 
| // Tests that we correctly fill forms having an empty 'action' attribute. | 
| TEST_F(PasswordAutofillManagerTest, InitialAutocompleteForEmptyAction) { | 
| const char kEmptyActionFormHTML[] = |