Commit 2698141e authored by pavely@chromium.org's avatar pavely@chromium.org

Pass signin_scoped_device_id to refresh token request on ChromeOS

During signin, when ChromeOS requests refresh token, get
signin scoped device_id from SigninClient and pass it to GaiaAuthFetcher.

BUG=382968
R=nkostylev@chromium.org

Review URL: https://codereview.chromium.org/382983003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@285422 0039d316-1c4b-4281-b951-d872f2087c98
parent 69a768a9
...@@ -14,11 +14,13 @@ ...@@ -14,11 +14,13 @@
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/login/users/user_manager.h" #include "chrome/browser/chromeos/login/users/user_manager.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/signin/chrome_signin_client_factory.h"
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h" #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
#include "chrome/browser/signin/signin_manager_factory.h" #include "chrome/browser/signin/signin_manager_factory.h"
#include "chrome/common/chrome_switches.h" #include "chrome/common/chrome_switches.h"
#include "chromeos/chromeos_switches.h" #include "chromeos/chromeos_switches.h"
#include "components/signin/core/browser/profile_oauth2_token_service.h" #include "components/signin/core/browser/profile_oauth2_token_service.h"
#include "components/signin/core/browser/signin_client.h"
#include "components/signin/core/browser/signin_manager.h" #include "components/signin/core/browser/signin_manager.h"
#include "google_apis/gaia/gaia_auth_util.h" #include "google_apis/gaia/gaia_auth_util.h"
#include "google_apis/gaia/gaia_constants.h" #include "google_apis/gaia/gaia_constants.h"
...@@ -219,9 +221,15 @@ void OAuth2LoginManager::FetchOAuth2Tokens() { ...@@ -219,9 +221,15 @@ void OAuth2LoginManager::FetchOAuth2Tokens() {
// If we have authenticated cookie jar, get OAuth1 token first, then fetch // If we have authenticated cookie jar, get OAuth1 token first, then fetch
// SID/LSID cookies through OAuthLogin call. // SID/LSID cookies through OAuthLogin call.
if (restore_strategy_ == RESTORE_FROM_COOKIE_JAR) { if (restore_strategy_ == RESTORE_FROM_COOKIE_JAR) {
SigninClient* signin_client =
ChromeSigninClientFactory::GetForProfile(user_profile_);
std::string signin_scoped_device_id =
signin_client->GetSigninScopedDeviceId();
oauth2_token_fetcher_.reset( oauth2_token_fetcher_.reset(
new OAuth2TokenFetcher(this, auth_request_context_.get())); new OAuth2TokenFetcher(this, auth_request_context_.get()));
oauth2_token_fetcher_->StartExchangeFromCookies(std::string()); oauth2_token_fetcher_->StartExchangeFromCookies(std::string(),
signin_scoped_device_id);
} else if (restore_strategy_ == RESTORE_FROM_AUTH_CODE) { } else if (restore_strategy_ == RESTORE_FROM_AUTH_CODE) {
DCHECK(!auth_code_.empty()); DCHECK(!auth_code_.empty());
oauth2_token_fetcher_.reset( oauth2_token_fetcher_.reset(
......
...@@ -40,9 +40,11 @@ OAuth2TokenFetcher::~OAuth2TokenFetcher() { ...@@ -40,9 +40,11 @@ OAuth2TokenFetcher::~OAuth2TokenFetcher() {
} }
void OAuth2TokenFetcher::StartExchangeFromCookies( void OAuth2TokenFetcher::StartExchangeFromCookies(
const std::string& session_index) { const std::string& session_index,
const std::string& signin_scoped_device_id) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
session_index_ = session_index; session_index_ = session_index;
signin_scoped_device_id_ = signin_scoped_device_id;
// Delay the verification if the network is not connected or on a captive // Delay the verification if the network is not connected or on a captive
// portal. // portal.
const NetworkState* default_network = const NetworkState* default_network =
...@@ -56,11 +58,13 @@ void OAuth2TokenFetcher::StartExchangeFromCookies( ...@@ -56,11 +58,13 @@ void OAuth2TokenFetcher::StartExchangeFromCookies(
FROM_HERE, FROM_HERE,
base::Bind(&OAuth2TokenFetcher::StartExchangeFromCookies, base::Bind(&OAuth2TokenFetcher::StartExchangeFromCookies,
AsWeakPtr(), AsWeakPtr(),
session_index), session_index,
signin_scoped_device_id),
base::TimeDelta::FromMilliseconds(kRequestRestartDelay)); base::TimeDelta::FromMilliseconds(kRequestRestartDelay));
return; return;
} }
auth_fetcher_.StartCookieForOAuthLoginTokenExchange(session_index); auth_fetcher_.StartCookieForOAuthLoginTokenExchangeWithDeviceId(
session_index, signin_scoped_device_id);
} }
void OAuth2TokenFetcher::StartExchangeFromAuthCode( void OAuth2TokenFetcher::StartExchangeFromAuthCode(
...@@ -102,7 +106,8 @@ void OAuth2TokenFetcher::OnClientOAuthFailure( ...@@ -102,7 +106,8 @@ void OAuth2TokenFetcher::OnClientOAuthFailure(
auth_code_.empty() auth_code_.empty()
? base::Bind(&OAuth2TokenFetcher::StartExchangeFromCookies, ? base::Bind(&OAuth2TokenFetcher::StartExchangeFromCookies,
AsWeakPtr(), AsWeakPtr(),
session_index_) session_index_,
signin_scoped_device_id_)
: base::Bind(&OAuth2TokenFetcher::StartExchangeFromAuthCode, : base::Bind(&OAuth2TokenFetcher::StartExchangeFromAuthCode,
AsWeakPtr(), AsWeakPtr(),
auth_code_), auth_code_),
......
...@@ -38,7 +38,8 @@ class OAuth2TokenFetcher : public base::SupportsWeakPtr<OAuth2TokenFetcher>, ...@@ -38,7 +38,8 @@ class OAuth2TokenFetcher : public base::SupportsWeakPtr<OAuth2TokenFetcher>,
net::URLRequestContextGetter* context_getter); net::URLRequestContextGetter* context_getter);
virtual ~OAuth2TokenFetcher(); virtual ~OAuth2TokenFetcher();
void StartExchangeFromCookies(const std::string& session_index); void StartExchangeFromCookies(const std::string& session_index,
const std::string& signin_scoped_device_id);
void StartExchangeFromAuthCode(const std::string& auth_code); void StartExchangeFromAuthCode(const std::string& auth_code);
private: private:
...@@ -63,6 +64,7 @@ class OAuth2TokenFetcher : public base::SupportsWeakPtr<OAuth2TokenFetcher>, ...@@ -63,6 +64,7 @@ class OAuth2TokenFetcher : public base::SupportsWeakPtr<OAuth2TokenFetcher>,
// The retry counter. Increment this only when failure happened. // The retry counter. Increment this only when failure happened.
int retry_count_; int retry_count_;
std::string session_index_; std::string session_index_;
std::string signin_scoped_device_id_;
std::string auth_code_; std::string auth_code_;
DISALLOW_COPY_AND_ASSIGN(OAuth2TokenFetcher); DISALLOW_COPY_AND_ASSIGN(OAuth2TokenFetcher);
......
...@@ -6,11 +6,13 @@ ...@@ -6,11 +6,13 @@
#include "chrome/browser/chromeos/login/signin/oauth2_token_fetcher.h" #include "chrome/browser/chromeos/login/signin/oauth2_token_fetcher.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/signin/chrome_signin_client_factory.h"
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h" #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
#include "chrome/browser/signin/signin_manager_factory.h" #include "chrome/browser/signin/signin_manager_factory.h"
#include "chrome/browser/signin/signin_promo.h" #include "chrome/browser/signin/signin_promo.h"
#include "chrome/common/url_constants.h" #include "chrome/common/url_constants.h"
#include "components/signin/core/browser/profile_oauth2_token_service.h" #include "components/signin/core/browser/profile_oauth2_token_service.h"
#include "components/signin/core/browser/signin_client.h"
#include "components/signin/core/browser/signin_manager.h" #include "components/signin/core/browser/signin_manager.h"
#include "content/public/browser/storage_partition.h" #include "content/public/browser/storage_partition.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
...@@ -81,7 +83,12 @@ void InlineLoginHandlerChromeOS::CompleteLogin(const base::ListValue* args) { ...@@ -81,7 +83,12 @@ void InlineLoginHandlerChromeOS::CompleteLogin(const base::ListValue* args) {
->GetURLRequestContext(); ->GetURLRequestContext();
oauth2_token_fetcher_.reset( oauth2_token_fetcher_.reset(
new OAuth2TokenFetcher(oauth2_delegate_.get(), request_context)); new OAuth2TokenFetcher(oauth2_delegate_.get(), request_context));
oauth2_token_fetcher_->StartExchangeFromCookies(session_index); SigninClient* signin_client =
ChromeSigninClientFactory::GetForProfile(profile);
std::string signin_scoped_device_id =
signin_client->GetSigninScopedDeviceId();
oauth2_token_fetcher_->StartExchangeFromCookies(session_index,
signin_scoped_device_id);
} }
} // namespace chromeos } // namespace chromeos
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment