| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import "chrome/browser/ui/cocoa/profiles/profile_chooser_controller.h" | 5 #import "chrome/browser/ui/cocoa/profiles/profile_chooser_controller.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/mac/scoped_nsobject.h" | 8 #include "base/mac/scoped_nsobject.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/strings/sys_string_conversions.h" | 10 #include "base/strings/sys_string_conversions.h" |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 NSRect frame = [test_window() frame]; | 68 NSRect frame = [test_window() frame]; |
| 69 NSPoint point = NSMakePoint(NSMidX(frame), NSMidY(frame)); | 69 NSPoint point = NSMakePoint(NSMidX(frame), NSMidY(frame)); |
| 70 controller_.reset([[ProfileChooserController alloc] | 70 controller_.reset([[ProfileChooserController alloc] |
| 71 initWithBrowser:browser() | 71 initWithBrowser:browser() |
| 72 anchoredAt:point | 72 anchoredAt:point |
| 73 withMode:profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER | 73 withMode:profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER |
| 74 withServiceType:signin::GAIA_SERVICE_TYPE_NONE]); | 74 withServiceType:signin::GAIA_SERVICE_TYPE_NONE]); |
| 75 [controller_ showWindow:nil]; | 75 [controller_ showWindow:nil]; |
| 76 } | 76 } |
| 77 | 77 |
| 78 void EnableNewAvatarMenuOnly() { | |
| 79 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kNewAvatarMenu); | |
| 80 } | |
| 81 | |
| 82 void EnableFastUserSwitching() { | 78 void EnableFastUserSwitching() { |
| 83 CommandLine::ForCurrentProcess()->AppendSwitch( | 79 CommandLine::ForCurrentProcess()->AppendSwitch( |
| 84 switches::kFastUserSwitching); | 80 switches::kFastUserSwitching); |
| 85 } | 81 } |
| 86 | 82 |
| 87 ProfileChooserController* controller() { return controller_; } | 83 ProfileChooserController* controller() { return controller_; } |
| 88 AvatarMenu* menu() { return menu_; } | 84 AvatarMenu* menu() { return menu_; } |
| 89 | 85 |
| 90 private: | 86 private: |
| 91 base::scoped_nsobject<ProfileChooserController> controller_; | 87 base::scoped_nsobject<ProfileChooserController> controller_; |
| 92 | 88 |
| 93 // Weak; owned by |controller_|. | 89 // Weak; owned by |controller_|. |
| 94 AvatarMenu* menu_; | 90 AvatarMenu* menu_; |
| 95 | 91 |
| 96 DISALLOW_COPY_AND_ASSIGN(ProfileChooserControllerTest); | 92 DISALLOW_COPY_AND_ASSIGN(ProfileChooserControllerTest); |
| 97 }; | 93 }; |
| 98 | 94 |
| 99 TEST_F(ProfileChooserControllerTest, InitialLayoutWithNewMenu) { | 95 TEST_F(ProfileChooserControllerTest, InitialLayoutWithNewMenu) { |
| 100 EnableNewAvatarMenuOnly(); | |
| 101 StartProfileChooserController(); | 96 StartProfileChooserController(); |
| 102 | 97 |
| 103 NSArray* subviews = [[[controller() window] contentView] subviews]; | 98 NSArray* subviews = [[[controller() window] contentView] subviews]; |
| 104 ASSERT_EQ(1U, [subviews count]); | 99 ASSERT_EQ(1U, [subviews count]); |
| 105 subviews = [[subviews objectAtIndex:0] subviews]; | 100 subviews = [[subviews objectAtIndex:0] subviews]; |
| 106 | 101 |
| 107 // Three profiles means we should have one active card, one separator and | 102 // Three profiles means we should have one active card, one separator and |
| 108 // one option buttons view. | 103 // one option buttons view. |
| 109 ASSERT_EQ(3U, [subviews count]); | 104 ASSERT_EQ(3U, [subviews count]); |
| 110 | 105 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 NSButton* link = static_cast<NSButton*>([linksSubviews objectAtIndex:0]); | 147 NSButton* link = static_cast<NSButton*>([linksSubviews objectAtIndex:0]); |
| 153 EXPECT_EQ(@selector(showInlineSigninPage:), [link action]); | 148 EXPECT_EQ(@selector(showInlineSigninPage:), [link action]); |
| 154 EXPECT_EQ(controller(), [link target]); | 149 EXPECT_EQ(controller(), [link target]); |
| 155 | 150 |
| 156 NSTextField* promo = static_cast<NSTextField*>( | 151 NSTextField* promo = static_cast<NSTextField*>( |
| 157 [linksSubviews objectAtIndex:1]); | 152 [linksSubviews objectAtIndex:1]); |
| 158 EXPECT_GT([[promo stringValue] length], 0U); | 153 EXPECT_GT([[promo stringValue] length], 0U); |
| 159 } | 154 } |
| 160 | 155 |
| 161 TEST_F(ProfileChooserControllerTest, InitialLayoutWithFastUserSwitcher) { | 156 TEST_F(ProfileChooserControllerTest, InitialLayoutWithFastUserSwitcher) { |
| 162 EnableNewAvatarMenuOnly(); | |
| 163 EnableFastUserSwitching(); | 157 EnableFastUserSwitching(); |
| 164 StartProfileChooserController(); | 158 StartProfileChooserController(); |
| 165 | 159 |
| 166 NSArray* subviews = [[[controller() window] contentView] subviews]; | 160 NSArray* subviews = [[[controller() window] contentView] subviews]; |
| 167 ASSERT_EQ(1U, [subviews count]); | 161 ASSERT_EQ(1U, [subviews count]); |
| 168 subviews = [[subviews objectAtIndex:0] subviews]; | 162 subviews = [[subviews objectAtIndex:0] subviews]; |
| 169 | 163 |
| 170 // Three profiles means we should have one active card and a | 164 // Three profiles means we should have one active card and a |
| 171 // fast user switcher which has two "other" profiles and 2 separators, and | 165 // fast user switcher which has two "other" profiles and 2 separators, and |
| 172 // an option buttons view with its separator. | 166 // an option buttons view with its separator. |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 EXPECT_EQ(menu()->GetItemAt(0).name, base::SysNSStringToUTF16( | 205 EXPECT_EQ(menu()->GetItemAt(0).name, base::SysNSStringToUTF16( |
| 212 [static_cast<NSButton*>(activeProfileName) title])); | 206 [static_cast<NSButton*>(activeProfileName) title])); |
| 213 | 207 |
| 214 // Profile links. This is a local profile, so there should be a signin button | 208 // Profile links. This is a local profile, so there should be a signin button |
| 215 // and a signin promo. These are also tested in InitialLayoutWithNewMenu. | 209 // and a signin promo. These are also tested in InitialLayoutWithNewMenu. |
| 216 NSArray* linksSubviews = [[activeCardSubviews objectAtIndex:0] subviews]; | 210 NSArray* linksSubviews = [[activeCardSubviews objectAtIndex:0] subviews]; |
| 217 EXPECT_EQ(2U, [linksSubviews count]); | 211 EXPECT_EQ(2U, [linksSubviews count]); |
| 218 } | 212 } |
| 219 | 213 |
| 220 TEST_F(ProfileChooserControllerTest, OtherProfilesSortedAlphabetically) { | 214 TEST_F(ProfileChooserControllerTest, OtherProfilesSortedAlphabetically) { |
| 221 EnableNewAvatarMenuOnly(); | |
| 222 EnableFastUserSwitching(); | 215 EnableFastUserSwitching(); |
| 223 | 216 |
| 224 // Add two extra profiles, to make sure sorting is alphabetical and not | 217 // Add two extra profiles, to make sure sorting is alphabetical and not |
| 225 // by order of creation. | 218 // by order of creation. |
| 226 testing_profile_manager()-> | 219 testing_profile_manager()-> |
| 227 CreateTestingProfile("test3", scoped_ptr<PrefServiceSyncable>(), | 220 CreateTestingProfile("test3", scoped_ptr<PrefServiceSyncable>(), |
| 228 base::ASCIIToUTF16("New Profile"), 1, std::string(), | 221 base::ASCIIToUTF16("New Profile"), 1, std::string(), |
| 229 TestingProfile::TestingFactories()); | 222 TestingProfile::TestingFactories()); |
| 230 testing_profile_manager()-> | 223 testing_profile_manager()-> |
| 231 CreateTestingProfile("test4", scoped_ptr<PrefServiceSyncable>(), | 224 CreateTestingProfile("test4", scoped_ptr<PrefServiceSyncable>(), |
| (...skipping 20 matching lines...) Expand all Loading... |
| 252 for (int i = 9; i >= 2; i -= 2) { | 245 for (int i = 9; i >= 2; i -= 2) { |
| 253 // The item at index i is the separator. | 246 // The item at index i is the separator. |
| 254 NSButton* button = static_cast<NSButton*>([subviews objectAtIndex:i-1]); | 247 NSButton* button = static_cast<NSButton*>([subviews objectAtIndex:i-1]); |
| 255 EXPECT_TRUE( | 248 EXPECT_TRUE( |
| 256 [[button title] isEqualToString:sortedNames[sortedNameIndex++]]); | 249 [[button title] isEqualToString:sortedNames[sortedNameIndex++]]); |
| 257 } | 250 } |
| 258 } | 251 } |
| 259 | 252 |
| 260 TEST_F(ProfileChooserControllerTest, | 253 TEST_F(ProfileChooserControllerTest, |
| 261 LocalProfileActiveCardLinksWithNewMenu) { | 254 LocalProfileActiveCardLinksWithNewMenu) { |
| 262 EnableNewAvatarMenuOnly(); | |
| 263 StartProfileChooserController(); | 255 StartProfileChooserController(); |
| 264 NSArray* subviews = [[[controller() window] contentView] subviews]; | 256 NSArray* subviews = [[[controller() window] contentView] subviews]; |
| 265 ASSERT_EQ(1U, [subviews count]); | 257 ASSERT_EQ(1U, [subviews count]); |
| 266 subviews = [[subviews objectAtIndex:0] subviews]; | 258 subviews = [[subviews objectAtIndex:0] subviews]; |
| 267 NSArray* activeCardSubviews = [[subviews objectAtIndex:2] subviews]; | 259 NSArray* activeCardSubviews = [[subviews objectAtIndex:2] subviews]; |
| 268 NSArray* activeCardLinks = [[activeCardSubviews objectAtIndex:0] subviews]; | 260 NSArray* activeCardLinks = [[activeCardSubviews objectAtIndex:0] subviews]; |
| 269 | 261 |
| 270 ASSERT_EQ(2U, [activeCardLinks count]); | 262 ASSERT_EQ(2U, [activeCardLinks count]); |
| 271 | 263 |
| 272 // There should be a sign in button. | 264 // There should be a sign in button. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 298 // There is one link: manage accounts. | 290 // There is one link: manage accounts. |
| 299 ASSERT_EQ(1U, [activeCardLinks count]); | 291 ASSERT_EQ(1U, [activeCardLinks count]); |
| 300 NSButton* manageAccountsLink = | 292 NSButton* manageAccountsLink = |
| 301 static_cast<NSButton*>([activeCardLinks objectAtIndex:0]); | 293 static_cast<NSButton*>([activeCardLinks objectAtIndex:0]); |
| 302 EXPECT_EQ(@selector(showAccountManagement:), [manageAccountsLink action]); | 294 EXPECT_EQ(@selector(showAccountManagement:), [manageAccountsLink action]); |
| 303 EXPECT_EQ(controller(), [manageAccountsLink target]); | 295 EXPECT_EQ(controller(), [manageAccountsLink target]); |
| 304 } | 296 } |
| 305 | 297 |
| 306 TEST_F(ProfileChooserControllerTest, | 298 TEST_F(ProfileChooserControllerTest, |
| 307 SignedInProfileActiveCardLinksWithNewMenu) { | 299 SignedInProfileActiveCardLinksWithNewMenu) { |
| 308 EnableNewAvatarMenuOnly(); | |
| 309 // Sign in the first profile. | 300 // Sign in the first profile. |
| 310 ProfileInfoCache* cache = testing_profile_manager()->profile_info_cache(); | 301 ProfileInfoCache* cache = testing_profile_manager()->profile_info_cache(); |
| 311 cache->SetUserNameOfProfileAtIndex(0, base::ASCIIToUTF16(kEmail)); | 302 cache->SetUserNameOfProfileAtIndex(0, base::ASCIIToUTF16(kEmail)); |
| 312 | 303 |
| 313 StartProfileChooserController(); | 304 StartProfileChooserController(); |
| 314 NSArray* subviews = [[[controller() window] contentView] subviews]; | 305 NSArray* subviews = [[[controller() window] contentView] subviews]; |
| 315 ASSERT_EQ(1U, [subviews count]); | 306 ASSERT_EQ(1U, [subviews count]); |
| 316 subviews = [[subviews objectAtIndex:0] subviews]; | 307 subviews = [[subviews objectAtIndex:0] subviews]; |
| 317 NSArray* activeCardSubviews = [[subviews objectAtIndex:2] subviews]; | 308 NSArray* activeCardSubviews = [[subviews objectAtIndex:2] subviews]; |
| 318 NSArray* activeCardLinks = [[activeCardSubviews objectAtIndex:0] subviews]; | 309 NSArray* activeCardLinks = [[activeCardSubviews objectAtIndex:0] subviews]; |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 432 EXPECT_EQ(menu()->GetItemAt(0).name, base::SysNSStringToUTF16( | 423 EXPECT_EQ(menu()->GetItemAt(0).name, base::SysNSStringToUTF16( |
| 433 [static_cast<NSButton*>(activeProfileName) title])); | 424 [static_cast<NSButton*>(activeProfileName) title])); |
| 434 | 425 |
| 435 // Profile links. This is a local profile, so there should be a signin button. | 426 // Profile links. This is a local profile, so there should be a signin button. |
| 436 NSArray* linksSubviews = [[activeCardSubviews objectAtIndex:0] subviews]; | 427 NSArray* linksSubviews = [[activeCardSubviews objectAtIndex:0] subviews]; |
| 437 ASSERT_EQ(1U, [linksSubviews count]); | 428 ASSERT_EQ(1U, [linksSubviews count]); |
| 438 NSButton* link = static_cast<NSButton*>([linksSubviews objectAtIndex:0]); | 429 NSButton* link = static_cast<NSButton*>([linksSubviews objectAtIndex:0]); |
| 439 EXPECT_EQ(@selector(hideAccountManagement:), [link action]); | 430 EXPECT_EQ(@selector(hideAccountManagement:), [link action]); |
| 440 EXPECT_EQ(controller(), [link target]); | 431 EXPECT_EQ(controller(), [link target]); |
| 441 } | 432 } |
| OLD | NEW |