| Index: chrome/browser/ui/webui/signin/inline_login_handler.cc
|
| diff --git a/chrome/browser/ui/webui/signin/inline_login_handler.cc b/chrome/browser/ui/webui/signin/inline_login_handler.cc
|
| index b5d6653186a13782e26098ce6cd0f705547a28bb..11190a7af90fdb88ae6e0a0979c5e7ee9100a050 100644
|
| --- a/chrome/browser/ui/webui/signin/inline_login_handler.cc
|
| +++ b/chrome/browser/ui/webui/signin/inline_login_handler.cc
|
| @@ -6,9 +6,11 @@
|
|
|
| #include "base/bind.h"
|
| #include "base/prefs/pref_service.h"
|
| +#include "base/strings/string_number_conversions.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/values.h"
|
| #include "chrome/browser/browser_process.h"
|
| +#include "chrome/browser/extensions/signin/gaia_auth_extension_loader.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/signin/signin_promo.h"
|
| #include "chrome/browser/ui/browser_navigator.h"
|
| @@ -60,11 +62,12 @@ void InlineLoginHandler::HandleInitializeMessage(const base::ListValue* args) {
|
| signin::GetLandingURL(signin::kSignInPromoQueryKeySource,
|
| static_cast<int>(source)).spec());
|
|
|
| + Profile* profile = Profile::FromWebUI(web_ui());
|
| std::string default_email;
|
| if (source != signin_metrics::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT &&
|
| source != signin_metrics::SOURCE_REAUTH) {
|
| - default_email = Profile::FromWebUI(web_ui())->GetPrefs()->GetString(
|
| - prefs::kGoogleServicesLastUsername);
|
| + default_email =
|
| + profile->GetPrefs()->GetString(prefs::kGoogleServicesLastUsername);
|
| } else {
|
| if (!net::GetValueForKeyInQuery(current_url, "email", &default_email))
|
| default_email.clear();
|
| @@ -72,10 +75,16 @@ void InlineLoginHandler::HandleInitializeMessage(const base::ListValue* args) {
|
| if (!default_email.empty())
|
| params.SetString("email", default_email);
|
|
|
| + std::string frame_url_id_str;
|
| + net::GetValueForKeyInQuery(current_url, "frameUrlId", &frame_url_id_str);
|
| + int frame_url_id;
|
| std::string frame_url;
|
| - net::GetValueForKeyInQuery(current_url, "frameUrl", &frame_url);
|
| - if (!frame_url.empty())
|
| + if (!frame_url_id_str.empty() &&
|
| + base::StringToInt(frame_url_id_str, &frame_url_id) &&
|
| + extensions::GaiaAuthExtensionLoader::Get(profile)
|
| + ->GetData(frame_url_id, &frame_url)) {
|
| params.SetString("frameUrl", frame_url);
|
| + }
|
|
|
| std::string is_constrained;
|
| net::GetValueForKeyInQuery(
|
| @@ -101,13 +110,17 @@ void InlineLoginHandler::HandleCompleteLoginMessage(
|
|
|
| void InlineLoginHandler::HandleSwitchToFullTabMessage(
|
| const base::ListValue* args) {
|
| - base::string16 url_str;
|
| + std::string url_str;
|
| CHECK(args->GetString(0, &url_str));
|
|
|
| + Profile* profile = Profile::FromWebUI(web_ui());
|
| + const int frame_url_id =
|
| + extensions::GaiaAuthExtensionLoader::Get(profile)->AddData(url_str);
|
| +
|
| content::WebContents* web_contents = web_ui()->GetWebContents();
|
| GURL main_frame_url(web_contents->GetURL());
|
| main_frame_url = net::AppendOrReplaceQueryParameter(
|
| - main_frame_url, "frameUrl", base::UTF16ToASCII(url_str));
|
| + main_frame_url, "frameUrlId", base::IntToString(frame_url_id));
|
|
|
| // Adds extra parameters to the signin URL so that Chrome will close the tab
|
| // and show the account management view of the avatar menu upon completion.
|
| @@ -117,7 +130,7 @@ void InlineLoginHandler::HandleSwitchToFullTabMessage(
|
| main_frame_url, signin::kSignInPromoQueryKeyShowAccountManagement, "1");
|
|
|
| chrome::NavigateParams params(
|
| - Profile::FromWebUI(web_ui()),
|
| + profile,
|
| net::AppendOrReplaceQueryParameter(
|
| main_frame_url, signin::kSignInPromoQueryKeyConstrained, "0"),
|
| ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
|
|
|