| Index: components/password_manager/core/browser/password_form_manager_unittest.cc
|
| diff --git a/components/password_manager/core/browser/password_form_manager_unittest.cc b/components/password_manager/core/browser/password_form_manager_unittest.cc
|
| index b9197ca9f48a99d1c0d4a60240e65c74cf6ee5a0..1236cbddd9d311dc2ab36614df8cda746fd776ff 100644
|
| --- a/components/password_manager/core/browser/password_form_manager_unittest.cc
|
| +++ b/components/password_manager/core/browser/password_form_manager_unittest.cc
|
| @@ -593,30 +593,35 @@ TEST_F(PasswordFormManagerTest, TestValidForms) {
|
| // Form with both username_element and password_element.
|
| PasswordFormManager manager1(NULL, NULL, NULL, credentials, false);
|
| SimulateMatchingPhase(&manager1, RESULT_NO_MATCH);
|
| + EXPECT_TRUE(manager1.HasValidLogin());
|
| EXPECT_TRUE(manager1.HasValidPasswordForm());
|
|
|
| // Form with username_element, password_element, and new_password_element.
|
| PasswordFormManager manager2(NULL, NULL, NULL, new_credentials, false);
|
| SimulateMatchingPhase(&manager2, RESULT_NO_MATCH);
|
| + EXPECT_TRUE(manager2.HasValidLogin());
|
| EXPECT_TRUE(manager2.HasValidPasswordForm());
|
|
|
| // Form with username_element and only new_password_element.
|
| new_credentials.password_element.clear();
|
| PasswordFormManager manager3(NULL, NULL, NULL, new_credentials, false);
|
| SimulateMatchingPhase(&manager3, RESULT_NO_MATCH);
|
| + EXPECT_TRUE(manager3.HasValidLogin());
|
| EXPECT_TRUE(manager3.HasValidPasswordForm());
|
|
|
| // Form without a username_element but with a password_element.
|
| credentials.username_element.clear();
|
| PasswordFormManager manager4(NULL, NULL, NULL, credentials, false);
|
| SimulateMatchingPhase(&manager4, RESULT_NO_MATCH);
|
| - EXPECT_FALSE(manager4.HasValidPasswordForm());
|
| + EXPECT_FALSE(manager4.HasValidLogin());
|
| + EXPECT_TRUE(manager4.HasValidPasswordForm());
|
|
|
| // Form without a username_element but with a new_password_element.
|
| new_credentials.username_element.clear();
|
| PasswordFormManager manager5(NULL, NULL, NULL, new_credentials, false);
|
| SimulateMatchingPhase(&manager5, RESULT_NO_MATCH);
|
| - EXPECT_FALSE(manager5.HasValidPasswordForm());
|
| + EXPECT_FALSE(manager5.HasValidLogin());
|
| + EXPECT_TRUE(manager5.HasValidPasswordForm());
|
|
|
| // Form without a password_element but with a username_element.
|
| credentials.username_element = saved_match()->username_element;
|
| @@ -1088,4 +1093,54 @@ TEST_F(PasswordFormManagerTest, CorrectlyUpdatePasswordsWithSameUsername) {
|
| password_store->Shutdown();
|
| }
|
|
|
| +TEST_F(PasswordFormManagerTest, CorrectlySavePasswordWithoutUsernameFields) {
|
| + // Need a MessageLoop for callbacks.
|
| + base::MessageLoop message_loop;
|
| + scoped_refptr<TestPasswordStore> password_store = new TestPasswordStore;
|
| + CHECK(password_store->Init(syncer::SyncableService::StartSyncFlare(), ""));
|
| +
|
| + TestPasswordManagerClient client_with_store(password_store.get());
|
| + TestPasswordManager password_manager(&client_with_store);
|
| + EXPECT_CALL(*client_with_store.GetMockDriver(),
|
| + AllowPasswordGenerationForForm(_)).Times(2);
|
| + EXPECT_CALL(*client_with_store.GetMockDriver(), IsOffTheRecord())
|
| + .WillRepeatedly(Return(false));
|
| +
|
| + PasswordForm form(*observed_form());
|
| + form.username_element.clear();
|
| + form.password_value = ASCIIToUTF16("password");
|
| + form.preferred = true;
|
| +
|
| + PasswordFormManager storing_manager(&password_manager,
|
| + &client_with_store,
|
| + client_with_store.GetDriver(),
|
| + *observed_form(),
|
| + false);
|
| + storing_manager.FetchMatchingLoginsFromPasswordStore(
|
| + PasswordStore::ALLOW_PROMPT);
|
| + RunAllPendingTasks();
|
| +
|
| + storing_manager.ProvisionallySave(
|
| + form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
|
| +
|
| + EXPECT_TRUE(storing_manager.IsNewLogin());
|
| + storing_manager.Save();
|
| + RunAllPendingTasks();
|
| +
|
| + PasswordFormManager retrieving_manager(&password_manager,
|
| + &client_with_store,
|
| + client_with_store.GetDriver(),
|
| + *observed_form(),
|
| + false);
|
| +
|
| + retrieving_manager.FetchMatchingLoginsFromPasswordStore(
|
| + PasswordStore::ALLOW_PROMPT);
|
| + RunAllPendingTasks();
|
| +
|
| + // Make sure that the preferred match is updated appropriately.
|
| + EXPECT_EQ(ASCIIToUTF16("password"),
|
| + retrieving_manager.preferred_match()->password_value);
|
| + password_store->Shutdown();
|
| +}
|
| +
|
| } // namespace password_manager
|
|
|