| 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 2e479e25a5056e12959da4cf4014d34cecd9aab2..8337413e4f4919ee37f2c39f1ecfb80052628fab 100644
|
| --- a/chrome/browser/signin/signin_header_helper.cc
|
| +++ b/chrome/browser/signin/signin_header_helper.cc
|
| @@ -77,11 +77,13 @@ MirrorResponseHeaderDictionary ParseMirrorResponseHeader(
|
| i != fields.end(); ++i) {
|
| std::string field(*i);
|
| std::vector<std::string> tokens;
|
| - if (Tokenize(field, "=", &tokens) != 2) {
|
| + size_t delim = field.find_first_of('=');
|
| + if (delim == std::string::npos) {
|
| DLOG(WARNING) << "Unexpected GAIA header field '" << field << "'.";
|
| continue;
|
| }
|
| - dictionary[tokens[0]] = tokens[1];
|
| + dictionary[field.substr(0, delim)] = net::UnescapeURLComponent(
|
| + field.substr(delim + 1), net::UnescapeRule::URL_SPECIAL_CHARS);
|
| }
|
| return dictionary;
|
| }
|
| @@ -140,7 +142,7 @@ void ProcessMirrorHeaderUIThread(
|
| chrome::NewIncognitoWindow(browser);
|
| return;
|
| case signin::GAIA_SERVICE_TYPE_ADDSESSION:
|
| - bubble_mode = BrowserWindow::AVATAR_BUBBLE_MODE_SIGNIN;
|
| + bubble_mode = BrowserWindow::AVATAR_BUBBLE_MODE_ADD_ACCOUNT;
|
| break;
|
| case signin::GAIA_SERVICE_TYPE_REAUTH:
|
| bubble_mode = BrowserWindow::AVATAR_BUBBLE_MODE_REAUTH;
|
| @@ -153,9 +155,12 @@ void ProcessMirrorHeaderUIThread(
|
| }
|
| #else // defined(OS_ANDROID)
|
| if (service_type == signin::GAIA_SERVICE_TYPE_INCOGNITO) {
|
| + GURL url(manage_accounts_params.continue_url.empty() ?
|
| + chrome::kChromeUINativeNewTabURL :
|
| + manage_accounts_params.continue_url);
|
| web_contents->OpenURL(content::OpenURLParams(
|
| - GURL(chrome::kChromeUINativeNewTabURL), content::Referrer(),
|
| - OFF_THE_RECORD, ui::PAGE_TRANSITION_AUTO_TOPLEVEL, false));
|
| + url, content::Referrer(), OFF_THE_RECORD,
|
| + ui::PAGE_TRANSITION_AUTO_TOPLEVEL, false));
|
| } else {
|
| AccountManagementScreenHelper::OpenAccountManagementScreen(
|
| Profile::FromBrowserContext(web_contents->GetBrowserContext()),
|
|
|