| 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";
|
| 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);
|
| }
|
|
|