Chromium Code Reviews| Index: chrome/browser/ui/cocoa/profiles/profile_chooser_controller_unittest.mm |
| diff --git a/chrome/browser/ui/cocoa/profiles/profile_chooser_controller_unittest.mm b/chrome/browser/ui/cocoa/profiles/profile_chooser_controller_unittest.mm |
| index 22630a8db093e11f48ea28c9df72b31ce8a5611d..8ba27ece9ee3856c3e23995c9660a5dc94c1ccfd 100644 |
| --- a/chrome/browser/ui/cocoa/profiles/profile_chooser_controller_unittest.mm |
| +++ b/chrome/browser/ui/cocoa/profiles/profile_chooser_controller_unittest.mm |
| @@ -105,6 +105,11 @@ class ProfileChooserControllerTest : public CocoaProfileTest { |
| } |
| void AssertRightClickTutorialShown() { |
| + // The right click menu doesn't exist in the MD user menu, so it doesn't |
| + // show the tutorial. |
| + if (switches::IsMaterialDesignUserMenu()) |
| + return; |
| + |
| NSArray* subviews = [[[controller() window] contentView] subviews]; |
| ASSERT_EQ(2U, [subviews count]); |
| subviews = [[subviews objectAtIndex:0] subviews]; |
| @@ -183,7 +188,8 @@ TEST_F(ProfileChooserControllerTest, InitialLayoutWithNewMenu) { |
| NSArray* buttonSubviews = [[subviews objectAtIndex:0] subviews]; |
| NSButton* userSwitcherButton; |
| if (switches::IsMaterialDesignUserMenu()) { |
| - ASSERT_EQ(1U, [buttonSubviews count]); |
| + // There are 2 buttons in the initial layout: "Manage People" and "Guest". |
| + ASSERT_EQ(2U, [buttonSubviews count]); |
| // There should be a user switcher button. |
| userSwitcherButton = |
| base::mac::ObjCCast<NSButton>([buttonSubviews objectAtIndex:0]); |
| @@ -209,24 +215,28 @@ TEST_F(ProfileChooserControllerTest, InitialLayoutWithNewMenu) { |
| EXPECT_EQ(@selector(showUserManager:), [userSwitcherButton action]); |
| EXPECT_EQ(controller(), [userSwitcherButton target]); |
| - // There should be a separator. |
| - EXPECT_TRUE([[subviews objectAtIndex:1] isKindOfClass:[NSBox class]]); |
| + NSUInteger last_subview_index = switches::IsMaterialDesignUserMenu() ? 4 : 2; |
|
Robert Sesek
2016/10/06 18:49:35
These tests are incorrectly using camelCase for va
anthonyvd
2016/10/06 19:06:15
Ahh, makes sense! Done everywhere.
|
| + NSArray* activeCardSubviews = |
| + [[subviews objectAtIndex:last_subview_index] subviews]; |
| // There should be the profile avatar, name and links container in the active |
| // card view. The links displayed in the container are checked separately. |
| - NSArray* activeCardSubviews = [[subviews objectAtIndex:2] subviews]; |
| - ASSERT_EQ(3U, [activeCardSubviews count]); |
| - |
| - // Profile icon. |
| - NSView* activeProfileImage = [activeCardSubviews objectAtIndex:2]; |
| - EXPECT_TRUE([activeProfileImage isKindOfClass:[NSButton class]]); |
| + // In the MD user menu, the profile avatar and name are in the same subview. |
| + if (switches::IsMaterialDesignUserMenu()) { |
| + ASSERT_EQ(2U, [activeCardSubviews count]); |
| + } else { |
| + ASSERT_EQ(3U, [activeCardSubviews count]); |
| - // Profile name. |
| - NSView* activeProfileName = [activeCardSubviews objectAtIndex:1]; |
| - EXPECT_TRUE([activeProfileName isKindOfClass:[NSButton class]]); |
| - EXPECT_EQ(menu()->GetItemAt(0).name, base::SysNSStringToUTF16( |
| - [base::mac::ObjCCast<NSButton>(activeProfileName) title])); |
| + // Profile icon. |
| + NSView* activeProfileImage = [activeCardSubviews objectAtIndex:2]; |
| + EXPECT_TRUE([activeProfileImage isKindOfClass:[NSButton class]]); |
| + // Profile name. |
| + NSView* activeProfileName = [activeCardSubviews objectAtIndex:1]; |
| + EXPECT_TRUE([activeProfileName isKindOfClass:[NSButton class]]); |
| + EXPECT_EQ(menu()->GetItemAt(0).name, base::SysNSStringToUTF16( |
| + [base::mac::ObjCCast<NSButton>(activeProfileName) title])); |
| + } |
| // Profile links. This is a local profile, so there should be a signin button |
| // and a signin promo. |
| NSArray* linksSubviews = [[activeCardSubviews objectAtIndex:0] subviews]; |
| @@ -283,8 +293,10 @@ TEST_F(ProfileChooserControllerTest, RightClickTutorialNotShownAfterDismiss) { |
| ASSERT_EQ(2U, [subviews count]); |
| subviews = [[subviews objectAtIndex:0] subviews]; |
| - // There should be 3 views since there's no tutorial |
| - ASSERT_EQ(3U, [subviews count]); |
| + // There should be 3 views since there's no tutorial. There are 2 extra |
| + // buttons in the MD user menu. |
| + auto views_count = switches::IsMaterialDesignUserMenu() ? 5U : 3U; |
|
Robert Sesek
2016/10/06 18:49:35
Use NSUInteger instead of auto and drop the 'U's?
anthonyvd
2016/10/06 19:06:15
Done.
|
| + ASSERT_EQ(views_count, [subviews count]); |
| // Closing and reopening the menu shouldn't show the tutorial. |
| [controller() close]; |
| @@ -294,11 +306,14 @@ TEST_F(ProfileChooserControllerTest, RightClickTutorialNotShownAfterDismiss) { |
| ASSERT_EQ(2U, [subviews count]); |
| subviews = [[subviews objectAtIndex:0] subviews]; |
| - // There should be 3 views since there's no tutorial |
| - ASSERT_EQ(3U, [subviews count]); |
| + ASSERT_EQ(views_count, [subviews count]); |
| } |
| TEST_F(ProfileChooserControllerTest, OtherProfilesSortedAlphabetically) { |
| + // This test is related to the fast user switcher, which doesn't exist under |
| + // the MD user menu. |
| + if (switches::IsMaterialDesignUserMenu()) |
| + return; |
| // Add two extra profiles, to make sure sorting is alphabetical and not |
| // by order of creation. |
| testing_profile_manager()->CreateTestingProfile( |
| @@ -341,7 +356,11 @@ TEST_F(ProfileChooserControllerTest, |
| NSArray* subviews = [[[controller() window] contentView] subviews]; |
| ASSERT_EQ(2U, [subviews count]); |
| subviews = [[subviews objectAtIndex:0] subviews]; |
| - NSArray* activeCardSubviews = [[subviews objectAtIndex:2] subviews]; |
| + // The active card is the last subview and the MD User Menu has 2 extra |
| + // buttons. |
| + NSUInteger last_subview_index = switches::IsMaterialDesignUserMenu() ? 4 : 2; |
| + NSArray* activeCardSubviews = |
| + [[subviews objectAtIndex:last_subview_index] subviews]; |
| NSArray* activeCardLinks = [[activeCardSubviews objectAtIndex:0] subviews]; |
| ASSERT_EQ(2U, [activeCardLinks count]); |
| @@ -369,7 +388,11 @@ TEST_F(ProfileChooserControllerTest, |
| NSArray* subviews = [[[controller() window] contentView] subviews]; |
| ASSERT_EQ(2U, [subviews count]); |
| subviews = [[subviews objectAtIndex:0] subviews]; |
| - NSArray* activeCardSubviews = [[subviews objectAtIndex:2] subviews]; |
| + // The active card is the last subview and the MD User Menu has 2 extra |
| + // buttons. |
| + NSUInteger last_subview_index = switches::IsMaterialDesignUserMenu() ? 4 : 2; |
| + NSArray* activeCardSubviews = |
| + [[subviews objectAtIndex:last_subview_index] subviews]; |
| NSArray* activeCardLinks = [[activeCardSubviews objectAtIndex:0] subviews]; |
| // There is one link: manage accounts. |
| @@ -388,16 +411,25 @@ TEST_F(ProfileChooserControllerTest, |
| NSArray* subviews = [[[controller() window] contentView] subviews]; |
| ASSERT_EQ(2U, [subviews count]); |
| subviews = [[subviews objectAtIndex:0] subviews]; |
| - NSArray* activeCardSubviews = [[subviews objectAtIndex:2] subviews]; |
| + // The active card is the last subview and the MD User Menu has 2 extra |
| + // buttons. |
| + NSUInteger last_subview_index = switches::IsMaterialDesignUserMenu() ? 4 : 2; |
| + NSArray* activeCardSubviews = |
| + [[subviews objectAtIndex:last_subview_index] subviews]; |
| NSArray* activeCardLinks = [[activeCardSubviews objectAtIndex:0] subviews]; |
| - // There is one disabled button with the user's email. |
| - ASSERT_EQ(1U, [activeCardLinks count]); |
| - NSButton* emailButton = |
| - base::mac::ObjCCast<NSButton>([activeCardLinks objectAtIndex:0]); |
| - EXPECT_EQ(kEmail, base::SysNSStringToUTF8([emailButton title])); |
| - EXPECT_EQ(nil, [emailButton action]); |
| - EXPECT_FALSE([emailButton isEnabled]); |
| + if (switches::IsMaterialDesignUserMenu()) { |
| + // There is the profile avatar and the profile name. |
| + ASSERT_EQ(2U, [activeCardLinks count]); |
| + } else { |
| + // There is one disabled button with the user's email. |
| + ASSERT_EQ(1U, [activeCardLinks count]); |
| + NSButton* emailButton = |
| + base::mac::ObjCCast<NSButton>([activeCardLinks objectAtIndex:0]); |
| + EXPECT_EQ(kEmail, base::SysNSStringToUTF8([emailButton title])); |
| + EXPECT_EQ(nil, [emailButton action]); |
| + EXPECT_FALSE([emailButton isEnabled]); |
| + } |
| } |
| TEST_F(ProfileChooserControllerTest, AccountManagementLayout) { |
| @@ -439,14 +471,15 @@ TEST_F(ProfileChooserControllerTest, AccountManagementLayout) { |
| subviews = [[subviews objectAtIndex:0] subviews]; |
| // There should be one active card, one accounts container, two separators |
| - // and one option buttons view. |
| - ASSERT_EQ(5U, [subviews count]); |
| + // and one option buttons view. In the MD User Menu, there are 2 more buttons. |
| + auto views_count = switches::IsMaterialDesignUserMenu() ? 7U : 5U; |
| + ASSERT_EQ(views_count, [subviews count]); |
| NSArray* buttonSubviews = [[subviews objectAtIndex:0] subviews]; |
| NSButton* userSwitcherButton; |
| if (switches::IsMaterialDesignUserMenu()) { |
| - // There should be one button in the option buttons view. |
| - ASSERT_EQ(1U, [buttonSubviews count]); |
| + // There should be two buttons in the option buttons view. |
| + ASSERT_EQ(2U, [buttonSubviews count]); |
| // There should be a user switcher button. |
| userSwitcherButton = |
| base::mac::ObjCCast<NSButton>([buttonSubviews objectAtIndex:0]); |
| @@ -472,12 +505,11 @@ TEST_F(ProfileChooserControllerTest, AccountManagementLayout) { |
| EXPECT_EQ(@selector(showUserManager:), [userSwitcherButton action]); |
| EXPECT_EQ(controller(), [userSwitcherButton target]); |
| - // There should be a separator. |
| - EXPECT_TRUE([[subviews objectAtIndex:1] isKindOfClass:[NSBox class]]); |
| - |
| + NSUInteger accounts_view_index = switches::IsMaterialDesignUserMenu() ? 4 : 2; |
| // In the accounts view, there should be the account list container |
| // accounts and one "add accounts" button. |
| - NSArray* accountsSubviews = [[subviews objectAtIndex:2] subviews]; |
| + NSArray* accountsSubviews = |
| + [[subviews objectAtIndex:accounts_view_index] subviews]; |
| ASSERT_EQ(2U, [accountsSubviews count]); |
| NSButton* addAccountsButton = |
| @@ -512,25 +544,31 @@ TEST_F(ProfileChooserControllerTest, AccountManagementLayout) { |
| // There should be the profile avatar, name and a "hide accounts" link |
| // container in the active card view. |
| NSArray* activeCardSubviews = [[subviews objectAtIndex:4] subviews]; |
| - ASSERT_EQ(3U, [activeCardSubviews count]); |
| - |
| - // Profile icon. |
| - NSView* activeProfileImage = [activeCardSubviews objectAtIndex:2]; |
| - EXPECT_TRUE([activeProfileImage isKindOfClass:[NSButton class]]); |
| - |
| - // Profile name. |
| - NSView* activeProfileName = [activeCardSubviews objectAtIndex:1]; |
| - EXPECT_TRUE([activeProfileName isKindOfClass:[NSButton class]]); |
| - EXPECT_EQ(menu()->GetItemAt(0).name, base::SysNSStringToUTF16( |
| - [base::mac::ObjCCast<NSButton>(activeProfileName) title])); |
| - |
| - // Profile links. This is a local profile, so there should be a signin button. |
| - NSArray* linksSubviews = [[activeCardSubviews objectAtIndex:0] subviews]; |
| - ASSERT_EQ(1U, [linksSubviews count]); |
| - NSButton* link = base::mac::ObjCCast<NSButton>( |
| - [linksSubviews objectAtIndex:0]); |
| - EXPECT_EQ(@selector(hideAccountManagement:), [link action]); |
| - EXPECT_EQ(controller(), [link target]); |
| + if (switches::IsMaterialDesignUserMenu()) { |
| + // In the MD user menu, the profile name and avatar are in the same subview. |
| + ASSERT_EQ(2U, [activeCardSubviews count]); |
| + } else { |
| + ASSERT_EQ(3U, [activeCardSubviews count]); |
| + |
| + // Profile icon. |
| + NSView* activeProfileImage = [activeCardSubviews objectAtIndex:2]; |
| + EXPECT_TRUE([activeProfileImage isKindOfClass:[NSButton class]]); |
| + |
| + // Profile name. |
| + NSView* activeProfileName = [activeCardSubviews objectAtIndex:1]; |
| + EXPECT_TRUE([activeProfileName isKindOfClass:[NSButton class]]); |
| + EXPECT_EQ(menu()->GetItemAt(0).name, base::SysNSStringToUTF16( |
| + [base::mac::ObjCCast<NSButton>(activeProfileName) title])); |
| + |
| + // Profile links. This is a local profile, so there should be a signin |
| + // button. |
| + NSArray* linksSubviews = [[activeCardSubviews objectAtIndex:0] subviews]; |
| + ASSERT_EQ(1U, [linksSubviews count]); |
| + NSButton* link = base::mac::ObjCCast<NSButton>( |
| + [linksSubviews objectAtIndex:0]); |
| + EXPECT_EQ(@selector(hideAccountManagement:), [link action]); |
| + EXPECT_EQ(controller(), [link target]); |
| + } |
| } |
| TEST_F(ProfileChooserControllerTest, SignedInProfileLockDisabled) { |
| @@ -550,8 +588,8 @@ TEST_F(ProfileChooserControllerTest, SignedInProfileLockDisabled) { |
| NSArray* buttonSubviews = [[subviews objectAtIndex:0] subviews]; |
| if (switches::IsMaterialDesignUserMenu()) { |
| - // There will be one button in the option buttons view. |
| - ASSERT_EQ(1U, [buttonSubviews count]); |
| + // There will be two buttons in the option buttons view. |
| + ASSERT_EQ(2U, [buttonSubviews count]); |
| } else { |
| // For non-material-design user menu, there will be two buttons and one |
| // separators in the option buttons view. |