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

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

Issue 733463003: Show user credentials chooser bubble. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge with trunk Created 6 years, 1 month 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 1eb16c2f927e6a5e8711dcfff8df8878fb955526..ec81b5f704ee6e9d5119cd799d655fea1bf0ba48 100644
--- a/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/bind.h"
#include "base/prefs/pref_service.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
@@ -13,6 +14,7 @@
#include "chrome/test/base/chrome_render_view_host_test_harness.h"
#include "chrome/test/base/testing_profile.h"
#include "components/autofill/core/common/password_form.h"
+#include "components/password_manager/content/common/credential_manager_types.h"
#include "components/password_manager/core/browser/password_form_manager.h"
#include "components/password_manager/core/browser/stub_password_manager_client.h"
#include "components/password_manager/core/browser/stub_password_manager_driver.h"
@@ -55,6 +57,8 @@ class ManagePasswordsUIControllerTest : public ChromeRenderViewHostTestHarness {
new ManagePasswordsUIControllerMock(web_contents());
test_form_.origin = GURL("http://example.com");
+ test_form_.username_value = base::ASCIIToUTF16("username");
+ test_form_.password_value = base::ASCIIToUTF16("12345");
// We need to be on a "webby" URL for most tests.
content::WebContentsTester::For(web_contents())
@@ -62,14 +66,22 @@ class ManagePasswordsUIControllerTest : public ChromeRenderViewHostTestHarness {
}
autofill::PasswordForm& test_form() { return test_form_; }
+ password_manager::CredentialInfo* credential_info() const {
+ return credential_info_.get();
+ }
ManagePasswordsUIControllerMock* controller() {
return static_cast<ManagePasswordsUIControllerMock*>(
ManagePasswordsUIController::FromWebContents(web_contents()));
}
+ void CredentialCallback(const password_manager::CredentialInfo& info) {
+ credential_info_.reset(new password_manager::CredentialInfo(info));
+ }
+
private:
autofill::PasswordForm test_form_;
+ scoped_ptr<password_manager::CredentialInfo> credential_info_;
};
TEST_F(ManagePasswordsUIControllerTest, DefaultState) {
@@ -324,3 +336,46 @@ TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) {
controller()->UpdateIconAndBubbleState(&mock);
EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state());
}
+
+TEST_F(ManagePasswordsUIControllerTest, ChooseCredential) {
+ ScopedVector<autofill::PasswordForm> credentials;
+ credentials.push_back(new autofill::PasswordForm(test_form()));
+ EXPECT_TRUE(controller()->OnChooseCredentials(
+ credentials.Pass(),
+ base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback,
+ base::Unretained(this))));
+ EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_AND_BUBBLE_STATE,
+ controller()->state());
+ EXPECT_FALSE(controller()->PasswordPendingUserDecision());
+ EXPECT_EQ(test_form().origin, controller()->origin());
+ EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches());
+
+ ManagePasswordsIconMock mock;
+ controller()->UpdateIconAndBubbleState(&mock);
+ EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state());
+
+ controller()->ManagePasswordsUIController::ChooseCredential(true,
+ test_form());
+ EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state());
+ ASSERT_TRUE(credential_info());
+ EXPECT_EQ(test_form().username_value, credential_info()->id);
+ EXPECT_EQ(test_form().password_value, credential_info()->password);
+ EXPECT_EQ(password_manager::CREDENTIAL_TYPE_LOCAL, credential_info()->type);
+}
+
+TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialCancel) {
+ ScopedVector<autofill::PasswordForm> credentials;
+ credentials.push_back(new autofill::PasswordForm(test_form()));
+ EXPECT_TRUE(controller()->OnChooseCredentials(
+ credentials.Pass(),
+ base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback,
+ base::Unretained(this))));
+ EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_AND_BUBBLE_STATE,
+ controller()->state());
+
+ controller()->ManagePasswordsUIController::ChooseCredential(false,
+ test_form());
+ EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state());
+ ASSERT_TRUE(credential_info());
+ EXPECT_EQ(password_manager::CREDENTIAL_TYPE_EMPTY, credential_info()->type);
+}

Powered by Google App Engine
This is Rietveld 408576698