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

Side by Side Diff: chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm

Issue 1116353004: Remove the #enable-fast-user-switcher flag. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix bad merge Created 5 years, 7 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 unified diff | Download patch
OLDNEW
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 #import <Carbon/Carbon.h> // kVK_Return. 7 #import <Carbon/Carbon.h> // kVK_Return.
8 #import <Cocoa/Cocoa.h> 8 #import <Cocoa/Cocoa.h>
9 9
10 #include "base/mac/bundle_locations.h" 10 #include "base/mac/bundle_locations.h"
(...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after
868 return nil; 868 return nil;
869 } 869 }
870 870
871 - (BOOL)canBecomeKeyView { 871 - (BOOL)canBecomeKeyView {
872 return NO; 872 return NO;
873 } 873 }
874 874
875 @end 875 @end
876 876
877 @interface ProfileChooserController () 877 @interface ProfileChooserController ()
878 // Adds an horizontal separator to |container| at |yOffset| and returns the
879 // yOffset corresponding to after the separator.
880 - (CGFloat)addSeparatorToContainer:(NSView*)container
881 atYOffset:(CGFloat)yOffset;
882
883 // Builds the right-click profile switcher.
884 - (void)buildFastUserSwitcherViewWithProfiles:(NSMutableArray*)otherProfiles
885 atYOffset:(CGFloat)yOffset
886 inContainer:(NSView*)container;
887
888 // Builds the regular profile chooser view.
889 - (void)buildProfileChooserViewWithProfileView:(NSView*)currentProfileView
890 tutorialView:(NSView*)tutorialView
891 atYOffset:(CGFloat)yOffset
892 inContainer:(NSView*)container
893 displayLock:(bool)displayLock;
894
878 // Builds the profile chooser view. 895 // Builds the profile chooser view.
879 - (NSView*)buildProfileChooserView; 896 - (NSView*)buildProfileChooserView;
880 897
881 - (NSView*)buildTutorialViewIfNeededForItem:(const AvatarMenu::Item&)item; 898 - (NSView*)buildTutorialViewIfNeededForItem:(const AvatarMenu::Item&)item;
882 899
883 // Builds a tutorial card with a title label using |titleMessage|, a content 900 // Builds a tutorial card with a title label using |titleMessage|, a content
884 // label using |contentMessage|, a link using |linkMessage|, and a button using 901 // label using |contentMessage|, a link using |linkMessage|, and a button using
885 // |buttonMessage|. If |stackButton| is YES, places the button above the link. 902 // |buttonMessage|. If |stackButton| is YES, places the button above the link.
886 // Otherwise places both on the same row with the link left aligned and button 903 // Otherwise places both on the same row with the link left aligned and button
887 // right aligned. On click, the link would execute |linkAction|, and the button 904 // right aligned. On click, the link would execute |linkAction|, and the button
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 [[[DummyWindowFocusButton alloc] initWithFrame:NSZeroRect] autorelease]; 1280 [[[DummyWindowFocusButton alloc] initWithFrame:NSZeroRect] autorelease];
1264 [dummyFocusButton setNextKeyView:subView]; 1281 [dummyFocusButton setNextKeyView:subView];
1265 [[self window] makeFirstResponder:dummyFocusButton]; 1282 [[self window] makeFirstResponder:dummyFocusButton];
1266 1283
1267 [contentView addSubview:subView]; 1284 [contentView addSubview:subView];
1268 [contentView addSubview:dummyFocusButton]; 1285 [contentView addSubview:dummyFocusButton];
1269 SetWindowSize([self window], 1286 SetWindowSize([self window],
1270 NSMakeSize(NSWidth([subView frame]), NSHeight([subView frame]))); 1287 NSMakeSize(NSWidth([subView frame]), NSHeight([subView frame])));
1271 } 1288 }
1272 1289
1290 - (CGFloat)addSeparatorToContainer:(NSView*)container
1291 atYOffset:(CGFloat)yOffset {
1292 NSBox* separator = [self horizontalSeparatorWithFrame:NSMakeRect(
1293 0, yOffset, kFixedMenuWidth, 0)];
1294 [container addSubview:separator];
1295 return NSMaxY([separator frame]);
1296 }
1297
1298 // Builds the fast user switcher view in |container| at |yOffset| and populates
1299 // it with the entries for every profile in |otherProfiles|. Returns the new
1300 // yOffset after adding the elements.
1301 - (void)buildFastUserSwitcherViewWithProfiles:(NSMutableArray*)otherProfiles
1302 atYOffset:(CGFloat)yOffset
1303 inContainer:(NSView*)container {
1304 // Other profiles switcher. The profiles have already been sorted
1305 // by their y-coordinate, so they can be added in the existing order.
1306 for (NSView* otherProfileView in otherProfiles) {
1307 [otherProfileView setFrameOrigin:NSMakePoint(0, yOffset)];
1308 [container addSubview:otherProfileView];
1309 yOffset = NSMaxY([otherProfileView frame]);
1310
1311 yOffset = [self addSeparatorToContainer:container atYOffset: yOffset];
1312 }
1313
1314 [container setFrameSize:NSMakeSize(kFixedMenuWidth, yOffset)];
1315 }
1316
1317 - (void)buildProfileChooserViewWithProfileView:(NSView*)currentProfileView
1318 tutorialView:(NSView*)tutorialView
1319 atYOffset:(CGFloat)yOffset
1320 inContainer:(NSView*)container
1321 displayLock:(bool)displayLock {
1322 // Option buttons.
1323 NSRect rect = NSMakeRect(0, yOffset, kFixedMenuWidth, 0);
1324 NSView* optionsView = [self createOptionsViewWithRect:rect
1325 displayLock:displayLock];
1326 [container addSubview:optionsView];
1327 rect.origin.y = NSMaxY([optionsView frame]);
1328
1329 NSBox* separator = [self horizontalSeparatorWithFrame:rect];
1330 [container addSubview:separator];
1331 yOffset = NSMaxY([separator frame]);
1332
1333 // For supervised users, add the disclaimer text.
1334 if (browser_->profile()->IsSupervised()) {
1335 yOffset += kSmallVerticalSpacing;
1336 NSView* disclaimerContainer = [self createSupervisedUserDisclaimerView];
1337 [disclaimerContainer setFrameOrigin:NSMakePoint(0, yOffset)];
1338 [container addSubview:disclaimerContainer];
1339 yOffset = NSMaxY([disclaimerContainer frame]);
1340 yOffset += kSmallVerticalSpacing;
1341
1342 yOffset = [self addSeparatorToContainer:container atYOffset: yOffset];
1343 }
1344
1345 if (viewMode_ == profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT) {
1346 NSView* currentProfileAccountsView = [self createCurrentProfileAccountsView:
1347 NSMakeRect(0, yOffset, kFixedMenuWidth, 0)];
1348 [container addSubview:currentProfileAccountsView];
1349 yOffset = NSMaxY([currentProfileAccountsView frame]);
1350
1351 yOffset = [self addSeparatorToContainer:container atYOffset: yOffset];
1352 }
1353
1354 // Active profile card.
1355 if (currentProfileView) {
1356 yOffset += kVerticalSpacing;
1357 [currentProfileView setFrameOrigin:NSMakePoint(0, yOffset)];
1358 [container addSubview:currentProfileView];
1359 yOffset = NSMaxY([currentProfileView frame]) + kVerticalSpacing;
1360 }
1361
1362 if (tutorialView) {
1363 [tutorialView setFrameOrigin:NSMakePoint(0, yOffset)];
1364 [container addSubview:tutorialView];
1365 yOffset = NSMaxY([tutorialView frame]);
1366 //TODO(mlerman): update UMA stats for the new tutorials.
1367 } else {
1368 tutorialMode_ = profiles::TUTORIAL_MODE_NONE;
1369 }
1370
1371 [container setFrameSize:NSMakeSize(kFixedMenuWidth, yOffset)];
1372 }
1373
1273 - (NSView*)buildProfileChooserView { 1374 - (NSView*)buildProfileChooserView {
1274 base::scoped_nsobject<NSView> container( 1375 base::scoped_nsobject<NSView> container(
1275 [[NSView alloc] initWithFrame:NSZeroRect]); 1376 [[NSView alloc] initWithFrame:NSZeroRect]);
1276 1377
1277 NSView* tutorialView = nil; 1378 NSView* tutorialView = nil;
1278 NSView* currentProfileView = nil; 1379 NSView* currentProfileView = nil;
1279 base::scoped_nsobject<NSMutableArray> otherProfiles( 1380 base::scoped_nsobject<NSMutableArray> otherProfiles(
1280 [[NSMutableArray alloc] init]); 1381 [[NSMutableArray alloc] init]);
1281 // Local and guest profiles cannot lock their profile. 1382 // Local and guest profiles cannot lock their profile.
1282 bool displayLock = false; 1383 bool displayLock = false;
(...skipping 22 matching lines...) Expand all
1305 } 1406 }
1306 } 1407 }
1307 if (!currentProfileView) // Guest windows don't have an active profile. 1408 if (!currentProfileView) // Guest windows don't have an active profile.
1308 currentProfileView = [self createGuestProfileView]; 1409 currentProfileView = [self createGuestProfileView];
1309 1410
1310 // |yOffset| is the next position at which to draw in |container| 1411 // |yOffset| is the next position at which to draw in |container|
1311 // coordinates. Add a pixel offset so that the bottom option buttons don't 1412 // coordinates. Add a pixel offset so that the bottom option buttons don't
1312 // overlap the bubble's rounded corners. 1413 // overlap the bubble's rounded corners.
1313 CGFloat yOffset = 1; 1414 CGFloat yOffset = 1;
1314 1415
1315 if (!isFastProfileChooser) { 1416 if (isFastProfileChooser) {
1316 // Option buttons. 1417 [self buildFastUserSwitcherViewWithProfiles:otherProfiles.get()
1317 NSRect rect = NSMakeRect(0, yOffset, kFixedMenuWidth, 0); 1418 atYOffset:yOffset
1318 NSView* optionsView = [self createOptionsViewWithRect:rect 1419 inContainer:container.get()];
1319 displayLock:displayLock]; 1420 } else {
1320 [container addSubview:optionsView]; 1421 [self buildProfileChooserViewWithProfileView:currentProfileView
1321 rect.origin.y = NSMaxY([optionsView frame]); 1422 tutorialView:tutorialView
1322 1423 atYOffset:yOffset
1323 NSBox* separator = [self horizontalSeparatorWithFrame:rect]; 1424 inContainer:container.get()
1324 [container addSubview:separator]; 1425 displayLock:displayLock];
1325 yOffset = NSMaxY([separator frame]);
1326 } 1426 }
1327 1427
1328 if ((viewMode_ == profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER &&
1329 switches::IsFastUserSwitching()) || isFastProfileChooser) {
1330 // Other profiles switcher. The profiles have already been sorted
1331 // by their y-coordinate, so they can be added in the existing order.
1332 for (NSView *otherProfileView in otherProfiles.get()) {
1333 [otherProfileView setFrameOrigin:NSMakePoint(0, yOffset)];
1334 [container addSubview:otherProfileView];
1335 yOffset = NSMaxY([otherProfileView frame]);
1336
1337 NSBox* separator = [self horizontalSeparatorWithFrame:NSMakeRect(
1338 0, yOffset, kFixedMenuWidth, 0)];
1339 [container addSubview:separator];
1340 yOffset = NSMaxY([separator frame]);
1341 }
1342 }
1343
1344 // For supervised users, add the disclaimer text.
1345 if (browser_->profile()->IsSupervised()) {
1346 yOffset += kSmallVerticalSpacing;
1347 NSView* disclaimerContainer = [self createSupervisedUserDisclaimerView];
1348 [disclaimerContainer setFrameOrigin:NSMakePoint(0, yOffset)];
1349 [container addSubview:disclaimerContainer];
1350 yOffset = NSMaxY([disclaimerContainer frame]);
1351 yOffset += kSmallVerticalSpacing;
1352
1353 NSBox* separator = [self horizontalSeparatorWithFrame:NSMakeRect(
1354 0, yOffset, kFixedMenuWidth, 0)];
1355 [container addSubview:separator];
1356 yOffset = NSMaxY([separator frame]);
1357 }
1358
1359 if (viewMode_ == profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT) {
1360 NSView* currentProfileAccountsView = [self createCurrentProfileAccountsView:
1361 NSMakeRect(0, yOffset, kFixedMenuWidth, 0)];
1362 [container addSubview:currentProfileAccountsView];
1363 yOffset = NSMaxY([currentProfileAccountsView frame]);
1364
1365 NSBox* accountsSeparator = [self horizontalSeparatorWithFrame:
1366 NSMakeRect(0, yOffset, kFixedMenuWidth, 0)];
1367 [container addSubview:accountsSeparator];
1368 yOffset = NSMaxY([accountsSeparator frame]);
1369 }
1370
1371 // Active profile card.
1372 if (!isFastProfileChooser && currentProfileView) {
1373 yOffset += kVerticalSpacing;
1374 [currentProfileView setFrameOrigin:NSMakePoint(0, yOffset)];
1375 [container addSubview:currentProfileView];
1376 yOffset = NSMaxY([currentProfileView frame]) + kVerticalSpacing;
1377 }
1378
1379 if (!isFastProfileChooser && tutorialView) {
1380 [tutorialView setFrameOrigin:NSMakePoint(0, yOffset)];
1381 [container addSubview:tutorialView];
1382 yOffset = NSMaxY([tutorialView frame]);
1383 //TODO(mlerman): update UMA stats for the new tutorials.
1384 } else {
1385 tutorialMode_ = profiles::TUTORIAL_MODE_NONE;
1386 }
1387
1388 [container setFrameSize:NSMakeSize(kFixedMenuWidth, yOffset)];
1389 return container.autorelease(); 1428 return container.autorelease();
1390 } 1429 }
1391 1430
1392 - (NSView*)buildSigninConfirmationView { 1431 - (NSView*)buildSigninConfirmationView {
1393 ProfileMetrics::LogProfileNewAvatarMenuSignin( 1432 ProfileMetrics::LogProfileNewAvatarMenuSignin(
1394 ProfileMetrics::PROFILE_AVATAR_MENU_SIGNIN_VIEW); 1433 ProfileMetrics::PROFILE_AVATAR_MENU_SIGNIN_VIEW);
1395 1434
1396 NSString* titleMessage = l10n_util::GetNSString( 1435 NSString* titleMessage = l10n_util::GetNSString(
1397 IDS_PROFILES_CONFIRM_SIGNIN_TUTORIAL_TITLE); 1436 IDS_PROFILES_CONFIRM_SIGNIN_TUTORIAL_TITLE);
1398 NSString* contentMessage = l10n_util::GetNSString( 1437 NSString* contentMessage = l10n_util::GetNSString(
(...skipping 952 matching lines...) Expand 10 before | Expand all | Expand 10 after
2351 } 2390 }
2352 2391
2353 - (bool)shouldShowGoIncognito { 2392 - (bool)shouldShowGoIncognito {
2354 bool incognitoAvailable = 2393 bool incognitoAvailable =
2355 IncognitoModePrefs::GetAvailability(browser_->profile()->GetPrefs()) != 2394 IncognitoModePrefs::GetAvailability(browser_->profile()->GetPrefs()) !=
2356 IncognitoModePrefs::DISABLED; 2395 IncognitoModePrefs::DISABLED;
2357 return incognitoAvailable && !browser_->profile()->IsGuestSession(); 2396 return incognitoAvailable && !browser_->profile()->IsGuestSession();
2358 } 2397 }
2359 2398
2360 @end 2399 @end
OLDNEW
« no previous file with comments | « chrome/browser/about_flags.cc ('k') | chrome/browser/ui/cocoa/profiles/profile_chooser_controller_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698