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

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

Issue 133893004: Allow deleting autofill password suggestions on Shift+Delete (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleaning the code Created 6 years, 10 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 f68500c1b4863d6e04a5d0a5e9e1fa4e4797d35b..e345e1fd32603421778ca41c401333345f46c246 100644
--- a/chrome/browser/password_manager/password_manager_unittest.cc
+++ b/chrome/browser/password_manager/password_manager_unittest.cc
@@ -67,6 +67,8 @@ class TestPasswordManager : public PasswordManager {
return tpm;
}
+ int PendingManagersCount() { return pending_login_managers_.size(); }
+
private:
DISALLOW_COPY_AND_ASSIGN(TestPasswordManager);
};
@@ -526,3 +528,77 @@ TEST_F(PasswordManagerTest, PasswordFormReappearance) {
manager()->OnPasswordFormsParsed(observed);
manager()->OnPasswordFormsRendered(observed);
}
+
+TEST_F(PasswordManagerTest, RemovePasswordFormSubmitEmptyStore) {
+
+ std::vector<PasswordForm*> result; // Empty password store.
+ EXPECT_CALL(delegate_, FillPasswordForm(_)).Times(Exactly(0));
+ EXPECT_CALL(*store_.get(), GetLogins(_, _))
+ .WillOnce(DoAll(WithArg<1>(InvokeConsumer(result)), Return(1)));
+ std::vector<PasswordForm> observed;
+ PasswordForm form(MakeSimpleForm());
+ observed.push_back(form);
+ manager()->OnPasswordFormsParsed(observed); // The initial load.
+ manager()->OnPasswordFormsRendered(observed); // The initial layout.
+
+ // And the form submit contract is to call ProvisionallySavePassword.
+ manager()->ProvisionallySavePassword(form);
+
+ scoped_ptr<PasswordFormManager> form_to_save;
+ EXPECT_CALL(delegate_, AddSavePasswordInfoBarIfPermitted(_))
+ .WillOnce(WithArg<0>(SaveToScopedPtr(&form_to_save)));
+
+ // Now the password manager waits for the navigation to complete.
+ observed.clear();
+ manager()->OnPasswordFormsParsed(observed); // The post-navigation load.
+ manager()->OnPasswordFormsRendered(observed); // The post-navigation layout.
+
+ ASSERT_TRUE(form_to_save.get());
+ EXPECT_CALL(*store_.get(), AddLogin(FormMatches(form)));
+
+ // Simulate saving the form, as if the info bar was accepted.
+ form_to_save->Save();
+
+ EXPECT_CALL(*store_.get(), RemoveLoginImpl(_)).Times(Exactly(1));
+ EXPECT_CALL(delegate_, DidLastPageLoadEncounterSSLErrors()).Times(Exactly(0));
+
+ manager()->OnRemovePasswordSuggestion(form);
+}
+
+TEST_F(PasswordManagerTest, RemovePasswordFormSubmitEmptyStore2) {
+
+ std::vector<PasswordForm*> result; // Empty password store.
+ EXPECT_CALL(delegate_, FillPasswordForm(_)).Times(Exactly(0));
+ EXPECT_CALL(*store_.get(), GetLogins(_, _))
+ .WillOnce(DoAll(WithArg<1>(InvokeConsumer(result)), Return(1)));
+ std::vector<PasswordForm> observed;
+ PasswordForm form(MakeSimpleForm());
+ observed.push_back(form);
+ ASSERT_TRUE(manager()->PendingManagersCount() == 0);
+ manager()->OnPasswordFormsParsed(observed); // The initial load.
+ manager()->OnPasswordFormsRendered(observed); // The initial layout.
+ ASSERT_TRUE(manager()->PendingManagersCount() == 1);
+ // And the form submit contract is to call ProvisionallySavePassword.
+ manager()->ProvisionallySavePassword(form);
+
+ scoped_ptr<PasswordFormManager> form_to_save;
+ EXPECT_CALL(delegate_, AddSavePasswordInfoBarIfPermitted(_))
+ .WillOnce(WithArg<0>(SaveToScopedPtr(&form_to_save)));
+
+ EXPECT_CALL(*store_.get(), RemoveLoginImpl(_)).Times(Exactly(1));
+ EXPECT_CALL(delegate_, DidLastPageLoadEncounterSSLErrors()).Times(Exactly(1));
+ manager()->OnRemovePasswordSuggestion(form);
+
+ // Now the password manager waits for the navigation to complete.
+ observed.clear();
+ manager()->OnPasswordFormsParsed(observed); // The post-navigation load.
+ manager()->OnPasswordFormsRendered(observed); // The post-navigation layout.
+ ASSERT_TRUE(manager()->PendingManagersCount() == 0);
+ ASSERT_TRUE(form_to_save.get());
+ EXPECT_CALL(*store_.get(), AddLogin(FormMatches(form)));
+
+ // Simulate saving the form, as if the info bar was accepted.
+ form_to_save->Save();
+
+ ASSERT_TRUE(manager()->PendingManagersCount() == 0);
+}

Powered by Google App Engine
This is Rietveld 408576698