Index: components/password_manager/core/browser/password_manager_unittest.cc |
diff --git a/chrome/browser/password_manager/password_manager_unittest.cc b/components/password_manager/core/browser/password_manager_unittest.cc |
similarity index 88% |
rename from chrome/browser/password_manager/password_manager_unittest.cc |
rename to components/password_manager/core/browser/password_manager_unittest.cc |
index a6ba43bc053e5afb43f642e4f2eecf23e6ded57d..ac09f2a7e7af8fe13db57d140a6bfcfbcf496942 100644 |
--- a/chrome/browser/password_manager/password_manager_unittest.cc |
+++ b/components/password_manager/core/browser/password_manager_unittest.cc |
@@ -5,12 +5,11 @@ |
#include <vector> |
#include "base/message_loop/message_loop.h" |
+#include "base/prefs/pref_registry_simple.h" |
+#include "base/prefs/pref_service.h" |
+#include "base/prefs/testing_pref_service.h" |
#include "base/strings/string_util.h" |
#include "base/strings/utf_string_conversions.h" |
-#include "chrome/common/url_constants.h" |
-#include "chrome/test/base/chrome_render_view_host_test_harness.h" |
-#include "chrome/test/base/testing_pref_service_syncable.h" |
-#include "chrome/test/base/testing_profile.h" |
#include "components/password_manager/core/browser/mock_password_store.h" |
#include "components/password_manager/core/browser/password_manager.h" |
#include "components/password_manager/core/browser/password_manager_client.h" |
@@ -40,7 +39,6 @@ namespace { |
class MockPasswordManagerClient : public PasswordManagerClient { |
public: |
MOCK_METHOD1(PromptUserToSavePassword, void(PasswordFormManager*)); |
- MOCK_METHOD0(GetProfile, Profile*()); |
MOCK_METHOD0(GetPasswordStore, PasswordStore*()); |
MOCK_METHOD0(GetPrefs, PrefService*()); |
MOCK_METHOD0(GetDriver, PasswordManagerDriver*()); |
@@ -70,13 +68,9 @@ class MockPasswordManagerDriver : public PasswordManagerDriver { |
void(const std::vector<autofill::FormData>&)); |
}; |
-ACTION_P(InvokeConsumer, forms) { |
- arg0->OnGetPasswordStoreResults(forms); |
-} |
+ACTION_P(InvokeConsumer, forms) { arg0->OnGetPasswordStoreResults(forms); } |
-ACTION_P(SaveToScopedPtr, scoped) { |
- scoped->reset(arg0); |
-} |
+ACTION_P(SaveToScopedPtr, scoped) { scoped->reset(arg0); } |
class TestPasswordManager : public PasswordManager { |
public: |
@@ -94,16 +88,17 @@ class TestPasswordManager : public PasswordManager { |
} // namespace |
-class PasswordManagerTest : public ChromeRenderViewHostTestHarness { |
+class PasswordManagerTest : public testing::Test { |
protected: |
virtual void SetUp() { |
- ChromeRenderViewHostTestHarness::SetUp(); |
+ prefs_.registry()->RegisterBooleanPref(prefs::kPasswordManagerEnabled, |
+ true); |
+ |
store_ = new MockPasswordStore; |
CHECK(store_->Init()); |
EXPECT_CALL(client_, GetPasswordStore()).WillRepeatedly(Return(store_)); |
- EXPECT_CALL(client_, GetPrefs()) |
- .WillRepeatedly(Return(profile()->GetTestingPrefService())); |
+ EXPECT_CALL(client_, GetPrefs()).WillRepeatedly(Return(&prefs_)); |
EXPECT_CALL(client_, GetDriver()).WillRepeatedly(Return(&driver_)); |
manager_.reset(new TestPasswordManager(&client_)); |
@@ -123,11 +118,6 @@ class PasswordManagerTest : public ChromeRenderViewHostTestHarness { |
virtual void TearDown() { |
store_->Shutdown(); |
store_ = NULL; |
- |
- // Destroy the PasswordManager before tearing down the Profile to avoid |
- // crashes due to prefs accesses. |
- manager_.reset(); |
- ChromeRenderViewHostTestHarness::TearDown(); |
} |
PasswordForm MakeSimpleForm() { |
@@ -163,8 +153,7 @@ class PasswordManagerTest : public ChromeRenderViewHostTestHarness { |
// Reproduction of the form present on twitter's failed login page. |
PasswordForm MakeTwitterFailedLoginForm() { |
PasswordForm form; |
- form.origin = |
- GURL("https://twitter.com/login/error?redirect_after_login"); |
+ form.origin = GURL("https://twitter.com/login/error?redirect_after_login"); |
form.action = GURL("https://twitter.com/sessions"); |
form.username_element = ASCIIToUTF16("EmailField"); |
form.password_element = ASCIIToUTF16("PasswdField"); |
@@ -214,6 +203,7 @@ class PasswordManagerTest : public ChromeRenderViewHostTestHarness { |
submitted_form_ = form; |
} |
+ TestingPrefServiceSimple prefs_; |
scoped_refptr<MockPasswordStore> store_; |
MockPasswordManagerClient client_; |
MockPasswordManagerDriver driver_; |
@@ -222,13 +212,11 @@ class PasswordManagerTest : public ChromeRenderViewHostTestHarness { |
}; |
MATCHER_P(FormMatches, form, "") { |
- return form.signon_realm == arg.signon_realm && |
- form.origin == arg.origin && |
+ return form.signon_realm == arg.signon_realm && form.origin == arg.origin && |
form.action == arg.action && |
form.username_element == arg.username_element && |
form.password_element == arg.password_element && |
- form.password_autocomplete_set == |
- arg.password_autocomplete_set && |
+ form.password_autocomplete_set == arg.password_autocomplete_set && |
form.submit_element == arg.submit_element; |
} |
@@ -241,7 +229,7 @@ TEST_F(PasswordManagerTest, FormSubmitEmptyStore) { |
std::vector<PasswordForm> observed; |
PasswordForm form(MakeSimpleForm()); |
observed.push_back(form); |
- manager()->OnPasswordFormsParsed(observed); // The initial load. |
+ manager()->OnPasswordFormsParsed(observed); // The initial load. |
manager()->OnPasswordFormsRendered(observed); // The initial layout. |
// And the form submit contract is to call ProvisionallySavePassword. |
@@ -253,7 +241,7 @@ TEST_F(PasswordManagerTest, FormSubmitEmptyStore) { |
// Now the password manager waits for the navigation to complete. |
observed.clear(); |
- manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
+ manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
manager()->OnPasswordFormsRendered(observed); // The post-navigation layout. |
ASSERT_TRUE(form_to_save.get()); |
@@ -273,7 +261,7 @@ TEST_F(PasswordManagerTest, GeneratedPasswordFormSubmitEmptyStore) { |
std::vector<PasswordForm> observed; |
PasswordForm form(MakeSimpleForm()); |
observed.push_back(form); |
- manager()->OnPasswordFormsParsed(observed); // The initial load. |
+ manager()->OnPasswordFormsParsed(observed); // The initial load. |
manager()->OnPasswordFormsRendered(observed); // The initial layout. |
// Simulate the user generating the password and submitting the form. |
@@ -288,7 +276,7 @@ TEST_F(PasswordManagerTest, GeneratedPasswordFormSubmitEmptyStore) { |
// Now the password manager waits for the navigation to complete. |
observed.clear(); |
- manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
+ manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
manager()->OnPasswordFormsRendered(observed); // The post-navigation layout. |
} |
@@ -307,7 +295,7 @@ TEST_F(PasswordManagerTest, FormSubmitNoGoodMatch) { |
std::vector<PasswordForm> observed; |
PasswordForm form(MakeSimpleForm()); |
observed.push_back(form); |
- manager()->OnPasswordFormsParsed(observed); // The initial load. |
+ manager()->OnPasswordFormsParsed(observed); // The initial load. |
manager()->OnPasswordFormsRendered(observed); // The initial layout. |
manager()->ProvisionallySavePassword(form); |
@@ -318,7 +306,7 @@ TEST_F(PasswordManagerTest, FormSubmitNoGoodMatch) { |
// Now the password manager waits for the navigation to complete. |
observed.clear(); |
- manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
+ manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
manager()->OnPasswordFormsRendered(observed); // The post-navigation layout. |
ASSERT_TRUE(form_to_save.get()); |
@@ -336,14 +324,14 @@ TEST_F(PasswordManagerTest, FormSeenThenLeftPage) { |
std::vector<PasswordForm> observed; |
PasswordForm form(MakeSimpleForm()); |
observed.push_back(form); |
- manager()->OnPasswordFormsParsed(observed); // The initial load. |
+ manager()->OnPasswordFormsParsed(observed); // The initial load. |
manager()->OnPasswordFormsRendered(observed); // The initial layout. |
// No message from the renderer that a password was submitted. No |
// expected calls. |
EXPECT_CALL(client_, PromptUserToSavePassword(_)).Times(0); |
observed.clear(); |
- manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
+ manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
manager()->OnPasswordFormsRendered(observed); // The post-navigation layout. |
} |
@@ -357,7 +345,7 @@ TEST_F(PasswordManagerTest, FormSubmitAfterNavigateInPage) { |
std::vector<PasswordForm> observed; |
PasswordForm form(MakeSimpleForm()); |
observed.push_back(form); |
- manager()->OnPasswordFormsParsed(observed); // The initial load. |
+ manager()->OnPasswordFormsParsed(observed); // The initial load. |
manager()->OnPasswordFormsRendered(observed); // The initial layout. |
// Simulate navigating in the page. |
@@ -372,7 +360,7 @@ TEST_F(PasswordManagerTest, FormSubmitAfterNavigateInPage) { |
.WillOnce(WithArg<0>(SaveToScopedPtr(&form_to_save))); |
observed.clear(); |
- manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
+ manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
manager()->OnPasswordFormsRendered(observed); // The post-navigation layout. |
ASSERT_FALSE(NULL == form_to_save.get()); |
@@ -440,7 +428,7 @@ TEST_F(PasswordManagerTest, FormSubmitFailedLogin) { |
std::vector<PasswordForm> observed; |
PasswordForm form(MakeSimpleForm()); |
observed.push_back(form); |
- manager()->OnPasswordFormsParsed(observed); // The initial load. |
+ manager()->OnPasswordFormsParsed(observed); // The initial load. |
manager()->OnPasswordFormsRendered(observed); // The initial layout. |
manager()->ProvisionallySavePassword(form); |
@@ -461,7 +449,7 @@ TEST_F(PasswordManagerTest, FormSubmitInvisibleLogin) { |
std::vector<PasswordForm> observed; |
PasswordForm form(MakeSimpleForm()); |
observed.push_back(form); |
- manager()->OnPasswordFormsParsed(observed); // The initial load. |
+ manager()->OnPasswordFormsParsed(observed); // The initial load. |
manager()->OnPasswordFormsRendered(observed); // The initial layout. |
manager()->ProvisionallySavePassword(form); |
@@ -498,19 +486,18 @@ TEST_F(PasswordManagerTest, InitiallyInvisibleForm) { |
observed.clear(); |
manager()->OnPasswordFormsRendered(observed); // The initial layout. |
- manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
+ manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
manager()->OnPasswordFormsRendered(observed); // The post-navigation layout. |
} |
TEST_F(PasswordManagerTest, SavingDependsOnManagerEnabledPreference) { |
// Test that saving passwords depends on the password manager enabled |
// preference. |
- TestingPrefServiceSyncable* prefService = profile()->GetTestingPrefService(); |
- prefService->SetUserPref(prefs::kPasswordManagerEnabled, |
- base::Value::CreateBooleanValue(true)); |
+ prefs_.SetUserPref(prefs::kPasswordManagerEnabled, |
+ base::Value::CreateBooleanValue(true)); |
EXPECT_TRUE(manager()->IsSavingEnabled()); |
- prefService->SetUserPref(prefs::kPasswordManagerEnabled, |
- base::Value::CreateBooleanValue(false)); |
+ prefs_.SetUserPref(prefs::kPasswordManagerEnabled, |
+ base::Value::CreateBooleanValue(false)); |
EXPECT_FALSE(manager()->IsSavingEnabled()); |
} |
@@ -520,9 +507,8 @@ TEST_F(PasswordManagerTest, FillPasswordsOnDisabledManager) { |
std::vector<PasswordForm*> result; |
PasswordForm* existing = new PasswordForm(MakeSimpleForm()); |
result.push_back(existing); |
- TestingPrefServiceSyncable* prefService = profile()->GetTestingPrefService(); |
- prefService->SetUserPref(prefs::kPasswordManagerEnabled, |
- base::Value::CreateBooleanValue(false)); |
+ prefs_.SetUserPref(prefs::kPasswordManagerEnabled, |
+ base::Value::CreateBooleanValue(false)); |
EXPECT_CALL(driver_, FillPasswordForm(_)); |
EXPECT_CALL(*store_.get(), |
GetLogins(_, testing::Eq(PasswordStore::DISALLOW_PROMPT), _)) |
@@ -544,7 +530,7 @@ TEST_F(PasswordManagerTest, FormSavedWithAutocompleteOff) { |
PasswordForm form(MakeSimpleForm()); |
form.password_autocomplete_set = false; |
observed.push_back(form); |
- manager()->OnPasswordFormsParsed(observed); // The initial load. |
+ manager()->OnPasswordFormsParsed(observed); // The initial load. |
manager()->OnPasswordFormsRendered(observed); // The initial layout. |
// And the form submit contract is to call ProvisionallySavePassword. |
@@ -558,7 +544,7 @@ TEST_F(PasswordManagerTest, FormSavedWithAutocompleteOff) { |
// Now the password manager waits for the navigation to complete. |
observed.clear(); |
- manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
+ manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
manager()->OnPasswordFormsRendered(observed); // The post-navigation layout. |
ASSERT_TRUE(form_to_save.get()); |
@@ -575,7 +561,7 @@ TEST_F(PasswordManagerTest, GeneratedPasswordFormSavedAutocompleteOff) { |
PasswordForm form(MakeSimpleForm()); |
form.password_autocomplete_set = false; |
observed.push_back(form); |
- manager()->OnPasswordFormsParsed(observed); // The initial load. |
+ manager()->OnPasswordFormsParsed(observed); // The initial load. |
manager()->OnPasswordFormsRendered(observed); // The initial layout. |
// Simulate the user generating the password and submitting the form. |
@@ -590,7 +576,7 @@ TEST_F(PasswordManagerTest, GeneratedPasswordFormSavedAutocompleteOff) { |
// Now the password manager waits for the navigation to complete. |
observed.clear(); |
- manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
+ manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
manager()->OnPasswordFormsRendered(observed); // The post-navigation layout. |
} |
@@ -613,7 +599,7 @@ TEST_F(PasswordManagerTest, PasswordFormReappearance) { |
std::vector<PasswordForm> observed; |
PasswordForm login_form(MakeTwitterLoginForm()); |
observed.push_back(login_form); |
- manager()->OnPasswordFormsParsed(observed); // The initial load. |
+ manager()->OnPasswordFormsParsed(observed); // The initial load. |
manager()->OnPasswordFormsRendered(observed); // The initial layout. |
manager()->ProvisionallySavePassword(login_form); |