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

Unified Diff: chrome/browser/ui/cocoa/passwords/manage_password_item_view_controller_unittest.mm

Issue 1409223005: Change the password bubble on Mac so the columns are resized dynamically. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix the crash Created 5 years, 2 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/cocoa/passwords/manage_password_item_view_controller_unittest.mm
diff --git a/chrome/browser/ui/cocoa/passwords/manage_password_item_view_controller_unittest.mm b/chrome/browser/ui/cocoa/passwords/manage_password_item_view_controller_unittest.mm
index fb2bbd1d03f2c931cff2937e0e7abccb90fe2ee6..5ecd0806acbbaa70bc9aa0c2d392b0cfb3df148e 100644
--- a/chrome/browser/ui/cocoa/passwords/manage_password_item_view_controller_unittest.mm
+++ b/chrome/browser/ui/cocoa/passwords/manage_password_item_view_controller_unittest.mm
@@ -12,6 +12,7 @@
#include "chrome/browser/ui/cocoa/cocoa_test_helper.h"
#import "chrome/browser/ui/cocoa/passwords/manage_password_item_view_controller.h"
#include "chrome/browser/ui/cocoa/passwords/manage_passwords_controller_test.h"
+#import "chrome/browser/ui/cocoa/passwords/password_item_views.h"
#include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h"
#include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h"
#include "components/password_manager/core/browser/mock_password_store.h"
@@ -25,17 +26,12 @@ using namespace testing;
namespace {
NSString* const kItemTestUsername = @"foo";
NSString* const kItemTestPassword = @"bar";
+NSString* const kFederation = @"https://google.com/idp";
} // namespace
-MATCHER_P(PasswordFormEq, form, "") {
- return form.username_value == arg.username_value &&
- form.password_value == arg.password_value;
-}
-
-class ManagePasswordItemViewControllerTest
- : public ManagePasswordsControllerTest {
+class PasswordsListViewControllerTest : public ManagePasswordsControllerTest {
public:
- ManagePasswordItemViewControllerTest() {}
+ PasswordsListViewControllerTest() {}
void SetUp() override {
ManagePasswordsControllerTest::SetUp();
@@ -43,107 +39,144 @@ class ManagePasswordItemViewControllerTest
profile(),
password_manager::BuildPasswordStoreService<
content::BrowserContext, password_manager::MockPasswordStore>);
- ui_controller()->SetPendingPassword(credentials());
}
- ManagePasswordItemViewController* controller() {
- if (!controller_) {
- controller_.reset([[ManagePasswordItemViewController alloc]
- initWithModel:model()
- passwordForm:ui_controller()->PendingPassword()
- position:password_manager::ui::FIRST_ITEM]);
- }
- return controller_.get();
+ void SetUpManageState(
+ const std::vector<const autofill::PasswordForm*>& forms) {
+ model()->set_state(password_manager::ui::MANAGE_STATE);
+ controller_.reset([[PasswordsListViewController alloc]
+ initWithModel:model()
+ forms:forms]);
+ }
+
+ void SetUpManageState(const autofill::PasswordForm* form) {
+ model()->set_state(password_manager::ui::PENDING_PASSWORD_STATE);
+ controller_.reset([[PasswordsListViewController alloc]
+ initWithModel:model()
+ forms:std::vector<const autofill::PasswordForm*>(1, form)]);
}
- autofill::PasswordForm credentials() {
+ ManagePasswordItemViewController* GetControllerAt(unsigned i) {
+ return base::mac::ObjCCast<ManagePasswordItemViewController>(
+ [[controller_ itemViews] objectAtIndex:i]);
+ }
+
+ autofill::PasswordForm local_credential() {
autofill::PasswordForm form;
form.username_value = base::SysNSStringToUTF16(kItemTestUsername);
form.password_value = base::SysNSStringToUTF16(kItemTestPassword);
return form;
}
+ autofill::PasswordForm federated_credential() {
+ autofill::PasswordForm form;
+ form.username_value = base::SysNSStringToUTF16(kItemTestUsername);
+ form.federation_url = GURL(base::SysNSStringToUTF16(kFederation));
+ return form;
+ }
+
password_manager::MockPasswordStore* mockStore() {
password_manager::PasswordStore* store =
- PasswordStoreFactory::GetForProfile(
- profile(), ServiceAccessType::EXPLICIT_ACCESS).get();
- password_manager::MockPasswordStore* mockStore =
- static_cast<password_manager::MockPasswordStore*>(store);
- return mockStore;
+ PasswordStoreFactory::GetForProfile(profile(),
+ ServiceAccessType::EXPLICIT_ACCESS)
+ .get();
+ return static_cast<password_manager::MockPasswordStore*>(store);
}
private:
- base::scoped_nsobject<ManagePasswordItemViewController> controller_;
- DISALLOW_COPY_AND_ASSIGN(ManagePasswordItemViewControllerTest);
+ base::scoped_nsobject<PasswordsListViewController> controller_;
+
+ DISALLOW_COPY_AND_ASSIGN(PasswordsListViewControllerTest);
};
-TEST_F(ManagePasswordItemViewControllerTest, ManageStateShouldHaveManageView) {
- model()->set_state(password_manager::ui::MANAGE_STATE);
- EXPECT_EQ(MANAGE_PASSWORD_ITEM_STATE_MANAGE, [controller() state]);
- EXPECT_NSEQ([ManagePasswordItemManageView class],
- [[controller() contentView] class]);
+TEST_F(PasswordsListViewControllerTest, ManageStateShouldHaveManageView) {
+ ScopedVector<const autofill::PasswordForm> forms;
+ forms.push_back(new autofill::PasswordForm(local_credential()));
+ forms.push_back(new autofill::PasswordForm(federated_credential()));
+ SetUpManageState(forms.get());
+
+ EXPECT_EQ(MANAGE_PASSWORD_ITEM_STATE_MANAGE, [GetControllerAt(0) state]);
+ EXPECT_EQ(MANAGE_PASSWORD_ITEM_STATE_MANAGE, [GetControllerAt(1) state]);
+ EXPECT_NSEQ([ManagePasswordItemView class],
+ [[GetControllerAt(0) contentView] class]);
+ EXPECT_NSEQ([ManagePasswordItemView class],
+ [[GetControllerAt(1) contentView] class]);
}
-TEST_F(ManagePasswordItemViewControllerTest,
+TEST_F(PasswordsListViewControllerTest,
ClickingDeleteShouldShowUndoViewAndDeletePassword) {
- EXPECT_CALL(*mockStore(), RemoveLogin(PasswordFormEq(credentials())));
- model()->set_state(password_manager::ui::MANAGE_STATE);
-
- ManagePasswordItemManageView* manageView =
- base::mac::ObjCCast<ManagePasswordItemManageView>(
- controller().contentView);
+ ScopedVector<const autofill::PasswordForm> forms;
+ forms.push_back(new autofill::PasswordForm(local_credential()));
+ SetUpManageState(forms.get());
+
+ ManagePasswordItemView* manageView =
+ base::mac::ObjCCast<ManagePasswordItemView>(
+ [GetControllerAt(0) contentView]);
+ EXPECT_CALL(*mockStore(), RemoveLogin(local_credential()));
[manageView.deleteButton performClick:nil];
- EXPECT_NSEQ([ManagePasswordItemUndoView class],
- [controller().contentView class]);
+ EXPECT_NSEQ([UndoPasswordItemView class],
+ [[GetControllerAt(0) contentView] class]);
}
-TEST_F(ManagePasswordItemViewControllerTest,
+TEST_F(PasswordsListViewControllerTest,
ClickingUndoShouldShowManageViewAndAddPassword) {
- EXPECT_CALL(*mockStore(), RemoveLogin(PasswordFormEq(credentials())));
- model()->set_state(password_manager::ui::MANAGE_STATE);
-
- ManagePasswordItemManageView* manageView =
- base::mac::ObjCCast<ManagePasswordItemManageView>(
- controller().contentView);
+ ScopedVector<const autofill::PasswordForm> forms;
+ forms.push_back(new autofill::PasswordForm(local_credential()));
+ SetUpManageState(forms.get());
+
+ ManagePasswordItemView* manageView =
+ base::mac::ObjCCast<ManagePasswordItemView>(
+ [GetControllerAt(0) contentView]);
+ EXPECT_CALL(*mockStore(), RemoveLogin(local_credential()));
[manageView.deleteButton performClick:nil];
- EXPECT_CALL(*mockStore(), AddLogin(PasswordFormEq(credentials())));
- ManagePasswordItemUndoView* undoView =
- base::mac::ObjCCast<ManagePasswordItemUndoView>(controller().contentView);
+ UndoPasswordItemView* undoView = base::mac::ObjCCast<UndoPasswordItemView>(
+ [GetControllerAt(0) contentView]);
+ EXPECT_CALL(*mockStore(), AddLogin(local_credential()));
[undoView.undoButton performClick:nil];
- EXPECT_NSEQ([ManagePasswordItemManageView class],
- [controller().contentView class]);
+ EXPECT_NSEQ([ManagePasswordItemView class],
+ [[GetControllerAt(0) contentView] class]);
}
-TEST_F(ManagePasswordItemViewControllerTest,
+TEST_F(PasswordsListViewControllerTest,
ManageViewShouldHaveCorrectUsernameAndObscuredPassword) {
- model()->set_state(password_manager::ui::MANAGE_STATE);
- ManagePasswordItemManageView* manageView =
- base::mac::ObjCCast<ManagePasswordItemManageView>(
- [controller() contentView]);
+ ScopedVector<const autofill::PasswordForm> forms;
+ forms.push_back(new autofill::PasswordForm(local_credential()));
+ forms.push_back(new autofill::PasswordForm(federated_credential()));
+ SetUpManageState(forms.get());
+ ManagePasswordItemView* manageView =
+ base::mac::ObjCCast<ManagePasswordItemView>(
+ [GetControllerAt(0) contentView]);
// Ensure the fields are populated properly and the password is obscured.
EXPECT_NSEQ(kItemTestUsername, manageView.usernameField.stringValue);
EXPECT_NSEQ(kItemTestPassword, manageView.passwordField.stringValue);
EXPECT_TRUE([[manageView.passwordField cell] echosBullets]);
+
+ manageView = base::mac::ObjCCast<ManagePasswordItemView>(
+ [GetControllerAt(1) contentView]);
+ EXPECT_NSEQ(kItemTestUsername, manageView.usernameField.stringValue);
+ EXPECT_THAT(base::SysNSStringToUTF8(manageView.passwordField.stringValue),
+ HasSubstr(federated_credential().federation_url.host()));
}
-TEST_F(ManagePasswordItemViewControllerTest,
- PendingStateShouldHavePendingView) {
- model()->set_state(password_manager::ui::PENDING_PASSWORD_STATE);
- EXPECT_EQ(MANAGE_PASSWORD_ITEM_STATE_PENDING, [controller() state]);
- EXPECT_NSEQ([ManagePasswordItemPendingView class],
- [[controller() contentView] class]);
+TEST_F(PasswordsListViewControllerTest, PendingStateShouldHavePendingView) {
+ autofill::PasswordForm form = local_credential();
+ SetUpManageState(&form);
+ EXPECT_EQ(MANAGE_PASSWORD_ITEM_STATE_PENDING, [GetControllerAt(0) state]);
+ EXPECT_NSEQ([PendingPasswordItemView class],
+ [[GetControllerAt(0) contentView] class]);
}
-TEST_F(ManagePasswordItemViewControllerTest,
+TEST_F(PasswordsListViewControllerTest,
PendingViewShouldHaveCorrectUsernameAndObscuredPassword) {
- model()->set_state(password_manager::ui::PENDING_PASSWORD_STATE);
- ManagePasswordItemPendingView* pendingView =
- base::mac::ObjCCast<ManagePasswordItemPendingView>(
- [controller() contentView]);
+ autofill::PasswordForm form = local_credential();
+ SetUpManageState(&form);
+ PendingPasswordItemView* pendingView =
+ base::mac::ObjCCast<PendingPasswordItemView>(
+ [GetControllerAt(0) contentView]);
// Ensure the fields are populated properly and the password is obscured.
EXPECT_NSEQ(kItemTestUsername, pendingView.usernameField.stringValue);
@@ -151,20 +184,16 @@ TEST_F(ManagePasswordItemViewControllerTest,
EXPECT_TRUE([[pendingView.passwordField cell] echosBullets]);
}
-TEST_F(ManagePasswordItemViewControllerTest,
+TEST_F(PasswordsListViewControllerTest,
PendingViewShouldHaveCorrectUsernameAndFederation) {
- model()->set_state(password_manager::ui::PENDING_PASSWORD_STATE);
- autofill::PasswordForm form = credentials();
- GURL federation("https://google.com/idp");
- form.federation_url = federation;
- ui_controller()->SetPendingPassword(form);
- ManagePasswordItemPendingView* pendingView =
- base::mac::ObjCCast<ManagePasswordItemPendingView>(
- [controller() contentView]);
+ autofill::PasswordForm form = federated_credential();
+ SetUpManageState(&form);
+ PendingPasswordItemView* pendingView =
+ base::mac::ObjCCast<PendingPasswordItemView>(
+ [GetControllerAt(0) contentView]);
// Ensure the fields are populated properly and the password is obscured.
EXPECT_NSEQ(kItemTestUsername, pendingView.usernameField.stringValue);
- EXPECT_FALSE(pendingView.passwordField);
- EXPECT_THAT(base::SysNSStringToUTF8(pendingView.federationField.stringValue),
- HasSubstr(federation.host()));
+ EXPECT_THAT(base::SysNSStringToUTF8(pendingView.passwordField.stringValue),
+ HasSubstr(federated_credential().federation_url.host()));
}

Powered by Google App Engine
This is Rietveld 408576698