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

Unified Diff: chrome/browser/ui/cocoa/profiles/profile_chooser_controller_unittest.mm

Issue 1120013003: Add right-click user switching tutorial bubble. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase 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 side-by-side diff with in-line comments
Download patch
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 13515fb52ad567d2a9fbbeb5972b3e75cea3cb89..66ecfd503bd8d6c5a152cd093f198ffff035638f 100644
--- a/chrome/browser/ui/cocoa/profiles/profile_chooser_controller_unittest.mm
+++ b/chrome/browser/ui/cocoa/profiles/profile_chooser_controller_unittest.mm
@@ -80,17 +80,49 @@ class ProfileChooserControllerTest : public CocoaProfileTest {
}
void StartProfileChooserController() {
+ StartProfileChooserControllerWithTutorialMode(profiles::TUTORIAL_MODE_NONE);
+ }
+
+ void StartProfileChooserControllerWithTutorialMode(
+ profiles::TutorialMode mode) {
NSRect frame = [test_window() frame];
NSPoint point = NSMakePoint(NSMidX(frame), NSMidY(frame));
controller_.reset([[ProfileChooserController alloc]
initWithBrowser:browser()
anchoredAt:point
viewMode:profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER
- tutorialMode:profiles::TUTORIAL_MODE_NONE
+ tutorialMode:mode
serviceType:signin::GAIA_SERVICE_TYPE_NONE]);
[controller_ showWindow:nil];
}
+ void AssertRightClickTutorialShown() {
+ NSArray* subviews = [[[controller() window] contentView] subviews];
+ ASSERT_EQ(2U, [subviews count]);
+ subviews = [[subviews objectAtIndex:0] subviews];
+
+ // There should be 4 views: the tutorial, the active profile card, a
+ // separator and the options view.
+ ASSERT_EQ(4U, [subviews count]);
+
+ // The tutorial is the topmost view, so the last in the array. It should
+ // contain 3 views: the title, the content text and the OK button.
+ NSArray* tutorialSubviews = [[subviews objectAtIndex:3] subviews];
+ ASSERT_EQ(3U, [tutorialSubviews count]);
+
+ NSTextField* tutorialTitle = base::mac::ObjCCastStrict<NSTextField>(
+ [tutorialSubviews objectAtIndex:2]);
+ EXPECT_GT([[tutorialTitle stringValue] length], 0U);
+
+ NSTextField* tutorialContent = base::mac::ObjCCastStrict<NSTextField>(
+ [tutorialSubviews objectAtIndex:1]);
+ EXPECT_GT([[tutorialContent stringValue] length], 0U);
+
+ NSButton* tutorialOKButton = base::mac::ObjCCastStrict<NSButton>(
+ [tutorialSubviews objectAtIndex:0]);
+ EXPECT_GT([[tutorialOKButton title] length], 0U);
+ }
+
void EnableFastUserSwitching() {
base::CommandLine::ForCurrentProcess()->AppendSwitch(
switches::kFastUserSwitching);
@@ -175,6 +207,69 @@ TEST_F(ProfileChooserControllerTest, InitialLayoutWithNewMenu) {
EXPECT_GT([[promo stringValue] length], 0U);
}
+TEST_F(ProfileChooserControllerTest, RightClickTutorialShownAfterWelcome) {
+ switches::EnableNewAvatarMenuForTesting(
+ base::CommandLine::ForCurrentProcess());
+ // The welcome upgrade tutorial takes precedence so show it then dismiss it.
+ // The right click tutorial should be shown right away.
+ StartProfileChooserControllerWithTutorialMode(
+ profiles::TUTORIAL_MODE_WELCOME_UPGRADE);
+
+ [controller() dismissTutorial:nil];
+ AssertRightClickTutorialShown();
+}
+
+TEST_F(ProfileChooserControllerTest, RightClickTutorialShownAfterReopen) {
+ switches::EnableNewAvatarMenuForTesting(
+ base::CommandLine::ForCurrentProcess());
+ // The welcome upgrade tutorial takes precedence so show it then close the
+ // menu. Reopening the menu should show the tutorial.
+ StartProfileChooserController();
+
+ [controller() close];
+ StartProfileChooserController();
+ AssertRightClickTutorialShown();
+
+ // The tutorial must be manually dismissed so it should still be shown after
+ // closing and reopening the menu,
+ [controller() close];
+ StartProfileChooserController();
+ AssertRightClickTutorialShown();
+}
+
+TEST_F(ProfileChooserControllerTest, RightClickTutorialNotShownAfterDismiss) {
+ switches::EnableNewAvatarMenuForTesting(
+ base::CommandLine::ForCurrentProcess());
+ // The welcome upgrade tutorial takes precedence so show it then close the
+ // menu. Reopening the menu should show the tutorial.
+ StartProfileChooserController();
+
+ [controller() close];
+ StartProfileChooserControllerWithTutorialMode(
+ profiles::TUTORIAL_MODE_RIGHT_CLICK_SWITCHING);
+ AssertRightClickTutorialShown();
+
+ // Dismissing the tutorial should prevent it from being shown forever.
+ [controller() dismissTutorial:nil];
+ NSArray* subviews = [[[controller() window] contentView] subviews];
+ 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]);
+
+ // Closing and reopening the menu shouldn't show the tutorial.
+ [controller() close];
+ StartProfileChooserControllerWithTutorialMode(
+ profiles::TUTORIAL_MODE_RIGHT_CLICK_SWITCHING);
+ subviews = [[[controller() window] contentView] subviews];
+ 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]);
+}
+
TEST_F(ProfileChooserControllerTest, InitialLayoutWithFastUserSwitcher) {
switches::EnableNewAvatarMenuForTesting(
base::CommandLine::ForCurrentProcess());
« no previous file with comments | « chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm ('k') | chrome/browser/ui/profile_chooser_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698