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 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/login/users/user_manager.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/signin_manager_factory.h"
#include "chrome/common/chrome_switches.h"
#include "chromeos/chromeos_switches.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 "google_apis/gaia/gaia_auth_util.h"
#include "google_apis/gaia/gaia_constants.h"
......@@ -219,9 +221,15 @@ void OAuth2LoginManager::FetchOAuth2Tokens() {
// If we have authenticated cookie jar, get OAuth1 token first, then fetch
// SID/LSID cookies through OAuthLogin call.
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(
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) {
DCHECK(!auth_code_.empty());
oauth2_token_fetcher_.reset(
......
......@@ -40,9 +40,11 @@ OAuth2TokenFetcher::~OAuth2TokenFetcher() {
}
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));
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
// portal.
const NetworkState* default_network =
......@@ -56,11 +58,13 @@ void OAuth2TokenFetcher::StartExchangeFromCookies(
FROM_HERE,
base::Bind(&OAuth2TokenFetcher::StartExchangeFromCookies,
AsWeakPtr(),
session_index),
session_index,
signin_scoped_device_id),
base::TimeDelta::FromMilliseconds(kRequestRestartDelay));
return;
}
auth_fetcher_.StartCookieForOAuthLoginTokenExchange(session_index);
auth_fetcher_.StartCookieForOAuthLoginTokenExchangeWithDeviceId(
session_index, signin_scoped_device_id);
}
void OAuth2TokenFetcher::StartExchangeFromAuthCode(
......@@ -102,7 +106,8 @@ void OAuth2TokenFetcher::OnClientOAuthFailure(
auth_code_.empty()
? base::Bind(&OAuth2TokenFetcher::StartExchangeFromCookies,
AsWeakPtr(),
session_index_)
session_index_,
signin_scoped_device_id_)
: base::Bind(&OAuth2TokenFetcher::StartExchangeFromAuthCode,
AsWeakPtr(),
auth_code_),
......
......@@ -38,7 +38,8 @@ class OAuth2TokenFetcher : public base::SupportsWeakPtr<OAuth2TokenFetcher>,
net::URLRequestContextGetter* context_getter);
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);
private:
......@@ -63,6 +64,7 @@ class OAuth2TokenFetcher : public base::SupportsWeakPtr<OAuth2TokenFetcher>,
// The retry counter. Increment this only when failure happened.
int retry_count_;
std::string session_index_;
std::string signin_scoped_device_id_;
std::string auth_code_;
DISALLOW_COPY_AND_ASSIGN(OAuth2TokenFetcher);
......
......@@ -6,11 +6,13 @@
#include "chrome/browser/chromeos/login/signin/oauth2_token_fetcher.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/signin_manager_factory.h"
#include "chrome/browser/signin/signin_promo.h"
#include "chrome/common/url_constants.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 "content/public/browser/storage_partition.h"
#include "content/public/browser/web_contents.h"
......@@ -81,7 +83,12 @@ void InlineLoginHandlerChromeOS::CompleteLogin(const base::ListValue* args) {
->GetURLRequestContext();
oauth2_token_fetcher_.reset(
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
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