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 1377d70564f02a2d40db29ba534d689a17b31f3c..d3e708284f7616da7416d0318e04a76a8b1d1d5f 100644 |
| --- a/chrome/browser/signin/signin_promo.cc |
| +++ b/chrome/browser/signin/signin_promo.cc |
| @@ -165,25 +165,47 @@ void SetUserSkippedPromo(Profile* profile) { |
| profile->GetPrefs()->SetBoolean(prefs::kSignInPromoUserSkipped, true); |
| } |
| -GURL GetLandingURL(const char* option, int value) { |
| - std::string url = base::StringPrintf("%s/success.html?%s=%d", |
| - extensions::kGaiaAuthExtensionOrigin, |
| - option, |
| - value); |
| +GURL GetLandingURL(signin_metrics::AccessPoint access_point) { |
| + std::string url = base::StringPrintf( |
| + "%s/success.html?%s=%d", extensions::kGaiaAuthExtensionOrigin, |
| + kSignInPromoQueryKeyAccessPoint, access_point); |
| + |
| + // TODO(gogerald): right now, gaia server needs to distinguish the source from |
| + // signin_metrics::SOURCE_START_PAGE, signin_metrics::SOURCE_SETTINGS and |
| + // the others to show advanced sync settings, remove them after |
| + // switching to Minute Maid sign in flow. |
| + if (access_point == signin_metrics::ACCESS_POINT_START_PAGE) { |
| + base::StringAppendF(&url, "&%s=%d", kSignInPromoQueryKeySource, |
| + signin_metrics::SOURCE_START_PAGE); |
| + } else if (access_point == signin_metrics::ACCESS_POINT_SETTINGS) { |
| + base::StringAppendF(&url, "&%s=%d", kSignInPromoQueryKeySource, |
| + signin_metrics::SOURCE_SETTINGS); |
| + } else { |
| + base::StringAppendF(&url, "&%s=%d", kSignInPromoQueryKeySource, |
| + signin_metrics::SOURCE_OTHERS); |
| + } |
| + |
| return GURL(url); |
| } |
| -GURL GetPromoURL(signin_metrics::Source source, bool auto_close) { |
| - return GetPromoURL(source, auto_close, false /* is_constrained */); |
| +GURL GetPromoURL(signin_metrics::AccessPoint access_point, |
| + signin_metrics::Reason reason, |
| + bool auto_close) { |
| + return GetPromoURL(access_point, reason, auto_close, |
| + false /* is_constrained */); |
| } |
| -GURL GetPromoURL(signin_metrics::Source source, |
| +GURL GetPromoURL(signin_metrics::AccessPoint access_point, |
| + signin_metrics::Reason reason, |
| bool auto_close, |
| bool is_constrained) { |
| - DCHECK_NE(signin_metrics::SOURCE_UNKNOWN, source); |
| + CHECK(access_point < signin_metrics::ACCESS_POINT_MAX); |
|
Bernhard Bauer
2015/12/04 11:06:24
CHECK_LT for slightly nicer error messages.
gogerald1
2015/12/04 20:49:09
Done.
|
| + CHECK(reason < signin_metrics::REASON_MAX); |
| std::string url(chrome::kChromeUIChromeSigninURL); |
| - base::StringAppendF(&url, "?%s=%d", kSignInPromoQueryKeySource, source); |
| + base::StringAppendF(&url, "?%s=%d", kSignInPromoQueryKeyAccessPoint, |
| + access_point); |
| + base::StringAppendF(&url, "&%s=%d", kSignInPromoQueryKeyReason, reason); |
| if (auto_close) |
| base::StringAppendF(&url, "&%s=1", kSignInPromoQueryKeyAutoClose); |
| if (is_constrained) |
| @@ -191,16 +213,20 @@ GURL GetPromoURL(signin_metrics::Source source, |
| return GURL(url); |
| } |
| -GURL GetReauthURL(Profile* profile, const std::string& account_id) { |
| +GURL GetReauthURL(signin_metrics::AccessPoint access_point, |
| + signin_metrics::Reason reason, |
| + Profile* profile, |
| + const std::string& account_id) { |
| AccountInfo info = AccountTrackerServiceFactory::GetForProfile(profile) |
| ->GetAccountInfo(account_id); |
| - return GetReauthURLWithEmail(info.email); |
| + return GetReauthURLWithEmail(access_point, reason, info.email); |
| } |
| -GURL GetReauthURLWithEmail(const std::string& email) { |
| - GURL url = signin::GetPromoURL( |
| - signin_metrics::SOURCE_REAUTH, true /* auto_close */, |
| - true /* is_constrained */); |
| +GURL GetReauthURLWithEmail(signin_metrics::AccessPoint access_point, |
| + signin_metrics::Reason reason, |
| + const std::string& email) { |
| + GURL url = signin::GetPromoURL(access_point, reason, true /* auto_close */, |
| + true /* is_constrained */); |
| url = net::AppendQueryParameter(url, "email", email); |
| url = net::AppendQueryParameter(url, "validateEmail", "1"); |
| @@ -223,24 +249,26 @@ GURL GetSigninPartitionURL() { |
| } |
| GURL GetSigninURLFromBubbleViewMode(Profile* profile, |
| - profiles::BubbleViewMode mode) { |
| + profiles::BubbleViewMode mode, |
| + signin_metrics::AccessPoint access_point) { |
| switch (mode) { |
| case profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN: |
| - return GetPromoURL(signin_metrics::SOURCE_AVATAR_BUBBLE_SIGN_IN, |
| - false /* auto_close */, |
| - true /* is_constrained */); |
| + return GetPromoURL(access_point, |
| + signin_metrics::REASON_SIGNIN_PRIMARY_ACCOUNT, |
| + false /* auto_close */, true /* is_constrained */); |
| break; |
| case profiles::BUBBLE_VIEW_MODE_GAIA_ADD_ACCOUNT: |
| - return GetPromoURL(signin_metrics::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT, |
| - false /* auto_close */, |
| - true /* is_constrained */); |
| + return GetPromoURL(access_point, |
| + signin_metrics::REASON_ADD_SECONDARY_ACCOUNT, |
| + false /* auto_close */, true /* is_constrained */); |
| break; |
| case profiles::BUBBLE_VIEW_MODE_GAIA_REAUTH: { |
| const SigninErrorController* error_controller = |
| SigninErrorControllerFactory::GetForProfile(profile); |
| CHECK(error_controller); |
| DCHECK(error_controller->HasError()); |
| - return GetReauthURL(profile, error_controller->error_account_id()); |
| + return GetReauthURL(access_point, signin_metrics::REASON_REAUTHENTICATION, |
| + profile, error_controller->error_account_id()); |
| break; |
| } |
| default: |
| @@ -249,17 +277,33 @@ GURL GetSigninURLFromBubbleViewMode(Profile* profile, |
| } |
| } |
| -signin_metrics::Source GetSourceForPromoURL(const GURL& url) { |
| +signin_metrics::AccessPoint GetAccessPointForPromoURL(const GURL& url) { |
| + std::string value; |
| + if (net::GetValueForKeyInQuery(url, kSignInPromoQueryKeyAccessPoint, |
| + &value)) { |
| + int access_point = 0; |
| + if (base::StringToInt(value, &access_point) && |
| + access_point >= signin_metrics::ACCESS_POINT_START_PAGE && |
| + access_point < signin_metrics::ACCESS_POINT_MAX) { |
| + return static_cast<signin_metrics::AccessPoint>(access_point); |
| + } |
| + CHECK(false); |
| + } |
| + return signin_metrics::ACCESS_POINT_MAX; |
| +} |
| + |
| +signin_metrics::Reason GetSigninReasonForPromoURL(const GURL& url) { |
| std::string value; |
| - if (net::GetValueForKeyInQuery(url, kSignInPromoQueryKeySource, &value)) { |
| - int source = 0; |
| - if (base::StringToInt(value, &source) && |
| - source >= signin_metrics::SOURCE_START_PAGE && |
| - source < signin_metrics::SOURCE_UNKNOWN) { |
| - return static_cast<signin_metrics::Source>(source); |
| + if (net::GetValueForKeyInQuery(url, kSignInPromoQueryKeyReason, &value)) { |
| + int reason = 0; |
| + if (base::StringToInt(value, &reason) && |
| + reason >= signin_metrics::REASON_SIGNIN_PRIMARY_ACCOUNT && |
| + reason < signin_metrics::REASON_MAX) { |
| + return static_cast<signin_metrics::Reason>(reason); |
| } |
| + CHECK(false); |
|
Bernhard Bauer
2015/12/04 11:06:24
Move the condition into the CHECK? Also, seeing as
gogerald1
2015/12/04 20:49:09
Done.
|
| } |
| - return signin_metrics::SOURCE_UNKNOWN; |
| + return signin_metrics::REASON_MAX; |
| } |
| bool IsAutoCloseEnabledInURL(const GURL& url) { |