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 <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #import "base/mac/foundation_util.h" | 10 #import "base/mac/foundation_util.h" |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
174 | 174 |
175 // Three profiles means we should have one active card, one separator and | 175 // Three profiles means we should have one active card, one separator and |
176 // one option buttons view. We also have an update promo for the new avatar | 176 // one option buttons view. We also have an update promo for the new avatar |
177 // menu. | 177 // menu. |
178 // TODO(noms): Enforcing 4U fails on the waterfall debug bots, but it's not | 178 // TODO(noms): Enforcing 4U fails on the waterfall debug bots, but it's not |
179 // reproducible anywhere else. | 179 // reproducible anywhere else. |
180 ASSERT_GE([subviews count], 3U); | 180 ASSERT_GE([subviews count], 3U); |
181 | 181 |
182 // There should be one button in the option buttons view. | 182 // There should be one button in the option buttons view. |
183 NSArray* buttonSubviews = [[subviews objectAtIndex:0] subviews]; | 183 NSArray* buttonSubviews = [[subviews objectAtIndex:0] subviews]; |
184 ASSERT_EQ(1U, [buttonSubviews count]); | 184 NSButton* userSwitcherButton; |
185 if (switches::IsMaterialDesignUserMenu()) { | |
186 ASSERT_EQ(1U, [buttonSubviews count]); | |
187 // There should be a user switcher button. | |
188 userSwitcherButton = | |
189 base::mac::ObjCCast<NSButton>([buttonSubviews objectAtIndex:0]); | |
190 } else { | |
191 // For non-material-design user menu, there should be two buttons and a | |
192 // separator in the option buttons view. | |
193 ASSERT_EQ(3U, [buttonSubviews count]); | |
185 | 194 |
186 // There should be a user switcher button. | 195 // There should be an incognito button. |
187 NSButton* userSwitcherButton = | 196 NSButton* incognitoButton = |
188 base::mac::ObjCCast<NSButton>([buttonSubviews objectAtIndex:0]); | 197 base::mac::ObjCCast<NSButton>([buttonSubviews objectAtIndex:0]); |
198 EXPECT_EQ(@selector(goIncognito:), [incognitoButton action]); | |
199 EXPECT_EQ(controller(), [incognitoButton target]); | |
200 | |
201 // There should be a separator. | |
202 EXPECT_TRUE([[subviews objectAtIndex:1] isKindOfClass:[NSBox class]]); | |
203 | |
204 // There should be a user switcher button. | |
205 userSwitcherButton = | |
206 base::mac::ObjCCast<NSButton>([buttonSubviews objectAtIndex:2]); | |
207 } | |
208 | |
Roger Tawa OOO till Jul 10th
2016/06/06 13:37:12
This won't test both cases, only the default case.
| |
189 EXPECT_EQ(@selector(showUserManager:), [userSwitcherButton action]); | 209 EXPECT_EQ(@selector(showUserManager:), [userSwitcherButton action]); |
190 EXPECT_EQ(controller(), [userSwitcherButton target]); | 210 EXPECT_EQ(controller(), [userSwitcherButton target]); |
191 | 211 |
192 // There should be a separator. | 212 // There should be a separator. |
193 EXPECT_TRUE([[subviews objectAtIndex:1] isKindOfClass:[NSBox class]]); | 213 EXPECT_TRUE([[subviews objectAtIndex:1] isKindOfClass:[NSBox class]]); |
194 | 214 |
195 // There should be the profile avatar, name and links container in the active | 215 // There should be the profile avatar, name and links container in the active |
196 // card view. The links displayed in the container are checked separately. | 216 // card view. The links displayed in the container are checked separately. |
197 NSArray* activeCardSubviews = [[subviews objectAtIndex:2] subviews]; | 217 NSArray* activeCardSubviews = [[subviews objectAtIndex:2] subviews]; |
198 ASSERT_EQ(3U, [activeCardSubviews count]); | 218 ASSERT_EQ(3U, [activeCardSubviews count]); |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
415 profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT]; | 435 profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT]; |
416 | 436 |
417 NSArray* subviews = [[[controller() window] contentView] subviews]; | 437 NSArray* subviews = [[[controller() window] contentView] subviews]; |
418 ASSERT_EQ(2U, [subviews count]); | 438 ASSERT_EQ(2U, [subviews count]); |
419 subviews = [[subviews objectAtIndex:0] subviews]; | 439 subviews = [[subviews objectAtIndex:0] subviews]; |
420 | 440 |
421 // There should be one active card, one accounts container, two separators | 441 // There should be one active card, one accounts container, two separators |
422 // and one option buttons view. | 442 // and one option buttons view. |
423 ASSERT_EQ(5U, [subviews count]); | 443 ASSERT_EQ(5U, [subviews count]); |
424 | 444 |
425 // There should be one button in the option buttons view. | |
426 NSArray* buttonSubviews = [[subviews objectAtIndex:0] subviews]; | 445 NSArray* buttonSubviews = [[subviews objectAtIndex:0] subviews]; |
427 ASSERT_EQ(1U, [buttonSubviews count]); | 446 NSButton* userSwitcherButton; |
447 if (switches::IsMaterialDesignUserMenu()) { | |
448 // There should be one button in the option buttons view. | |
449 ASSERT_EQ(1U, [buttonSubviews count]); | |
450 // There should be a user switcher button. | |
451 userSwitcherButton = | |
452 base::mac::ObjCCast<NSButton>([buttonSubviews objectAtIndex:0]); | |
453 } else { | |
454 // For non-material-design user menu, there should be two buttons and one | |
455 // separator in the option buttons view. | |
456 ASSERT_EQ(3U, [buttonSubviews count]); | |
428 | 457 |
429 // There should be a user switcher button. | 458 // There should be an incognito button. |
430 NSButton* userSwitcherButton = | 459 NSButton* incognitoButton = |
431 base::mac::ObjCCast<NSButton>([buttonSubviews objectAtIndex:0]); | 460 base::mac::ObjCCast<NSButton>([buttonSubviews objectAtIndex:0]); |
461 EXPECT_EQ(@selector(goIncognito:), [incognitoButton action]); | |
462 EXPECT_EQ(controller(), [incognitoButton target]); | |
463 | |
464 // There should be a separator. | |
465 EXPECT_TRUE([[buttonSubviews objectAtIndex:1] isKindOfClass:[NSBox class]]); | |
466 | |
467 // There should be a user switcher button. | |
468 userSwitcherButton = | |
469 base::mac::ObjCCast<NSButton>([buttonSubviews objectAtIndex:2]); | |
470 } | |
471 | |
432 EXPECT_EQ(@selector(showUserManager:), [userSwitcherButton action]); | 472 EXPECT_EQ(@selector(showUserManager:), [userSwitcherButton action]); |
433 EXPECT_EQ(controller(), [userSwitcherButton target]); | 473 EXPECT_EQ(controller(), [userSwitcherButton target]); |
434 | 474 |
435 // There should be a separator. | 475 // There should be a separator. |
436 EXPECT_TRUE([[subviews objectAtIndex:1] isKindOfClass:[NSBox class]]); | 476 EXPECT_TRUE([[subviews objectAtIndex:1] isKindOfClass:[NSBox class]]); |
437 | 477 |
438 // In the accounts view, there should be the account list container | 478 // In the accounts view, there should be the account list container |
439 // accounts and one "add accounts" button. | 479 // accounts and one "add accounts" button. |
440 NSArray* accountsSubviews = [[subviews objectAtIndex:2] subviews]; | 480 NSArray* accountsSubviews = [[subviews objectAtIndex:2] subviews]; |
441 ASSERT_EQ(2U, [accountsSubviews count]); | 481 ASSERT_EQ(2U, [accountsSubviews count]); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
501 | 541 |
502 // The preference, not the email, determines whether the profile can lock. | 542 // The preference, not the email, determines whether the profile can lock. |
503 browser()->profile()->GetPrefs()->SetString( | 543 browser()->profile()->GetPrefs()->SetString( |
504 prefs::kGoogleServicesHostedDomain, "chromium.org"); | 544 prefs::kGoogleServicesHostedDomain, "chromium.org"); |
505 | 545 |
506 StartProfileChooserController(); | 546 StartProfileChooserController(); |
507 NSArray* subviews = [[[controller() window] contentView] subviews]; | 547 NSArray* subviews = [[[controller() window] contentView] subviews]; |
508 ASSERT_EQ(2U, [subviews count]); | 548 ASSERT_EQ(2U, [subviews count]); |
509 subviews = [[subviews objectAtIndex:0] subviews]; | 549 subviews = [[subviews objectAtIndex:0] subviews]; |
510 | 550 |
511 // There will be one button in the option buttons view. | |
512 NSArray* buttonSubviews = [[subviews objectAtIndex:0] subviews]; | 551 NSArray* buttonSubviews = [[subviews objectAtIndex:0] subviews]; |
513 ASSERT_EQ(1U, [buttonSubviews count]); | 552 if (switches::IsMaterialDesignUserMenu()) { |
553 // There will be one button in the option buttons view. | |
554 ASSERT_EQ(1U, [buttonSubviews count]); | |
555 } else { | |
556 // For non-material-design user menu, there will be two buttons and one | |
557 // separators in the option buttons view. | |
558 ASSERT_EQ(3U, [buttonSubviews count]); | |
559 } | |
514 | 560 |
515 // The last button should not be the lock button. | 561 // The last button should not be the lock button. |
516 NSButton* lastButton = | 562 NSButton* lastButton = |
517 base::mac::ObjCCast<NSButton>([buttonSubviews objectAtIndex:0]); | 563 base::mac::ObjCCast<NSButton>([buttonSubviews objectAtIndex:0]); |
518 ASSERT_TRUE(lastButton); | 564 ASSERT_TRUE(lastButton); |
519 EXPECT_NE(@selector(lockProfile:), [lastButton action]); | 565 EXPECT_NE(@selector(lockProfile:), [lastButton action]); |
520 } | 566 } |
521 | 567 |
522 TEST_F(ProfileChooserControllerTest, SignedInProfileLockEnabled) { | 568 TEST_F(ProfileChooserControllerTest, SignedInProfileLockEnabled) { |
523 switches::EnableNewProfileManagementForTesting( | 569 switches::EnableNewProfileManagementForTesting( |
524 base::CommandLine::ForCurrentProcess()); | 570 base::CommandLine::ForCurrentProcess()); |
525 | 571 |
526 SignInFirstProfile(); | 572 SignInFirstProfile(); |
527 | 573 |
528 // The preference, not the email, determines whether the profile can lock. | 574 // The preference, not the email, determines whether the profile can lock. |
529 browser()->profile()->GetPrefs()->SetString( | 575 browser()->profile()->GetPrefs()->SetString( |
530 prefs::kGoogleServicesHostedDomain, "google.com"); | 576 prefs::kGoogleServicesHostedDomain, "google.com"); |
531 // Lock is only available where a supervised user is present. | 577 // Lock is only available where a supervised user is present. |
532 ProfileAttributesEntry* entry = testing_profile_manager()-> | 578 ProfileAttributesEntry* entry = testing_profile_manager()-> |
533 profile_attributes_storage()->GetAllProfilesAttributes().front(); | 579 profile_attributes_storage()->GetAllProfilesAttributes().front(); |
534 entry->SetSupervisedUserId(kEmail); | 580 entry->SetSupervisedUserId(kEmail); |
535 | 581 |
536 StartProfileChooserController(); | 582 StartProfileChooserController(); |
537 NSArray* subviews = [[[controller() window] contentView] subviews]; | 583 NSArray* subviews = [[[controller() window] contentView] subviews]; |
538 ASSERT_EQ(2U, [subviews count]); | 584 ASSERT_EQ(2U, [subviews count]); |
539 subviews = [[subviews objectAtIndex:0] subviews]; | 585 subviews = [[subviews objectAtIndex:0] subviews]; |
540 | 586 |
541 // There will be two buttons and one separator in the option buttons view. | |
542 NSArray* buttonSubviews = [[subviews objectAtIndex:0] subviews]; | 587 NSArray* buttonSubviews = [[subviews objectAtIndex:0] subviews]; |
543 ASSERT_EQ(3U, [buttonSubviews count]); | 588 if (switches::IsMaterialDesignUserMenu()) { |
589 // There will be two buttons and one separator in the option buttons view. | |
590 ASSERT_EQ(3U, [buttonSubviews count]); | |
591 } else { | |
592 // FOr non-material-design user menu, There will be three buttons and two | |
593 // separators in the option buttons view. | |
594 ASSERT_EQ(5U, [buttonSubviews count]); | |
595 } | |
544 | 596 |
545 // There should be a lock button. | 597 // There should be a lock button. |
546 NSButton* lockButton = | 598 NSButton* lockButton = |
547 base::mac::ObjCCast<NSButton>([buttonSubviews objectAtIndex:0]); | 599 base::mac::ObjCCast<NSButton>([buttonSubviews objectAtIndex:0]); |
548 ASSERT_TRUE(lockButton); | 600 ASSERT_TRUE(lockButton); |
549 EXPECT_EQ(@selector(lockProfile:), [lockButton action]); | 601 EXPECT_EQ(@selector(lockProfile:), [lockButton action]); |
550 EXPECT_EQ(controller(), [lockButton target]); | 602 EXPECT_EQ(controller(), [lockButton target]); |
551 EXPECT_TRUE([lockButton isEnabled]); | 603 EXPECT_TRUE([lockButton isEnabled]); |
552 } | 604 } |
OLD | NEW |