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

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

Issue 19705013: [password autofill] Remove references to PasswordForm from RenderViewImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 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 45ab8518e7566111bc776f8839f1c377288453cf..cecba4f5465f19aead9804a1d70dde7cdc3adf46 100644
--- a/chrome/browser/password_manager/password_manager_unittest.cc
+++ b/chrome/browser/password_manager/password_manager_unittest.cc
@@ -30,6 +30,8 @@ using testing::Exactly;
using testing::Return;
using testing::WithArg;
+namespace {
+
class MockPasswordManagerDelegate : public PasswordManagerDelegate {
public:
MOCK_METHOD1(FillPasswordForm, void(const autofill::PasswordFormFillData&));
@@ -46,6 +48,31 @@ ACTION_P(SaveToScopedPtr, scoped) {
scoped->reset(arg0);
}
+class TestPasswordManager : public PasswordManager {
+ public:
+ TestPasswordManager(content::WebContents* contents,
+ PasswordManagerDelegate* delegate)
+ : PasswordManager(contents, delegate) {}
+ virtual ~TestPasswordManager() {}
+
+ virtual void OnPasswordFormSubmitted(const PasswordForm& form) OVERRIDE {
+ PasswordManager::OnPasswordFormSubmitted(form);
+ }
+
+ static TestPasswordManager* CreateForWebContentsAndDelegate(
+ content::WebContents* contents,
+ PasswordManagerDelegate* delegate) {
+ TestPasswordManager* tpm = new TestPasswordManager(contents, delegate);
+ contents->SetUserData(UserDataKey(), tpm);
+ return tpm;
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(TestPasswordManager);
+};
+
+} // namespace
+
class PasswordManagerTest : public ChromeRenderViewHostTestHarness {
protected:
virtual void SetUp() {
@@ -55,7 +82,7 @@ class PasswordManagerTest : public ChromeRenderViewHostTestHarness {
profile(), MockPasswordStore::Build).get());
EXPECT_CALL(delegate_, GetProfile()).WillRepeatedly(Return(profile()));
- PasswordManager::CreateForWebContentsAndDelegate(
+ manager_ = TestPasswordManager::CreateForWebContentsAndDelegate(
web_contents(), &delegate_);
EXPECT_CALL(delegate_, DidLastPageLoadEncounterSSLErrors())
.WillRepeatedly(Return(false));
@@ -81,12 +108,50 @@ class PasswordManagerTest : public ChromeRenderViewHostTestHarness {
return form;
}
- PasswordManager* manager() {
- return PasswordManager::FromWebContents(web_contents());
+ bool FormsAreEqual(const content::PasswordForm& lhs,
+ const content::PasswordForm& rhs) {
+ if (lhs.origin != rhs.origin)
+ return false;
+ if (lhs.action != rhs.action)
+ return false;
+ if (lhs.username_element != rhs.username_element)
+ return false;
+ if (lhs.password_element != rhs.password_element)
+ return false;
+ if (lhs.username_value != rhs.username_value)
+ return false;
+ if (lhs.password_value != rhs.password_value)
+ return false;
+ if (lhs.password_autocomplete_set != rhs.password_autocomplete_set)
+ return false;
+ if (lhs.submit_element != rhs.submit_element)
+ return false;
+ if (lhs.signon_realm != rhs.signon_realm)
+ return false;
+ return true;
+ }
+
+ TestPasswordManager* manager() {
+ return manager_;
+ }
+
+ void OnPasswordFormSubmitted(const content::PasswordForm& form) {
+ manager()->OnPasswordFormSubmitted(form);
+ }
+
+ PasswordManager::PasswordSubmittedCallback SubmissionCallback() {
+ return base::Bind(&PasswordManagerTest::FormSubmitted,
+ base::Unretained(this));
+ }
+
+ void FormSubmitted(const content::PasswordForm& form) {
+ submitted_form_ = form;
}
scoped_refptr<MockPasswordStore> store_;
+ TestPasswordManager* manager_;
MockPasswordManagerDelegate delegate_; // Owned by manager_.
+ PasswordForm submitted_form_;
};
MATCHER_P(FormMatches, form, "") {
@@ -208,15 +273,8 @@ TEST_F(PasswordManagerTest, FormSeenThenLeftPage) {
manager()->OnPasswordFormsParsed(observed); // The initial load.
manager()->OnPasswordFormsRendered(observed); // The initial layout.
- PasswordForm empty_form(form);
- empty_form.username_value = string16();
- empty_form.password_value = string16();
- content::LoadCommittedDetails details;
- content::FrameNavigateParams params;
- params.password_form = empty_form;
- manager()->DidNavigateAnyFrame(details, params);
-
- // No expected calls.
+ // No message from the renderer that a password was submitted. No
+ // expected calls.
EXPECT_CALL(delegate_, AddSavePasswordInfoBarIfPermitted(_)).Times(0);
observed.clear();
manager()->OnPasswordFormsParsed(observed); // The post-navigation load.
@@ -238,14 +296,11 @@ TEST_F(PasswordManagerTest, FormSubmitAfterNavigateSubframe) {
// Simulate navigating a sub-frame.
content::LoadCommittedDetails details;
- details.is_main_frame = false;
content::FrameNavigateParams params;
manager()->DidNavigateAnyFrame(details, params);
- // Simulate navigating the real page.
- details.is_main_frame = true;
- params.password_form = form;
- manager()->DidNavigateAnyFrame(details, params);
+ // Simulate submitting the password.
+ OnPasswordFormSubmitted(form);
// Now the password manager waits for the navigation to complete.
scoped_ptr<PasswordFormManager> form_to_save;
@@ -289,7 +344,7 @@ TEST_F(PasswordManagerTest, FormSubmitWithFormOnPreviousPage) {
content::LoadCommittedDetails details;
details.is_main_frame = true;
content::FrameNavigateParams params;
- manager()->DidNavigateAnyFrame(details, params);
+ manager()->DidNavigateMainFrame(details, params);
// This page contains a form with the same markup, but on a different
// URL.
@@ -298,8 +353,7 @@ TEST_F(PasswordManagerTest, FormSubmitWithFormOnPreviousPage) {
manager()->OnPasswordFormsRendered(observed);
// Now submit this form
- params.password_form = second_form;
- manager()->DidNavigateAnyFrame(details, params);
+ OnPasswordFormSubmitted(second_form);
// Navigation after form submit.
scoped_ptr<PasswordFormManager> form_to_save;
@@ -475,3 +529,10 @@ TEST_F(PasswordManagerTest, GeneratedPasswordFormSavedAutocompleteOff) {
manager()->OnPasswordFormsParsed(observed); // The post-navigation load.
manager()->OnPasswordFormsRendered(observed); // The post-navigation layout.
}
+
+TEST_F(PasswordManagerTest, SubmissionCallbackTest) {
+ manager()->AddSubmissionCallback(SubmissionCallback());
+ PasswordForm form = MakeSimpleForm();
+ OnPasswordFormSubmitted(form);
+ EXPECT_TRUE(FormsAreEqual(form, submitted_form_));
+}
« no previous file with comments | « chrome/browser/password_manager/password_manager_browsertest.cc ('k') | chrome/browser/prerender/prerender_tab_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698