Index: chrome/browser/ui/webui/signin/inline_login_handler_impl.cc |
diff --git a/chrome/browser/ui/webui/signin/inline_login_handler_impl.cc b/chrome/browser/ui/webui/signin/inline_login_handler_impl.cc |
index c66580476648fd725f77a252275e569c1c13dcbb..0fd744a844ab3b2c28e4aad2b6f205034773b239 100644 |
--- a/chrome/browser/ui/webui/signin/inline_login_handler_impl.cc |
+++ b/chrome/browser/ui/webui/signin/inline_login_handler_impl.cc |
@@ -4,7 +4,6 @@ |
#include "chrome/browser/ui/webui/signin/inline_login_handler_impl.h" |
-#include "base/atomic_sequence_num.h" |
#include "base/bind.h" |
#include "base/prefs/pref_service.h" |
#include "base/strings/string_number_conversions.h" |
@@ -20,6 +19,7 @@ |
#include "chrome/browser/ui/sync/one_click_signin_helper.h" |
#include "chrome/browser/ui/tabs/tab_strip_model.h" |
#include "chrome/common/pref_names.h" |
+#include "chrome/common/url_constants.h" |
#include "content/public/browser/storage_partition.h" |
#include "content/public/browser/web_contents.h" |
#include "content/public/browser/web_ui.h" |
@@ -30,13 +30,10 @@ |
namespace { |
-// Global SequenceNumber used for generating unique webview partition IDs. |
-base::StaticAtomicSequenceNumber next_partition_id; |
- |
} // empty namespace |
InlineLoginHandlerImpl::InlineLoginHandlerImpl() |
- : weak_factory_(this), choose_what_to_sync_(false), partition_id_("") { |
+ : weak_factory_(this), choose_what_to_sync_(false) { |
} |
InlineLoginHandlerImpl::~InlineLoginHandlerImpl() {} |
@@ -50,7 +47,7 @@ void InlineLoginHandlerImpl::RegisterMessages() { |
} |
void InlineLoginHandlerImpl::SetExtraInitParams(base::DictionaryValue& params) { |
- params.SetInteger("authMode", InlineLoginHandler::kInlineAuthMode); |
+ params.SetInteger("authMode", InlineLoginHandler::kDesktopAuthMode); |
const GURL& current_url = web_ui()->GetWebContents()->GetURL(); |
signin::Source source = signin::GetSourceForPromoURL(current_url); |
@@ -82,13 +79,6 @@ void InlineLoginHandlerImpl::SetExtraInitParams(base::DictionaryValue& params) { |
net::GetValueForKeyInQuery(current_url, "constrained", &is_constrained); |
if (!is_constrained.empty()) |
params.SetString("constrained", is_constrained); |
- |
- net::GetValueForKeyInQuery(current_url, "partitionId", &partition_id_); |
- if (partition_id_.empty()) { |
- partition_id_ = |
- "gaia-webview-" + base::IntToString(next_partition_id.GetNext()); |
- } |
- params.SetString("partitionId", partition_id_); |
} |
@@ -101,8 +91,6 @@ void InlineLoginHandlerImpl::HandleSwitchToFullTabMessage( |
GURL main_frame_url(web_contents->GetURL()); |
main_frame_url = net::AppendOrReplaceQueryParameter( |
main_frame_url, "frameUrl", UTF16ToASCII(url_str)); |
- main_frame_url = net::AppendOrReplaceQueryParameter( |
- main_frame_url, "partitionId", partition_id_); |
chrome::NavigateParams params( |
Profile::FromWebUI(web_ui()), |
net::AppendOrReplaceQueryParameter(main_frame_url, "constrained", "0"), |
@@ -113,7 +101,7 @@ void InlineLoginHandlerImpl::HandleSwitchToFullTabMessage( |
} |
void InlineLoginHandlerImpl::CompleteLogin(const base::ListValue* args) { |
- DCHECK(email_.empty() && password_.empty()); |
+ DCHECK(email_.empty() && password_.empty() && session_index_.empty()); |
const base::DictionaryValue* dict = NULL; |
base::string16 email; |
@@ -133,6 +121,10 @@ void InlineLoginHandlerImpl::CompleteLogin(const base::ListValue* args) { |
dict->GetString("password", &password); |
password_ = UTF16ToASCII(password); |
+ base::string16 session_index; |
+ dict->GetString("sessionIndex", &session_index); |
+ session_index_ = UTF16ToASCII(session_index); |
+ DCHECK(!session_index_.empty()); |
dict->GetBoolean("chooseWhatToSync", &choose_what_to_sync_); |
content::WebContents* contents = web_ui()->GetWebContents(); |
@@ -152,13 +144,12 @@ void InlineLoginHandlerImpl::CompleteLogin(const base::ListValue* args) { |
content::StoragePartition* partition = |
content::BrowserContext::GetStoragePartitionForSite( |
contents->GetBrowserContext(), |
- GURL("chrome-guest://mfffpogegjflfpflabcdkioaeobkgjik/?" + |
- partition_id_)); |
+ GURL(chrome::kChromeUIChromeSigninURL)); |
auth_fetcher_.reset(new GaiaAuthFetcher(this, |
GaiaConstants::kChromeSource, |
partition->GetURLRequestContext())); |
- auth_fetcher_->StartCookieForOAuthCodeExchange("0"); |
+ auth_fetcher_->StartCookieForOAuthCodeExchange(session_index_); |
} |
void InlineLoginHandlerImpl::OnClientOAuthCodeSuccess( |
@@ -216,6 +207,7 @@ void InlineLoginHandlerImpl::OnClientOAuthCodeSuccess( |
email_.clear(); |
password_.clear(); |
+ session_index_.clear(); |
web_ui()->CallJavascriptFunction("inline.login.closeDialog"); |
} |
@@ -239,6 +231,7 @@ void InlineLoginHandlerImpl::HandleLoginError(const std::string& error_msg) { |
email_.clear(); |
password_.clear(); |
+ session_index_.clear(); |
} |
void InlineLoginHandlerImpl::SyncStarterCallback( |