Index: chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.cc |
diff --git a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.cc b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.cc |
index 392968018c716d363f7168a304d3e52208971dd3..35ca56d81fee14caa4a76447e5b6ec3abb4d8a02 100644 |
--- a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.cc |
+++ b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.cc |
@@ -13,6 +13,7 @@ |
#include "base/values.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/chromeos/login/helper.h" |
+#include "chrome/browser/chromeos/login/session/user_session_manager.h" |
#include "chrome/browser/chromeos/policy/policy_oauth2_token_fetcher.h" |
#include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chromeos.h" |
#include "chrome/browser/chromeos/policy/wildcard_login_checker.h" |
@@ -212,7 +213,7 @@ void UserCloudPolicyManagerChromeOS::OnInitializationCompleted( |
// access token is already available. |
if (!client()->is_registered()) { |
if (wait_for_policy_fetch_) { |
- FetchPolicyOAuthTokenUsingSigninContext(); |
+ FetchPolicyOAuthToken(); |
} else if (!access_token_.empty()) { |
OnAccessTokenAvailable(access_token_); |
} |
@@ -286,7 +287,19 @@ void UserCloudPolicyManagerChromeOS::GetChromePolicy(PolicyMap* policy_map) { |
SetEnterpriseUsersDefaults(policy_map); |
} |
-void UserCloudPolicyManagerChromeOS::FetchPolicyOAuthTokenUsingSigninContext() { |
+void UserCloudPolicyManagerChromeOS::FetchPolicyOAuthToken() { |
+ const std::string& refresh_token = chromeos::UserSessionManager::GetInstance() |
+ ->user_context() |
+ .GetRefreshToken(); |
+ if (!refresh_token.empty()) { |
+ token_fetcher_.reset(new PolicyOAuth2TokenFetcher( |
+ std::string(), g_browser_process->system_request_context(), |
+ base::Bind(&UserCloudPolicyManagerChromeOS::OnOAuth2PolicyTokenFetched, |
+ base::Unretained(this)))); |
+ token_fetcher_->StartWithRefreshToken(refresh_token); |
+ return; |
+ } |
+ |
scoped_refptr<net::URLRequestContextGetter> signin_context = |
chromeos::login::GetSigninContext(); |
if (!signin_context.get()) { |