Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3307)

Unified Diff: chrome/browser/password_manager/password_manager_unittest.cc

Issue 1656005: Fix password mgr heuristics for sites that keep the login form around after signin (Closed)
Patch Set: Responding to feedback Created 10 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();
+}
« no previous file with comments | « chrome/browser/password_manager/password_manager.cc ('k') | chrome/browser/renderer_host/render_view_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698