| 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 62152b61ec525641b6bd2f6eb4f2254778731d77..3dd8aa3a0048afbef70fdc090271febed2801aee 100644
|
| --- a/components/password_manager/core/browser/password_form_manager_unittest.cc
|
| +++ b/components/password_manager/core/browser/password_form_manager_unittest.cc
|
| @@ -122,6 +122,11 @@ class PasswordFormManagerTest : public testing::Test {
|
| ASCIIToUTF16("test2@gmail.com"));
|
| }
|
|
|
| + void AddNewPasswordElement() {
|
| + observed_form_.new_password_element = ASCIIToUTF16("NewPasswd");
|
| + observed_form_.new_password_value = ASCIIToUTF16("test1new");
|
| + }
|
| +
|
| virtual void TearDown() {
|
| if (mock_store_)
|
| mock_store_->Shutdown();
|
| @@ -220,6 +225,8 @@ TEST_F(PasswordFormManagerTest, TestNewLogin) {
|
| GetPendingCredentials(manager)->password_value);
|
| EXPECT_EQ(saved_match()->username_value,
|
| GetPendingCredentials(manager)->username_value);
|
| + EXPECT_TRUE(GetPendingCredentials(manager)->new_password_element.empty());
|
| + EXPECT_TRUE(GetPendingCredentials(manager)->new_password_value.empty());
|
|
|
| // Now, suppose the user re-visits the site and wants to save an additional
|
| // login for the site with a new username. In this case, the matching phase
|
| @@ -243,6 +250,49 @@ TEST_F(PasswordFormManagerTest, TestNewLogin) {
|
| EXPECT_TRUE(GetPendingCredentials(manager)->preferred);
|
| EXPECT_EQ(new_pass, GetPendingCredentials(manager)->password_value);
|
| EXPECT_EQ(new_user, GetPendingCredentials(manager)->username_value);
|
| + EXPECT_TRUE(GetPendingCredentials(manager)->new_password_element.empty());
|
| + EXPECT_TRUE(GetPendingCredentials(manager)->new_password_value.empty());
|
| + delete manager;
|
| +}
|
| +
|
| +TEST_F(PasswordFormManagerTest, TestNewLoginWithNewPasswordElement) {
|
| + // Alter the test form so it only has a password field that identified as
|
| + // being the new password.
|
| + observed_form()->new_password_element.swap(observed_form()->password_element);
|
| +
|
| + scoped_ptr<TestPasswordManagerClient> client(
|
| + new TestPasswordManagerClient(NULL));
|
| + scoped_ptr<StubPasswordManagerDriver> driver;
|
| + PasswordFormManager* manager = new PasswordFormManager(
|
| + NULL, client.get(), driver.get(), *observed_form(), false);
|
| + SimulateMatchingPhase(manager, false);
|
| +
|
| + // User submits credentials for the observed form.
|
| + PasswordForm credentials(*observed_form());
|
| + credentials.username_value = saved_match()->username_value;
|
| + credentials.new_password_value = saved_match()->password_value;
|
| + credentials.preferred = true;
|
| + manager->ProvisionallySave(
|
| + credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
|
| +
|
| + // Successful login. The PasswordManager would instruct PasswordFormManager
|
| + // to save, which should know this is a new login.
|
| + EXPECT_TRUE(manager->IsNewLogin());
|
| + EXPECT_EQ(observed_form()->origin.spec(),
|
| + GetPendingCredentials(manager)->origin.spec());
|
| + EXPECT_EQ(observed_form()->signon_realm,
|
| + GetPendingCredentials(manager)->signon_realm);
|
| + EXPECT_EQ(observed_form()->action, GetPendingCredentials(manager)->action);
|
| + EXPECT_TRUE(GetPendingCredentials(manager)->preferred);
|
| + EXPECT_EQ(saved_match()->username_value,
|
| + GetPendingCredentials(manager)->username_value);
|
| + // At this point, the PasswordFormManager should have promoted the new
|
| + // password element/value to current password element/value.
|
| + EXPECT_TRUE(GetPendingCredentials(manager)->password_element.empty());
|
| + EXPECT_EQ(saved_match()->password_value,
|
| + GetPendingCredentials(manager)->password_value);
|
| + EXPECT_TRUE(GetPendingCredentials(manager)->new_password_element.empty());
|
| + EXPECT_TRUE(GetPendingCredentials(manager)->new_password_value.empty());
|
| delete manager;
|
| }
|
|
|
| @@ -457,30 +507,51 @@ TEST_F(PasswordFormManagerTest, TestValidForms) {
|
| credentials.username_value = saved_match()->username_value;
|
| credentials.password_value = saved_match()->password_value;
|
|
|
| + // An alternate version of the form that also has a new_password_element.
|
| + AddNewPasswordElement();
|
| + PasswordForm new_credentials(*observed_form());
|
| +
|
| // Form with both username_element and password_element.
|
| PasswordFormManager manager1(NULL, NULL, NULL, credentials, false);
|
| SimulateMatchingPhase(&manager1, false);
|
| EXPECT_TRUE(manager1.HasValidPasswordForm());
|
|
|
| + // Form with username_element, password_element, and new_password_element.
|
| + PasswordFormManager manager2(NULL, NULL, NULL, new_credentials, false);
|
| + SimulateMatchingPhase(&manager2, false);
|
| + 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, false);
|
| + EXPECT_TRUE(manager3.HasValidPasswordForm());
|
| +
|
| // Form without a username_element but with a password_element.
|
| credentials.username_element.clear();
|
| - PasswordFormManager manager2(NULL, NULL, NULL, credentials, false);
|
| - SimulateMatchingPhase(&manager2, false);
|
| - EXPECT_FALSE(manager2.HasValidPasswordForm());
|
| + PasswordFormManager manager4(NULL, NULL, NULL, credentials, false);
|
| + SimulateMatchingPhase(&manager4, false);
|
| + EXPECT_FALSE(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, false);
|
| + EXPECT_FALSE(manager5.HasValidPasswordForm());
|
|
|
| // Form without a password_element but with a username_element.
|
| credentials.username_element = saved_match()->username_element;
|
| credentials.password_element.clear();
|
| - PasswordFormManager manager3(NULL, NULL, NULL, credentials, false);
|
| - SimulateMatchingPhase(&manager3, false);
|
| - EXPECT_FALSE(manager3.HasValidPasswordForm());
|
| + PasswordFormManager manager6(NULL, NULL, NULL, credentials, false);
|
| + SimulateMatchingPhase(&manager6, false);
|
| + EXPECT_FALSE(manager6.HasValidPasswordForm());
|
|
|
| // Form with neither a password_element nor a username_element.
|
| credentials.username_element.clear();
|
| credentials.password_element.clear();
|
| - PasswordFormManager manager4(NULL, NULL, NULL, credentials, false);
|
| - SimulateMatchingPhase(&manager4, false);
|
| - EXPECT_FALSE(manager4.HasValidPasswordForm());
|
| + PasswordFormManager manager7(NULL, NULL, NULL, credentials, false);
|
| + SimulateMatchingPhase(&manager7, false);
|
| + EXPECT_FALSE(manager7.HasValidPasswordForm());
|
| }
|
|
|
| TEST_F(PasswordFormManagerTest, TestValidFormsBasic) {
|
|
|