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

Unified Diff: chrome/browser/signin/signin_header_helper.cc

Issue 345533005: Parse extra parameters on x-chrome-manage-accounts header (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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/signin/signin_header_helper.cc
diff --git a/chrome/browser/signin/signin_header_helper.cc b/chrome/browser/signin/signin_header_helper.cc
index 92c87d5090d837641393eced672093f8f14456db..7bd3b744396bd98b0e96f8bbfa888d43e8526dc6 100644
--- a/chrome/browser/signin/signin_header_helper.cc
+++ b/chrome/browser/signin/signin_header_helper.cc
@@ -38,6 +38,12 @@ const char kGaiaIdAttrName[] = "id";
const char kProfileModeAttrName[] = "mode";
const char kEnableAccountConsistencyAttrName[] = "enable_account_consistency";
+const char kServiceTypeAttrName[] = "action";
+const char kEmailAttrName[] = "email";
+const char kIsSamlAttrName[] = "is_saml";
+const char kContinueUrlAttrName[] = "continue_url";
+const char kIsSameTabAttrName[] = "is_same_tab";
+
// Determines the service type that has been passed from GAIA in the header.
signin::GAIAServiceType GetGAIAServiceTypeFromHeader(
const std::string& header_value) {
@@ -102,7 +108,7 @@ void ProcessMirrorHeaderUIThread(
} else {
browser->window()->ShowAvatarBubbleFromAvatarButton(
BrowserWindow::AVATAR_BUBBLE_MODE_ACCOUNT_MANAGEMENT,
- service_type);
+ manage_accounts_params);
}
}
#else // defined(OS_ANDROID)
@@ -203,9 +209,21 @@ ManageAccountsParams GetManageAccountsParams(net::URLRequest* request,
MirrorResponseHeaderDictionary header_dictionary =
ParseMirrorResponseHeader(header_value);
- if (header_dictionary.count("action")) {
- params.service_type =
- GetGAIAServiceTypeFromHeader(header_dictionary["action"]);
+ MirrorResponseHeaderDictionary::const_iterator it = header_dictionary.begin();
+ for (; it != header_dictionary.end(); ++it) {
+ const std::string key_name(it->first);
+ if (key_name == kServiceTypeAttrName) {
+ params.service_type =
+ GetGAIAServiceTypeFromHeader(header_dictionary[kServiceTypeAttrName]);
+ } else if (key_name == kEmailAttrName) {
+ params.email = header_dictionary[kEmailAttrName];
+ } else if (key_name == kIsSamlAttrName) {
+ params.is_saml = header_dictionary[kIsSamlAttrName] == "true";
+ } else if (key_name == kContinueUrlAttrName) {
+ params.continue_url = header_dictionary[kContinueUrlAttrName];
+ } else if (key_name == kIsSameTabAttrName) {
+ params.is_same_tab = header_dictionary[kIsSameTabAttrName] == "true";
+ }
}
return params;
}
@@ -220,6 +238,8 @@ void ProcessMirrorResponseHeaderIfExists(
#else
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
ManageAccountsParams params = GetManageAccountsParams(request, io_data);
+ params.child_id = child_id;
+ params.route_id = route_id;
if (params.service_type == GAIA_SERVICE_TYPE_NONE)
return;

Powered by Google App Engine
This is Rietveld 408576698