Index: chrome/browser/signin/signin_header_helper.cc |
diff --git a/chrome/browser/signin/signin_header_helper.cc b/chrome/browser/signin/signin_header_helper.cc |
index 96f1a65360e9e987ef480a20e8a5cd0943920e39..8b958a0a583c3af7a97764c660858548b63663ce 100644 |
--- a/chrome/browser/signin/signin_header_helper.cc |
+++ b/chrome/browser/signin/signin_header_helper.cc |
@@ -30,11 +30,27 @@ namespace { |
const char kChromeConnectedHeader[] = "X-Chrome-Connected"; |
const char kChromeManageAccountsHeader[] = "X-Chrome-Manage-Accounts"; |
-const char kGaiaSignoutOptionsIncognito[] = "SIGNOUTOPTIONS_INCOGNITO"; |
const char kGaiaIdAttrName[] = "id"; |
const char kProfileModeAttrName[] = "mode"; |
const char kEnableAccountConsistencyAttrName[] = "enable_account_consistency"; |
+// Determine the service type that has been passed from GAIA in the header. |
+signin::GAIAServiceType GetGAIAServiceTypeFromHeader( |
+ const std::string& header_value) { |
+ if (header_value == "SIGNOUT") |
+ return signin::GAIA_SERVICE_TYPE_SIGNOUT; |
+ else if (header_value == "SIGNOUTOPTIONS_INCOGNITO") |
+ return signin::GAIA_SERVICE_TYPE_SIGNOUTOPTIONS_INCOGNITO; |
+ else if (header_value == "ADDSESSION") |
+ return signin::GAIA_SERVICE_TYPE_ADDSESSION; |
+ else if (header_value == "REAUTH") |
+ return signin::GAIA_SERVICE_TYPE_REAUTH; |
+ else if (header_value == "DEFAULT") |
+ return signin::GAIA_SERVICE_TYPE_DEFAULT; |
+ else |
+ return signin::GAIA_SERVICE_TYPE_NONE; |
+} |
+ |
// Processes the mirror response header on the UI thread. Currently depending |
// on the value of |header_value|, it either shows the profile avatar menu, or |
// opens an incognito window/tab. |
@@ -47,22 +63,28 @@ void ProcessMirrorHeaderUIThread( |
if (!web_contents) |
return; |
+ signin::GAIAServiceType service_type = |
+ GetGAIAServiceTypeFromHeader(header_value); |
+ |
#if !defined(OS_ANDROID) |
Browser* browser = chrome::FindBrowserWithWebContents(web_contents); |
if (browser) { |
- if (header_value == kGaiaSignoutOptionsIncognito) { |
+ if (service_type == signin::GAIA_SERVICE_TYPE_SIGNOUTOPTIONS_INCOGNITO) { |
chrome::NewIncognitoWindow(browser); |
} else { |
browser->window()->ShowAvatarBubbleFromAvatarButton( |
- BrowserWindow::AVATAR_BUBBLE_MODE_ACCOUNT_MANAGEMENT); |
+ BrowserWindow::AVATAR_BUBBLE_MODE_ACCOUNT_MANAGEMENT, |
+ service_type); |
} |
} |
#else // defined(OS_ANDROID) |
- if (header_value == kGaiaSignoutOptionsIncognito) { |
+ if (service_type == signin::GAIA_SERVICE_TYPE_SIGNOUTOPTIONS_INCOGNITO) { |
web_contents->OpenURL(content::OpenURLParams( |
GURL(chrome::kChromeUINativeNewTabURL), content::Referrer(), |
OFF_THE_RECORD, content::PAGE_TRANSITION_AUTO_TOPLEVEL, false)); |
} else { |
+ // TODO(mlerman): pass service_type to android logic for UMA metrics |
+ // that will eventually be installed there. |
AccountManagementScreenHelper::OpenAccountManagementScreen( |
Profile::FromBrowserContext(web_contents->GetBrowserContext())); |
} |