Chromium Code Reviews| Index: chrome/browser/signin/signin_promo.cc |
| diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signin_promo.cc |
| index be633aca22a9e59eab23075232c91d18422a8444..82faab613b838696b149ff1ed377b0b4a0cd4851 100644 |
| --- a/chrome/browser/signin/signin_promo.cc |
| +++ b/chrome/browser/signin/signin_promo.cc |
| @@ -45,6 +45,7 @@ namespace { |
| const char kSignInPromoQueryKeyAutoClose[] = "auto_close"; |
| const char kSignInPromoQueryKeyContinue[] = "continue"; |
| +const char kSignInPromoQueryKeyContinueUrl[] = "continueUrl"; |
|
guohui
2014/03/24 20:55:58
for better consistency with other param names such
Ilya Sherman
2014/03/26 08:21:39
Done.
|
| const char kSignInPromoQueryKeySource[] = "source"; |
| const char kSignInPromoQueryKeyConstrained[] = "constrained"; |
| @@ -178,6 +179,13 @@ GURL GetPromoURL(Source source, bool auto_close) { |
| } |
| GURL GetPromoURL(Source source, bool auto_close, bool is_constrained) { |
| + return GetPromoURLWithContinueURL(source, auto_close, is_constrained, GURL()); |
| +} |
| + |
| +GURL GetPromoURLWithContinueURL(Source source, |
| + bool auto_close, |
| + bool is_constrained, |
| + GURL continue_url) { |
| DCHECK_NE(SOURCE_UNKNOWN, source); |
| if (!switches::IsEnableWebBasedSignin()) { |
| @@ -187,6 +195,15 @@ GURL GetPromoURL(Source source, bool auto_close, bool is_constrained) { |
| base::StringAppendF(&url, "&%s=1", kSignInPromoQueryKeyAutoClose); |
| if (is_constrained) |
| base::StringAppendF(&url, "&%s=1", kSignInPromoQueryKeyConstrained); |
| + if (!continue_url.is_empty()) { |
| + DCHECK(continue_url.is_valid()); |
| + std::string escaped_continue_url = |
| + net::EscapeQueryParamValue(continue_url.spec(), false); |
| + base::StringAppendF(&url, |
| + "&%s=%s", |
| + kSignInPromoQueryKeyContinueUrl, |
| + escaped_continue_url.c_str()); |
| + } |
| return GURL(url); |
| } |
| @@ -206,14 +223,19 @@ GURL GetPromoURL(Source source, bool auto_close, bool is_constrained) { |
| // See OneClickSigninHelper for details. |
| std::string query_string = "?service=chromiumsync&sarp=1"; |
| - std::string continue_url = GetLandingURL(kSignInPromoQueryKeySource, |
| - static_cast<int>(source)).spec(); |
| - if (auto_close) |
| - base::StringAppendF(&continue_url, "&%s=1", kSignInPromoQueryKeyAutoClose); |
| + DCHECK(continue_url.is_empty()); |
| + std::string continue_url_str = GetLandingURL(kSignInPromoQueryKeySource, |
| + static_cast<int>(source)).spec(); |
| + if (auto_close) { |
| + base::StringAppendF( |
| + &continue_url_str, "&%s=1", kSignInPromoQueryKeyAutoClose); |
| + } |
| - base::StringAppendF(&query_string, "&%s=%s", kSignInPromoQueryKeyContinue, |
| - net::EscapeQueryParamValue( |
| - continue_url, false).c_str()); |
| + base::StringAppendF( |
| + &query_string, |
| + "&%s=%s", |
| + kSignInPromoQueryKeyContinue, |
| + net::EscapeQueryParamValue(continue_url_str, false).c_str()); |
| return GaiaUrls::GetInstance()->service_login_url().Resolve(query_string); |
| } |