Index: chrome/browser/signin/signin_promo.cc |
diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signin_promo.cc |
index 9db75c826cf8fbd6ad0365ea3f98560e8645899e..1377d70564f02a2d40db29ba534d689a17b31f3c 100644 |
--- a/chrome/browser/signin/signin_promo.cc |
+++ b/chrome/browser/signin/signin_promo.cc |
@@ -17,6 +17,7 @@ |
#include "chrome/browser/profiles/profile_info_cache.h" |
#include "chrome/browser/profiles/profile_manager.h" |
#include "chrome/browser/signin/account_tracker_service_factory.h" |
+#include "chrome/browser/signin/signin_error_controller_factory.h" |
#include "chrome/browser/signin/signin_manager_factory.h" |
#include "chrome/browser/ui/webui/options/core_options_handler.h" |
#include "chrome/browser/ui/webui/theme_source.h" |
@@ -221,6 +222,33 @@ GURL GetSigninPartitionURL() { |
return GURL("chrome-guest://chrome-signin/?"); |
} |
+GURL GetSigninURLFromBubbleViewMode(Profile* profile, |
+ profiles::BubbleViewMode mode) { |
+ switch (mode) { |
+ case profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN: |
+ return GetPromoURL(signin_metrics::SOURCE_AVATAR_BUBBLE_SIGN_IN, |
+ 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 */); |
+ 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()); |
+ break; |
+ } |
+ default: |
+ NOTREACHED() << "Called with invalid mode=" << mode; |
+ return GURL(); |
+ } |
+} |
+ |
signin_metrics::Source GetSourceForPromoURL(const GURL& url) { |
std::string value; |
if (net::GetValueForKeyInQuery(url, kSignInPromoQueryKeySource, &value)) { |