| Index: chrome/browser/password_manager/password_manager_unittest.cc
|
| diff --git a/chrome/browser/password_manager/password_manager_unittest.cc b/chrome/browser/password_manager/password_manager_unittest.cc
|
| index cd2fb2b9e13c0745dc2b4c345ca9888914ceb0c7..8bb6fc72b47ed385cf940c5bf8c17339221eda9a 100644
|
| --- a/chrome/browser/password_manager/password_manager_unittest.cc
|
| +++ b/chrome/browser/password_manager/password_manager_unittest.cc
|
| @@ -122,7 +122,8 @@ TEST_F(PasswordManagerTest, FormSubmitEmptyStore) {
|
| std::vector<PasswordForm> observed;
|
| PasswordForm form(MakeSimpleForm());
|
| observed.push_back(form);
|
| - manager()->PasswordFormsSeen(observed); // The initial load.
|
| + manager()->PasswordFormsFound(observed); // The initial load.
|
| + manager()->PasswordFormsVisible(observed); // The initial layout.
|
|
|
| // And the form submit contract is to call ProvisionallySavePassword.
|
| manager()->ProvisionallySavePassword(form);
|
| @@ -134,7 +135,7 @@ TEST_F(PasswordManagerTest, FormSubmitEmptyStore) {
|
| // Now the password manager waits for the navigation to complete.
|
| manager()->DidStopLoading();
|
|
|
| - EXPECT_FALSE(NULL == form_to_save.get());
|
| + ASSERT_FALSE(NULL == form_to_save.get());
|
| EXPECT_CALL(*store_, AddLogin(FormMatches(form)));
|
|
|
| // Simulate saving the form, as if the info bar was accepted.
|
| @@ -156,7 +157,8 @@ TEST_F(PasswordManagerTest, FormSubmitNoGoodMatch) {
|
| std::vector<PasswordForm> observed;
|
| PasswordForm form(MakeSimpleForm());
|
| observed.push_back(form);
|
| - manager()->PasswordFormsSeen(observed); // The initial load.
|
| + manager()->PasswordFormsFound(observed); // The initial load.
|
| + manager()->PasswordFormsVisible(observed); // The initial layout.
|
| manager()->ProvisionallySavePassword(form);
|
|
|
| // We still expect an add, since we didn't have a good match.
|
| @@ -179,7 +181,8 @@ TEST_F(PasswordManagerTest, FormSeenThenLeftPage) {
|
| std::vector<PasswordForm> observed;
|
| PasswordForm form(MakeSimpleForm());
|
| observed.push_back(form);
|
| - manager()->PasswordFormsSeen(observed); // The initial load.
|
| + manager()->PasswordFormsFound(observed); // The initial load.
|
| + manager()->PasswordFormsVisible(observed); // The initial layout.
|
|
|
| manager()->DidNavigate();
|
|
|
| @@ -191,16 +194,68 @@ TEST_F(PasswordManagerTest, FormSubmitFailedLogin) {
|
| std::vector<PasswordForm*> result; // Empty password store.
|
| EXPECT_CALL(delegate_, FillPasswordForm(_)).Times(Exactly(0));
|
| EXPECT_CALL(*store_, GetLogins(_,_))
|
| - .WillOnce(DoAll(WithArg<1>(InvokeConsumer(0, result)), Return(0)));
|
| + .WillRepeatedly(DoAll(WithArg<1>(InvokeConsumer(0, result)), Return(0)));
|
| std::vector<PasswordForm> observed;
|
| PasswordForm form(MakeSimpleForm());
|
| observed.push_back(form);
|
| - manager()->PasswordFormsSeen(observed); // The initial load.
|
| + manager()->PasswordFormsFound(observed); // The initial load.
|
| + manager()->PasswordFormsVisible(observed); // The initial layout.
|
|
|
| manager()->ProvisionallySavePassword(form);
|
|
|
| - manager()->PasswordFormsSeen(observed); // Simulated re-appearance.
|
| + // The form reappears, and is visible in the layout:
|
| + manager()->PasswordFormsFound(observed);
|
| + manager()->PasswordFormsVisible(observed);
|
|
|
| // No expected calls to the PasswordStore...
|
| manager()->DidStopLoading();
|
| }
|
| +
|
| +TEST_F(PasswordManagerTest, FormSubmitInvisibleLogin) {
|
| + // Tests fix of issue 28911: if the login form reappears on the subsequent
|
| + // page, but is invisible, it shouldn't count as a failed login.
|
| + std::vector<PasswordForm*> result; // Empty password store.
|
| + EXPECT_CALL(delegate_, FillPasswordForm(_)).Times(Exactly(0));
|
| + EXPECT_CALL(*store_, GetLogins(_,_))
|
| + .WillRepeatedly(DoAll(WithArg<1>(InvokeConsumer(0, result)), Return(0)));
|
| + std::vector<PasswordForm> observed;
|
| + PasswordForm form(MakeSimpleForm());
|
| + observed.push_back(form);
|
| + manager()->PasswordFormsFound(observed); // The initial load.
|
| + manager()->PasswordFormsVisible(observed); // The initial layout.
|
| +
|
| + manager()->ProvisionallySavePassword(form);
|
| +
|
| + // The form reappears, but is not visible in the layout:
|
| + manager()->PasswordFormsFound(observed);
|
| + // No call to PasswordFormsVisible.
|
| +
|
| + // Expect info bar to appear:
|
| + scoped_ptr<PasswordFormManager> form_to_save;
|
| + EXPECT_CALL(delegate_, AddSavePasswordInfoBar(_))
|
| + .WillOnce(WithArg<0>(SaveToScopedPtr(&form_to_save)));
|
| +
|
| + manager()->DidStopLoading();
|
| +
|
| + ASSERT_FALSE(NULL == form_to_save.get());
|
| + EXPECT_CALL(*store_, AddLogin(FormMatches(form)));
|
| + // Simulate saving the form.
|
| + form_to_save->Save();
|
| +}
|
| +
|
| +TEST_F(PasswordManagerTest, InitiallyInvisibleForm) {
|
| + // Make sure an invisible login form still gets autofilled.
|
| + std::vector<PasswordForm*> result;
|
| + PasswordForm* existing = new PasswordForm(MakeSimpleForm());
|
| + result.push_back(existing);
|
| + EXPECT_CALL(delegate_, FillPasswordForm(_));
|
| + EXPECT_CALL(*store_, GetLogins(_,_))
|
| + .WillRepeatedly(DoAll(WithArg<1>(InvokeConsumer(0, result)), Return(0)));
|
| + std::vector<PasswordForm> observed;
|
| + PasswordForm form(MakeSimpleForm());
|
| + observed.push_back(form);
|
| + manager()->PasswordFormsFound(observed); // The initial load.
|
| + // PasswordFormsVisible is not called.
|
| +
|
| + manager()->DidStopLoading();
|
| +}
|
|
|