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

Unified Diff: chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc

Issue 1009953002: Integrate ManagePasswordsState into ManagePasswordsUIController. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed the comments Created 5 years, 9 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/ui/passwords/manage_passwords_ui_controller_unittest.cc
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
index ea97c61823c588f4c2dc089330f8780c89905891..30be83e7ee376a56d60124547467d36f893da93d 100644
--- a/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
@@ -19,16 +19,71 @@
#include "components/password_manager/core/browser/stub_password_manager_client.h"
#include "components/password_manager/core/browser/stub_password_manager_driver.h"
#include "components/password_manager/core/common/password_manager_ui.h"
+#include "content/public/browser/navigation_details.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "content/public/test/web_contents_tester.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
+using ::testing::ElementsAre;
+using ::testing::Pointee;
+
namespace {
const int64 kSlowNavigationDelayInMS = 2000;
const int64 kQuickNavigationDelayInMS = 500;
+// This sublass is used to disable some code paths which are not essential for
+// testing.
+class TestManagePasswordsUIController : public ManagePasswordsUIController {
+ public:
+ TestManagePasswordsUIController(
+ content::WebContents* contents,
+ password_manager::PasswordManagerClient* client);
+ ~TestManagePasswordsUIController() override;
+
+ base::TimeDelta Elapsed() const override;
+ void SetElapsed(base::TimeDelta elapsed) { elapsed_ = elapsed; }
+
+ using ManagePasswordsUIController::DidNavigateMainFrame;
+
+ private:
+ void UpdateBubbleAndIconVisibility() override;
+ void UpdateAndroidAccountChooserInfoBarVisibility() override;
+ void SavePasswordInternal() override {}
+ void NeverSavePasswordInternal() override {}
+
+ base::TimeDelta elapsed_;
+};
+
+TestManagePasswordsUIController::TestManagePasswordsUIController(
+ content::WebContents* contents,
+ password_manager::PasswordManagerClient* client)
+ : ManagePasswordsUIController(contents) {
+ // Do not silently replace an existing ManagePasswordsUIController because it
+ // unregisters itself in WebContentsDestroyed().
+ EXPECT_FALSE(contents->GetUserData(UserDataKey()));
+ contents->SetUserData(UserDataKey(), this);
+ set_client(client);
+}
+
+TestManagePasswordsUIController::~TestManagePasswordsUIController() {
+}
+
+base::TimeDelta TestManagePasswordsUIController::Elapsed() const {
+ return elapsed_;
+}
+
+void TestManagePasswordsUIController::UpdateBubbleAndIconVisibility() {
+ ManagePasswordsUIController::UpdateBubbleAndIconVisibility();
+ OnBubbleShown();
+}
+
+void TestManagePasswordsUIController::
+ UpdateAndroidAccountChooserInfoBarVisibility() {
+ OnBubbleShown();
+}
+
} // namespace
class ManagePasswordsUIControllerTest : public ChromeRenderViewHostTestHarness {
@@ -41,7 +96,7 @@ class ManagePasswordsUIControllerTest : public ChromeRenderViewHostTestHarness {
// Create the test UIController here so that it's bound to
// |test_web_contents_|, and will be retrieved correctly via
// ManagePasswordsUIController::FromWebContents in |controller()|.
- new ManagePasswordsUIControllerMock(web_contents());
+ new TestManagePasswordsUIController(web_contents(), &client_);
test_local_form_.origin = GURL("http://example.com");
test_local_form_.username_value = base::ASCIIToUTF16("username");
@@ -62,8 +117,8 @@ class ManagePasswordsUIControllerTest : public ChromeRenderViewHostTestHarness {
return credential_info_.get();
}
- ManagePasswordsUIControllerMock* controller() {
- return static_cast<ManagePasswordsUIControllerMock*>(
+ TestManagePasswordsUIController* controller() {
+ return static_cast<TestManagePasswordsUIController*>(
ManagePasswordsUIController::FromWebContents(web_contents()));
}
@@ -71,12 +126,24 @@ class ManagePasswordsUIControllerTest : public ChromeRenderViewHostTestHarness {
credential_info_.reset(new password_manager::CredentialInfo(info));
}
+ scoped_ptr<password_manager::PasswordFormManager> CreateFormManager();
+
private:
+ password_manager::StubPasswordManagerClient client_;
+
autofill::PasswordForm test_local_form_;
autofill::PasswordForm test_federated_form_;
scoped_ptr<password_manager::CredentialInfo> credential_info_;
};
+scoped_ptr<password_manager::PasswordFormManager>
+ManagePasswordsUIControllerTest::CreateFormManager() {
+ ScopedVector<autofill::PasswordForm> stored_forms;
+ stored_forms.push_back(new autofill::PasswordForm(test_local_form()));
+ return ManagePasswordsUIControllerMock::CreateFormManager(
+ &client_, test_local_form(), stored_forms.Pass());
+}
+
TEST_F(ManagePasswordsUIControllerTest, DefaultState) {
EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state());
EXPECT_FALSE(controller()->PasswordPendingUserDecision());
@@ -88,7 +155,7 @@ TEST_F(ManagePasswordsUIControllerTest, DefaultState) {
}
TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) {
- base::string16 kTestUsername = base::ASCIIToUTF16("test_username");
+ base::string16 kTestUsername = test_local_form().username_value;
autofill::PasswordFormMap map;
map[kTestUsername] = &test_local_form();
controller()->OnPasswordAutofilled(map);
@@ -96,12 +163,11 @@ TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) {
EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state());
EXPECT_FALSE(controller()->PasswordPendingUserDecision());
EXPECT_EQ(test_local_form().origin, controller()->origin());
- EXPECT_EQ(1u, controller()->best_matches().size());
- ASSERT_EQ(1u, controller()->best_matches().count(kTestUsername));
+ ASSERT_EQ(1u, controller()->GetCurrentForms().size());
+ EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value);
// Controller should store a separate copy of the form as it doesn't own it.
- EXPECT_NE(&test_local_form(),
- controller()->best_matches().find(kTestUsername)->second);
+ EXPECT_NE(&test_local_form(), controller()->GetCurrentForms()[0]);
ManagePasswordsIconMock mock;
controller()->UpdateIconAndBubbleState(&mock);
@@ -109,11 +175,8 @@ TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) {
}
TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) {
- password_manager::StubPasswordManagerClient client;
- password_manager::StubPasswordManagerDriver driver;
scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
- new password_manager::PasswordFormManager(
- NULL, &client, driver.AsWeakPtr(), test_local_form(), false));
+ CreateFormManager());
controller()->OnPasswordSubmitted(test_form_manager.Pass());
EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE,
controller()->state());
@@ -131,11 +194,11 @@ TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) {
}
TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) {
- password_manager::StubPasswordManagerClient client;
- password_manager::StubPasswordManagerDriver driver;
scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
- new password_manager::PasswordFormManager(
- NULL, &client, driver.AsWeakPtr(), test_local_form(), false));
+ CreateFormManager());
+ test_form_manager->ProvisionallySave(
+ test_local_form(),
+ password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
controller()->OnPasswordSubmitted(test_form_manager.Pass());
ManagePasswordsIconMock mock;
@@ -146,11 +209,11 @@ TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) {
}
TEST_F(ManagePasswordsUIControllerTest, PasswordBlacklisted) {
- password_manager::StubPasswordManagerClient client;
- password_manager::StubPasswordManagerDriver driver;
scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
- new password_manager::PasswordFormManager(
- NULL, &client, driver.AsWeakPtr(), test_local_form(), false));
+ CreateFormManager());
+ test_form_manager->ProvisionallySave(
+ test_local_form(),
+ password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
controller()->OnPasswordSubmitted(test_form_manager.Pass());
ManagePasswordsIconMock mock;
@@ -161,11 +224,8 @@ TEST_F(ManagePasswordsUIControllerTest, PasswordBlacklisted) {
}
TEST_F(ManagePasswordsUIControllerTest, QuickNavigations) {
- password_manager::StubPasswordManagerClient client;
- password_manager::StubPasswordManagerDriver driver;
scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
- new password_manager::PasswordFormManager(
- NULL, &client, driver.AsWeakPtr(), test_local_form(), false));
+ CreateFormManager());
controller()->OnPasswordSubmitted(test_form_manager.Pass());
ManagePasswordsIconMock mock;
controller()->UpdateIconAndBubbleState(&mock);
@@ -187,11 +247,8 @@ TEST_F(ManagePasswordsUIControllerTest, QuickNavigations) {
}
TEST_F(ManagePasswordsUIControllerTest, SlowNavigations) {
- password_manager::StubPasswordManagerClient client;
- password_manager::StubPasswordManagerDriver driver;
scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
- new password_manager::PasswordFormManager(
- NULL, &client, driver.AsWeakPtr(), test_local_form(), false));
+ CreateFormManager());
controller()->OnPasswordSubmitted(test_form_manager.Pass());
ManagePasswordsIconMock mock;
controller()->UpdateIconAndBubbleState(&mock);
@@ -214,11 +271,8 @@ TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) {
content::WebContentsTester::For(web_contents())
->NavigateAndCommit(GURL("chrome://sign-in"));
- password_manager::StubPasswordManagerClient client;
- password_manager::StubPasswordManagerDriver driver;
scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
- new password_manager::PasswordFormManager(
- NULL, &client, driver.AsWeakPtr(), test_local_form(), false));
+ CreateFormManager());
controller()->OnPasswordSubmitted(test_form_manager.Pass());
EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state());
EXPECT_FALSE(controller()->PasswordPendingUserDecision());
@@ -235,7 +289,7 @@ TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) {
TEST_F(ManagePasswordsUIControllerTest, BlacklistBlockedAutofill) {
test_local_form().blacklisted_by_user = true;
- base::string16 kTestUsername = base::ASCIIToUTF16("test_username");
+ base::string16 kTestUsername = test_local_form().username_value;
autofill::PasswordFormMap map;
map[kTestUsername] = &test_local_form();
controller()->OnBlacklistBlockedAutofill(map);
@@ -243,12 +297,11 @@ TEST_F(ManagePasswordsUIControllerTest, BlacklistBlockedAutofill) {
EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, controller()->state());
EXPECT_FALSE(controller()->PasswordPendingUserDecision());
EXPECT_EQ(test_local_form().origin, controller()->origin());
- EXPECT_EQ(1u, controller()->best_matches().size());
- ASSERT_EQ(1u, controller()->best_matches().count(kTestUsername));
+ ASSERT_EQ(1u, controller()->GetCurrentForms().size());
+ EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value);
// Controller should store a separate copy of the form as it doesn't own it.
- EXPECT_NE(&test_local_form(),
- controller()->best_matches().find(kTestUsername)->second);
+ EXPECT_NE(&test_local_form(), controller()->GetCurrentForms()[0]);
ManagePasswordsIconMock mock;
controller()->UpdateIconAndBubbleState(&mock);
@@ -259,6 +312,7 @@ TEST_F(ManagePasswordsUIControllerTest, ClickedUnblacklist) {
base::string16 kTestUsername = base::ASCIIToUTF16("test_username");
autofill::PasswordFormMap map;
map[kTestUsername] = &test_local_form();
+ test_local_form().blacklisted_by_user = true;
controller()->OnBlacklistBlockedAutofill(map);
controller()->UnblacklistSite();
@@ -314,11 +368,8 @@ TEST_F(ManagePasswordsUIControllerTest, BlacklistedElsewhere) {
}
TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) {
- password_manager::StubPasswordManagerClient client;
- password_manager::StubPasswordManagerDriver driver;
scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
- new password_manager::PasswordFormManager(
- NULL, &client, driver.AsWeakPtr(), test_local_form(), false));
+ CreateFormManager());
controller()->OnAutomaticPasswordSave(test_form_manager.Pass());
EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->state());
@@ -342,7 +393,8 @@ TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) {
controller()->state());
EXPECT_FALSE(controller()->PasswordPendingUserDecision());
EXPECT_EQ(origin, controller()->origin());
- EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches());
+ EXPECT_THAT(controller()->GetCurrentForms(),
+ ElementsAre(Pointee(test_local_form())));
ManagePasswordsIconMock mock;
controller()->UpdateIconAndBubbleState(&mock);
@@ -352,7 +404,7 @@ TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) {
test_local_form(),
password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL);
controller()->OnBubbleHidden();
- EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state());
+ EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state());
ASSERT_TRUE(credential_info());
EXPECT_EQ(test_local_form().username_value, credential_info()->id);
EXPECT_EQ(test_local_form().password_value, credential_info()->password);
@@ -375,7 +427,8 @@ TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocalButFederated) {
controller()->state());
EXPECT_FALSE(controller()->PasswordPendingUserDecision());
EXPECT_EQ(origin, controller()->origin());
- EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches());
+ EXPECT_THAT(controller()->GetCurrentForms(),
+ ElementsAre(Pointee(test_federated_form())));
ManagePasswordsIconMock mock;
controller()->UpdateIconAndBubbleState(&mock);
@@ -385,7 +438,7 @@ TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocalButFederated) {
test_federated_form(),
password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL);
controller()->OnBubbleHidden();
- EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state());
+ EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state());
ASSERT_TRUE(credential_info());
EXPECT_EQ(test_federated_form().username_value, credential_info()->id);
EXPECT_EQ(test_federated_form().federation_url,
@@ -408,7 +461,7 @@ TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialFederated) {
EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE,
controller()->state());
EXPECT_FALSE(controller()->PasswordPendingUserDecision());
- EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches());
+ EXPECT_EQ(0u, controller()->GetCurrentForms().size());
EXPECT_EQ(origin, controller()->origin());
ManagePasswordsIconMock mock;
@@ -419,7 +472,7 @@ TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialFederated) {
test_local_form(),
password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED);
controller()->OnBubbleHidden();
- EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state());
+ EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state());
ASSERT_TRUE(credential_info());
EXPECT_EQ(test_local_form().username_value, credential_info()->id);
EXPECT_TRUE(credential_info()->password.empty());
@@ -443,7 +496,7 @@ TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialCancel) {
test_local_form(),
password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY);
controller()->OnBubbleHidden();
- EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state());
+ EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state());
ASSERT_TRUE(credential_info());
EXPECT_TRUE(credential_info()->federation.is_empty());
EXPECT_TRUE(credential_info()->password.empty());
@@ -457,8 +510,8 @@ TEST_F(ManagePasswordsUIControllerTest, AutoSignin) {
controller()->OnAutoSignin(local_credentials.Pass());
EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->state());
EXPECT_EQ(test_local_form().origin, controller()->origin());
- ASSERT_FALSE(controller()->local_credentials_forms().empty());
- EXPECT_EQ(test_local_form(), *controller()->local_credentials_forms()[0]);
+ ASSERT_FALSE(controller()->GetCurrentForms().empty());
+ EXPECT_EQ(test_local_form(), *controller()->GetCurrentForms()[0]);
ManagePasswordsIconMock mock;
controller()->UpdateIconAndBubbleState(&mock);
EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, mock.state());

Powered by Google App Engine
This is Rietveld 408576698