| Index: chrome/browser/ui/cocoa/browser/profile_chooser_controller_unittest.mm
|
| diff --git a/chrome/browser/ui/cocoa/browser/profile_chooser_controller_unittest.mm b/chrome/browser/ui/cocoa/browser/profile_chooser_controller_unittest.mm
|
| deleted file mode 100644
|
| index 769f47e30ff9cac70abbea3969878a5ad11303b0..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/cocoa/browser/profile_chooser_controller_unittest.mm
|
| +++ /dev/null
|
| @@ -1,313 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#import "chrome/browser/ui/cocoa/browser/profile_chooser_controller.h"
|
| -
|
| -#include "base/command_line.h"
|
| -#include "base/mac/scoped_nsobject.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/strings/sys_string_conversions.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "chrome/browser/prefs/pref_service_syncable.h"
|
| -#include "chrome/browser/profiles/avatar_menu.h"
|
| -#include "chrome/browser/profiles/profile_info_cache.h"
|
| -#include "chrome/browser/signin/fake_profile_oauth2_token_service.h"
|
| -#include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h"
|
| -#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
|
| -#include "chrome/browser/signin/signin_manager_factory.h"
|
| -#include "chrome/browser/ui/browser.h"
|
| -#include "chrome/browser/ui/cocoa/cocoa_profile_test.h"
|
| -#include "chrome/common/chrome_switches.h"
|
| -#include "components/signin/core/browser/profile_oauth2_token_service.h"
|
| -#include "components/signin/core/browser/signin_manager.h"
|
| -
|
| -const std::string kEmail = "user@gmail.com";
|
| -const std::string kSecondaryEmail = "user2@gmail.com";
|
| -const std::string kLoginToken = "oauth2_login_token";
|
| -
|
| -class ProfileChooserControllerTest : public CocoaProfileTest {
|
| - public:
|
| - ProfileChooserControllerTest() {
|
| - }
|
| -
|
| - virtual void SetUp() OVERRIDE {
|
| - CocoaProfileTest::SetUp();
|
| - ASSERT_TRUE(browser()->profile());
|
| -
|
| - TestingProfile::TestingFactories factories;
|
| - factories.push_back(
|
| - std::make_pair(ProfileOAuth2TokenServiceFactory::GetInstance(),
|
| - BuildFakeProfileOAuth2TokenService));
|
| - testing_profile_manager()->
|
| - CreateTestingProfile("test1", scoped_ptr<PrefServiceSyncable>(),
|
| - base::ASCIIToUTF16("Test 1"), 0, std::string(),
|
| - factories);
|
| - testing_profile_manager()->
|
| - CreateTestingProfile("test2", scoped_ptr<PrefServiceSyncable>(),
|
| - base::ASCIIToUTF16("Test 2"), 1, std::string(),
|
| - TestingProfile::TestingFactories());
|
| -
|
| - menu_ = new AvatarMenu(testing_profile_manager()->profile_info_cache(),
|
| - NULL, NULL);
|
| - menu_->RebuildMenu();
|
| -
|
| - // There should be the default profile + two profiles we created.
|
| - EXPECT_EQ(3U, menu_->GetNumberOfItems());
|
| - }
|
| -
|
| - virtual void TearDown() OVERRIDE {
|
| - [controller() close];
|
| - controller_.reset();
|
| - CocoaProfileTest::TearDown();
|
| - }
|
| -
|
| - void StartProfileChooserController() {
|
| - NSRect frame = [test_window() frame];
|
| - NSPoint point = NSMakePoint(NSMidX(frame), NSMidY(frame));
|
| - controller_.reset([[ProfileChooserController alloc]
|
| - initWithBrowser:browser()
|
| - anchoredAt:point
|
| - withMode:BUBBLE_VIEW_MODE_PROFILE_CHOOSER]);
|
| - [controller_ showWindow:nil];
|
| - }
|
| -
|
| - ProfileChooserController* controller() { return controller_; }
|
| - AvatarMenu* menu() { return menu_; }
|
| -
|
| - private:
|
| - base::scoped_nsobject<ProfileChooserController> controller_;
|
| -
|
| - // Weak; owned by |controller_|.
|
| - AvatarMenu* menu_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ProfileChooserControllerTest);
|
| -};
|
| -
|
| -TEST_F(ProfileChooserControllerTest, InitialLayout) {
|
| - StartProfileChooserController();
|
| - NSArray* subviews = [[[controller() window] contentView] subviews];
|
| -
|
| - // Three profiles means we should have one active card, one separator and
|
| - // one option buttons view.
|
| - EXPECT_EQ(3U, [subviews count]);
|
| -
|
| - // For a local profile, there should be one button in the option buttons view.
|
| - NSArray* buttonSubviews = [[subviews objectAtIndex:0] subviews];
|
| - EXPECT_EQ(1U, [buttonSubviews count]);
|
| - NSButton* button = static_cast<NSButton*>([buttonSubviews objectAtIndex:0]);
|
| - EXPECT_EQ(@selector(showUserManager:), [button action]);
|
| - EXPECT_EQ(controller(), [button target]);
|
| -
|
| - // There should be a separator.
|
| - EXPECT_TRUE([[subviews objectAtIndex:1] isKindOfClass:[NSBox class]]);
|
| -
|
| - // 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];
|
| - EXPECT_EQ(3U, [activeCardSubviews count]);
|
| -
|
| - NSView* activeProfileImage = [activeCardSubviews objectAtIndex:0];
|
| - EXPECT_TRUE([activeProfileImage isKindOfClass:[NSImageView class]]);
|
| -
|
| - // There are some links in between. The profile name is added last.
|
| - CGFloat index = [activeCardSubviews count] - 1;
|
| - NSView* activeProfileName = [activeCardSubviews objectAtIndex:index];
|
| - EXPECT_TRUE([activeProfileName isKindOfClass:[NSButton class]]);
|
| - EXPECT_EQ(menu()->GetItemAt(0).name, base::SysNSStringToUTF16(
|
| - [static_cast<NSButton*>(activeProfileName) title]));
|
| -}
|
| -
|
| -TEST_F(ProfileChooserControllerTest, InitialLayoutWithFastUserSwitcher) {
|
| - // The fast user switcher is only availbale behind a flag.
|
| - CommandLine::ForCurrentProcess()->AppendSwitch(switches::kFastUserSwitching);
|
| -
|
| - StartProfileChooserController();
|
| - NSArray* subviews = [[[controller() window] contentView] subviews];
|
| -
|
| - // Three profiles means we should have one active card, two "other" profiles,
|
| - // one separator and one option buttons view.
|
| - EXPECT_EQ(5U, [subviews count]);
|
| -
|
| - // For a local profile, there should be one button in the option buttons view.
|
| - NSArray* buttonSubviews = [[subviews objectAtIndex:0] subviews];
|
| - EXPECT_EQ(1U, [buttonSubviews count]);
|
| - NSButton* button = static_cast<NSButton*>([buttonSubviews objectAtIndex:0]);
|
| - EXPECT_EQ(@selector(showUserManager:), [button action]);
|
| - EXPECT_EQ(controller(), [button target]);
|
| -
|
| - // There should be a separator.
|
| - EXPECT_TRUE([[subviews objectAtIndex:1] isKindOfClass:[NSBox class]]);
|
| -
|
| - // There should be two "other profiles" items. The items are drawn from the
|
| - // bottom up, so in the opposite order of those in the AvatarMenu.
|
| - int profileIndex = 1;
|
| - for (NSUInteger i = 3; i >= 2; --i) {
|
| - NSButton* button = static_cast<NSButton*>([subviews objectAtIndex:i]);
|
| - EXPECT_EQ(menu()->GetItemAt(profileIndex).name,
|
| - base::SysNSStringToUTF16([button title]));
|
| - EXPECT_EQ(profileIndex, [button tag]);
|
| - EXPECT_EQ(@selector(switchToProfile:), [button action]);
|
| - EXPECT_EQ(controller(), [button target]);
|
| - profileIndex++;
|
| - }
|
| -
|
| - // 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:4] subviews];
|
| - EXPECT_EQ(3U, [activeCardSubviews count]);
|
| -
|
| - NSView* activeProfileImage = [activeCardSubviews objectAtIndex:0];
|
| - EXPECT_TRUE([activeProfileImage isKindOfClass:[NSImageView class]]);
|
| -
|
| - // There are some links in between. The profile name is added last.
|
| - CGFloat index = [activeCardSubviews count] - 1;
|
| - NSView* activeProfileName = [activeCardSubviews objectAtIndex:index];
|
| - EXPECT_TRUE([activeProfileName isKindOfClass:[NSButton class]]);
|
| - EXPECT_EQ(menu()->GetItemAt(0).name, base::SysNSStringToUTF16(
|
| - [static_cast<NSButton*>(activeProfileName) title]));
|
| -}
|
| -
|
| -TEST_F(ProfileChooserControllerTest, OtherProfilesSortedAlphabetically) {
|
| - // The fast user switcher is only availbale behind a flag.
|
| - CommandLine::ForCurrentProcess()->AppendSwitch(switches::kFastUserSwitching);
|
| -
|
| - // Add two extra profiles, to make sure sorting is alphabetical and not
|
| - // by order of creation.
|
| - testing_profile_manager()->
|
| - CreateTestingProfile("test3", scoped_ptr<PrefServiceSyncable>(),
|
| - base::ASCIIToUTF16("New Profile"), 1, std::string(),
|
| - TestingProfile::TestingFactories());
|
| - testing_profile_manager()->
|
| - CreateTestingProfile("test4", scoped_ptr<PrefServiceSyncable>(),
|
| - base::ASCIIToUTF16("Another Test"), 1, std::string(),
|
| - TestingProfile::TestingFactories());
|
| - StartProfileChooserController();
|
| -
|
| - NSArray* subviews = [[[controller() window] contentView] subviews];
|
| - NSString* sortedNames[] = { @"Another Test",
|
| - @"New Profile",
|
| - @"Test 1",
|
| - @"Test 2" };
|
| - // There should be three "other profiles" items, sorted alphabetically.
|
| - // The "other profiles" start at index 2, after the option buttons and
|
| - // a separator. We need to iterate through the profiles in the order
|
| - // displayed in the bubble, which is opposite from the drawn order.
|
| - int sortedNameIndex = 0;
|
| - for (NSUInteger i = 5; i >= 2; --i) {
|
| - NSButton* button = static_cast<NSButton*>([subviews objectAtIndex:i]);
|
| - EXPECT_TRUE(
|
| - [[button title] isEqualToString:sortedNames[sortedNameIndex++]]);
|
| - }
|
| -}
|
| -
|
| -TEST_F(ProfileChooserControllerTest, LocalProfileActiveCardLinks) {
|
| - StartProfileChooserController();
|
| - NSArray* subviews = [[[controller() window] contentView] subviews];
|
| - NSArray* activeCardSubviews = [[subviews objectAtIndex:2] subviews];
|
| - NSArray* activeCardLinks = [[activeCardSubviews objectAtIndex:1] subviews];
|
| -
|
| - // There should be one "sign in" link.
|
| - EXPECT_EQ(1U, [activeCardLinks count]);
|
| - NSButton* signinLink =
|
| - static_cast<NSButton*>([activeCardLinks objectAtIndex:0]);
|
| - EXPECT_EQ(@selector(showSigninPage:), [signinLink action]);
|
| - EXPECT_EQ(controller(), [signinLink target]);
|
| -}
|
| -
|
| -TEST_F(ProfileChooserControllerTest, SignedInProfileActiveCardLinks) {
|
| - // Sign in the first profile.
|
| - ProfileInfoCache* cache = testing_profile_manager()->profile_info_cache();
|
| - cache->SetUserNameOfProfileAtIndex(0, base::ASCIIToUTF16(kEmail));
|
| -
|
| - StartProfileChooserController();
|
| - NSArray* subviews = [[[controller() window] contentView] subviews];
|
| - NSArray* activeCardSubviews = [[subviews objectAtIndex:2] subviews];
|
| - NSArray* activeCardLinks = [[activeCardSubviews objectAtIndex:1] subviews];
|
| -
|
| - // There is one link: manage accounts.
|
| - EXPECT_EQ(1U, [activeCardLinks count]);
|
| - NSButton* manageAccountsLink =
|
| - static_cast<NSButton*>([activeCardLinks objectAtIndex:0]);
|
| - EXPECT_EQ(@selector(showAccountManagement:), [manageAccountsLink action]);
|
| - EXPECT_EQ(controller(), [manageAccountsLink target]);
|
| -}
|
| -
|
| -TEST_F(ProfileChooserControllerTest, AccountManagementLayout) {
|
| - // Sign in the first profile.
|
| - ProfileInfoCache* cache = testing_profile_manager()->profile_info_cache();
|
| - cache->SetUserNameOfProfileAtIndex(0, base::ASCIIToUTF16(kEmail));
|
| -
|
| - // Set up the signin manager and the OAuth2Tokens.
|
| - Profile* profile = browser()->profile();
|
| - SigninManagerFactory::GetForProfile(profile)->
|
| - SetAuthenticatedUsername(kEmail);
|
| - ProfileOAuth2TokenServiceFactory::GetForProfile(profile)->
|
| - UpdateCredentials(kEmail, kLoginToken);
|
| - ProfileOAuth2TokenServiceFactory::GetForProfile(profile)->
|
| - UpdateCredentials(kSecondaryEmail, kLoginToken);
|
| -
|
| - StartProfileChooserController();
|
| - [controller() initMenuContentsWithView:BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT];
|
| -
|
| - NSArray* subviews = [[[controller() window] contentView] subviews];
|
| -
|
| - // There should be one active card, one accounts container, two separators
|
| - // and one option buttons view.
|
| - EXPECT_EQ(5U, [subviews count]);
|
| -
|
| - // There should be two buttons in the option buttons view.
|
| - NSArray* buttonSubviews = [[subviews objectAtIndex:0] subviews];
|
| - const SEL buttonSelectors[] = { @selector(showUserManager:),
|
| - @selector(lockProfile:) };
|
| - EXPECT_EQ(2U, [buttonSubviews count]);
|
| - for (NSUInteger i = 0; i < [buttonSubviews count]; ++i) {
|
| - NSButton* button = static_cast<NSButton*>([buttonSubviews objectAtIndex:i]);
|
| - EXPECT_EQ(buttonSelectors[i], [button action]);
|
| - EXPECT_EQ(controller(), [button target]);
|
| - }
|
| -
|
| - // There should be a separator.
|
| - EXPECT_TRUE([[subviews objectAtIndex:1] isKindOfClass:[NSBox class]]);
|
| -
|
| - // In the accounts view, there should be the account list container
|
| - // accounts and one "add accounts" button.
|
| - NSArray* accountsSubviews = [[subviews objectAtIndex:2] subviews];
|
| - EXPECT_EQ(2U, [accountsSubviews count]);
|
| -
|
| - NSButton* addAccountsButton =
|
| - static_cast<NSButton*>([accountsSubviews objectAtIndex:0]);
|
| - EXPECT_EQ(@selector(addAccount:), [addAccountsButton action]);
|
| - EXPECT_EQ(controller(), [addAccountsButton target]);
|
| -
|
| - // There should be two accounts in the account list container.
|
| - NSArray* accountsListSubviews = [[accountsSubviews objectAtIndex:1] subviews];
|
| - EXPECT_EQ(2U, [accountsListSubviews count]);
|
| -
|
| - NSButton* genericAccount =
|
| - static_cast<NSButton*>([accountsListSubviews objectAtIndex:0]);
|
| - EXPECT_EQ(@selector(showAccountRemovalView:), [genericAccount action]);
|
| - EXPECT_EQ(controller(), [genericAccount target]);
|
| -
|
| - // Primary accounts are always last.
|
| - NSButton* primaryAccount =
|
| - static_cast<NSButton*>([accountsListSubviews objectAtIndex:1]);
|
| - EXPECT_EQ(@selector(showAccountRemovalView:), [primaryAccount action]);
|
| - EXPECT_EQ(controller(), [primaryAccount target]);
|
| -
|
| - // There should be another separator.
|
| - EXPECT_TRUE([[subviews objectAtIndex:3] isKindOfClass:[NSBox class]]);
|
| -
|
| - // There should be the profile avatar, name and no links container in the
|
| - // active card view.
|
| - NSArray* activeCardSubviews = [[subviews objectAtIndex:4] subviews];
|
| - EXPECT_EQ(2U, [activeCardSubviews count]);
|
| -
|
| - NSView* activeProfileImage = [activeCardSubviews objectAtIndex:0];
|
| - EXPECT_TRUE([activeProfileImage isKindOfClass:[NSImageView class]]);
|
| -
|
| - NSView* activeProfileName = [activeCardSubviews objectAtIndex:1];
|
| - EXPECT_TRUE([activeProfileName isKindOfClass:[NSButton class]]);
|
| - EXPECT_EQ(menu()->GetItemAt(0).name, base::SysNSStringToUTF16(
|
| - [static_cast<NSButton*>(activeProfileName) title]));
|
| -}
|
|
|