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

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

Issue 1120013003: Add right-click user switching tutorial bubble. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix Mac build. 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.mm
diff --git a/chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm b/chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm
index 29afe4656c062367f0de181eae0430a6f5dd7c9a..d5debdb4bb83abbd8ff9889840efaf1632530f17 100644
--- a/chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm
+++ b/chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm
@@ -878,6 +878,8 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver,
// Builds the profile chooser view.
- (NSView*)buildProfileChooserView;
+- (NSView*)buildTutorialViewIfNeededForItem:(const AvatarMenu::Item&)item;
+
// Builds a tutorial card with a title label using |titleMessage|, a content
// label using |contentMessage|, a link using |linkMessage|, and a button using
// |buttonMessage|. If |stackButton| is YES, places the button above the link.
@@ -894,10 +896,22 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver,
linkAction:(SEL)linkAction
buttonAction:(SEL)buttonAction;
+// Returns YES if the Welcome/Upgrade tutorial bubble should be shown to the
+// user, NO otherwise.
+- (BOOL)shouldShowWelcomeUpgradeTutorial;
+
+// Returns YES if the tutorial informing the user about right-click user
+// switching should be shown, NO otherwise.
+- (BOOL)shouldShowRightClickTutorialView;
+
// Builds a tutorial card to introduce an upgrade user to the new avatar menu if
// needed. |tutorial_shown| indicates if the tutorial has already been shown in
// the previous active view. |avatar_item| refers to the current profile.
-- (NSView*)buildWelcomeUpgradeTutorialViewIfNeeded;
+- (NSView*)buildWelcomeUpgradeTutorialView:(const AvatarMenu::Item&)item;
+
+// Builds a tutorial card to inform the user about right-click user switching if
+// needed.
+- (NSView*)buildRightClickTutorialView;
// Builds a tutorial card to have the user confirm the last Chrome signin,
// Chrome sync will be delayed until the user either dismisses the tutorial, or
@@ -1129,6 +1143,12 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver,
signin_ui_util::kUpgradeWelcomeTutorialShowMax + 1);
}
+ if(tutorialMode_ == profiles::TUTORIAL_MODE_RIGHT_CLICK_SWITCHING) {
+ PrefService* localState = g_browser_process->local_state();
+ localState->SetBoolean(
+ prefs::kProfileAvatarRightClickTutorialDismissed, true);
+ }
+
tutorialMode_ = profiles::TUTORIAL_MODE_NONE;
[self initMenuContentsWithView:profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER];
}
@@ -1270,6 +1290,12 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver,
bool displayLock = false;
bool isFastProfileChooser =
viewMode_ == profiles::BUBBLE_VIEW_MODE_FAST_PROFILE_CHOOSER;
+ if (isFastProfileChooser) {
+ // The user is using right-click switching, no need to tell them about it.
+ PrefService* localState = g_browser_process->local_state();
+ localState->SetBoolean(
+ prefs::kProfileAvatarRightClickTutorialDismissed, true);
+ }
// Loop over the profiles in reverse, so that they are sorted by their
// y-coordinate, and separate them into active and "other" profiles.
@@ -1277,18 +1303,7 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver,
const AvatarMenu::Item& item = avatarMenu_->GetItemAt(i);
if (item.active) {
if (viewMode_ == profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER) {
- switch (tutorialMode_) {
- case profiles::TUTORIAL_MODE_NONE:
- case profiles::TUTORIAL_MODE_WELCOME_UPGRADE:
- tutorialView =
- [self buildWelcomeUpgradeTutorialViewIfNeeded];
- break;
- case profiles::TUTORIAL_MODE_CONFIRM_SIGNIN:
- tutorialView = [self buildSigninConfirmationView];
- break;
- case profiles::TUTORIAL_MODE_SHOW_ERROR:
- tutorialView = [self buildSigninErrorView];
- }
+ tutorialView = [self buildTutorialViewIfNeededForItem:item];
}
currentProfileView = [self createCurrentProfileView:item];
displayLock = item.signed_in &&
@@ -1425,24 +1440,30 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver,
buttonAction:nil];
}
-- (NSView*)buildWelcomeUpgradeTutorialViewIfNeeded {
+- (BOOL)shouldShowWelcomeUpgradeTutorial {
Profile* profile = browser_->profile();
- const AvatarMenu::Item& avatarItem =
- avatarMenu_->GetItemAt(avatarMenu_->GetActiveProfileIndex());
const int showCount = profile->GetPrefs()->GetInteger(
prefs::kProfileAvatarTutorialShown);
// Do not show the tutorial if user has dismissed it.
if (showCount > signin_ui_util::kUpgradeWelcomeTutorialShowMax)
- return nil;
+ return NO;
- if (tutorialMode_ != profiles::TUTORIAL_MODE_WELCOME_UPGRADE) {
- if (showCount == signin_ui_util::kUpgradeWelcomeTutorialShowMax)
- return nil;
- profile->GetPrefs()->SetInteger(
- prefs::kProfileAvatarTutorialShown, showCount + 1);
- }
+ return tutorialMode_ == profiles::TUTORIAL_MODE_WELCOME_UPGRADE ||
groby-ooo-7-16 2015/05/07 01:59:01 That's returning a bool, not BOOL. Since you neve
anthonyvd 2015/05/12 16:09:11 Thanks! Done.
+ showCount != signin_ui_util::kUpgradeWelcomeTutorialShowMax;
+}
+
+- (BOOL)shouldShowRightClickTutorialView {
+ PrefService* localState = g_browser_process->local_state();
+ const bool dismissed = localState->GetBoolean(
+ prefs::kProfileAvatarRightClickTutorialDismissed);
+
+ // Don't show the tutorial if it's already been dismissed or if right-clicking
+ // wouldn't show any targets.
+ return !dismissed && profiles::HasProfileSwitchTargets(browser_->profile());
+}
+- (NSView*)buildWelcomeUpgradeTutorialView:(const AvatarMenu::Item&)item {
ProfileMetrics::LogProfileNewAvatarMenuUpgrade(
ProfileMetrics::PROFILE_AVATAR_MENU_UPGRADE_VIEW);
@@ -1451,9 +1472,9 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver,
NSString* contentMessage = l10n_util::GetNSString(
IDS_PROFILES_WELCOME_UPGRADE_TUTORIAL_CONTENT_TEXT);
// For local profiles, the "Not you" link doesn't make sense.
- NSString* linkMessage = avatarItem.signed_in ?
+ NSString* linkMessage = item.signed_in ?
ElideMessage(
- l10n_util::GetStringFUTF16(IDS_PROFILES_NOT_YOU, avatarItem.name),
+ l10n_util::GetStringFUTF16(IDS_PROFILES_NOT_YOU, item.name),
kFixedMenuWidth - 2 * kHorizontalSpacing) :
nil;
NSString* buttonMessage = l10n_util::GetNSString(
@@ -1469,6 +1490,51 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver,
buttonAction:@selector(seeWhatsNew:)];
}
+- (NSView*)buildRightClickTutorialView {
+ NSString* titleMessage = l10n_util::GetNSString(
+ IDS_PROFILES_RIGHT_CLICK_TUTORIAL_TITLE);
+ NSString* contentMessage = l10n_util::GetNSString(
+ IDS_PROFILES_RIGHT_CLICK_TUTORIAL_CONTENT_TEXT);
+ NSString* buttonMessage = l10n_util::GetNSString(
+ IDS_PROFILES_TUTORIAL_OK_BUTTON);
+
+ return
+ [self tutorialViewWithMode:profiles::TUTORIAL_MODE_RIGHT_CLICK_SWITCHING
+ titleMessage:titleMessage
+ contentMessage:contentMessage
+ linkMessage:nil
+ buttonMessage:buttonMessage
+ stackButton:NO
+ hasCloseButton:NO
+ linkAction:nil
+ buttonAction:@selector(dismissTutorial:)];
+}
+
+- (NSView*)buildTutorialViewIfNeededForItem:(const AvatarMenu::Item&)item {
+ if (tutorialMode_ == profiles::TUTORIAL_MODE_CONFIRM_SIGNIN)
+ return [self buildSigninConfirmationView];
+
+ if (tutorialMode_ == profiles::TUTORIAL_MODE_SHOW_ERROR)
+ return [self buildSigninErrorView];
+
+ if ([self shouldShowWelcomeUpgradeTutorial]) {
groby-ooo-7-16 2015/05/07 01:59:01 If I read this correctly, this code only updates t
anthonyvd 2015/05/12 16:09:11 I moved this code as-is from line 1439 of the prev
+ if (tutorialMode_ != profiles::TUTORIAL_MODE_WELCOME_UPGRADE) {
+ Profile* profile = browser_->profile();
+ const int showCount = profile->GetPrefs()->GetInteger(
+ prefs::kProfileAvatarTutorialShown);
+ profile->GetPrefs()->SetInteger(
+ prefs::kProfileAvatarTutorialShown, showCount + 1);
+ }
+
+ return [self buildWelcomeUpgradeTutorialView:item];
+ }
+
+ if ([self shouldShowRightClickTutorialView])
+ return [self buildRightClickTutorialView];
+
+ return nil;
+}
+
- (NSView*)tutorialViewWithMode:(profiles::TutorialMode)mode
titleMessage:(NSString*)titleMessage
contentMessage:(NSString*)contentMessage

Powered by Google App Engine
This is Rietveld 408576698