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

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

Issue 9564001: Clean up password manager code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add a unit test for sub-frame navigation Created 8 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 ced8c5025518284637502b2cca52b1b5b79c7b3d..ba13327758c5b582f22cf36bb81f3e9314ee4b4e 100644
--- a/chrome/browser/password_manager/password_manager_unittest.cc
+++ b/chrome/browser/password_manager/password_manager_unittest.cc
@@ -14,6 +14,8 @@
#include "chrome/test/base/chrome_render_view_host_test_harness.h"
#include "chrome/test/base/testing_profile.h"
#include "content/browser/tab_contents/test_tab_contents.h"
+#include "content/public/browser/navigation_details.h"
+#include "content/public/common/frame_navigate_params.h"
#include "content/test/test_browser_thread.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -206,12 +208,51 @@ TEST_F(PasswordManagerTest, FormSeenThenLeftPage) {
manager()->OnPasswordFormsFound(observed); // The initial load.
manager()->OnPasswordFormsVisible(observed); // The initial layout.
- manager()->DidNavigate();
+ content::LoadCommittedDetails details;
+ content::FrameNavigateParams params;
+ params.password_form = form;
+ manager()->DidNavigateAnyFrame(details, params);
// No expected calls.
manager()->DidStopLoading();
}
+TEST_F(PasswordManagerTest, FormSubmitAfterNavigateSubframe) {
+ // Test that navigating a subframe does not prevent us from showing the save
+ // password infobar.
+ 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)));
+ std::vector<PasswordForm> observed;
+ PasswordForm form(MakeSimpleForm());
+ observed.push_back(form);
+ manager()->OnPasswordFormsFound(observed); // The initial load.
+ manager()->OnPasswordFormsVisible(observed); // The initial layout.
+
+ scoped_ptr<PasswordFormManager> form_to_save;
+ EXPECT_CALL(delegate_, AddSavePasswordInfoBar(_))
+ .WillOnce(WithArg<0>(SaveToScopedPtr(&form_to_save)));
+
+ // Simulate navigating a sub-frame.
+ content::LoadCommittedDetails details;
+ content::FrameNavigateParams params;
+ manager()->DidNavigateAnyFrame(details, params);
+
+ // Simulate navigating the real page.
+ params.password_form = form;
+ manager()->DidNavigateAnyFrame(details, params);
+
+ // Now the password manager waits for the navigation to complete.
+ manager()->DidStopLoading();
+
+ ASSERT_FALSE(NULL == form_to_save.get());
+ EXPECT_CALL(*store_, AddLogin(FormMatches(form)));
+
+ // Simulate saving the form, as if the info bar was accepted.
+ form_to_save->Save();
+}
+
TEST_F(PasswordManagerTest, FormSubmitFailedLogin) {
std::vector<PasswordForm*> result; // Empty password store.
EXPECT_CALL(delegate_, FillPasswordForm(_)).Times(Exactly(0));

Powered by Google App Engine
This is Rietveld 408576698