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 2edac9edb921ded3a4882f9eb4ed046bc06259fa..f8e89afe489970f52caab4ed4ac08670d8c7b278 100644 |
--- a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.cc |
+++ b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.cc |
@@ -101,18 +101,20 @@ UserCloudPolicyManagerChromeOS::UserCloudPolicyManagerChromeOS( |
store_(std::move(store)), |
external_data_manager_(std::move(external_data_manager)), |
component_policy_cache_path_(component_policy_cache_path), |
- wait_for_policy_fetch_(wait_for_policy_fetch) { |
+ waiting_for_initial_policy_fetch_(wait_for_policy_fetch) { |
time_init_started_ = base::Time::Now(); |
// Caller must pass a non-zero policy_fetch_timeout iff |
// |wait_for_policy_fetch| is true. |
- DCHECK_NE(wait_for_policy_fetch_, initial_policy_fetch_timeout.is_zero()); |
- allow_failed_policy_fetches_ = |
+ DCHECK_NE(waiting_for_initial_policy_fetch_, |
+ initial_policy_fetch_timeout.is_zero()); |
+ initial_policy_fetch_may_fail_ = |
base::CommandLine::ForCurrentProcess()->HasSwitch( |
chromeos::switches::kAllowFailedPolicyFetchForTest) || |
!initial_policy_fetch_timeout.is_max(); |
// No need to set the timer when the timeout is infinite. |
- if (wait_for_policy_fetch_ && !initial_policy_fetch_timeout.is_max()) { |
+ if (waiting_for_initial_policy_fetch_ && |
+ !initial_policy_fetch_timeout.is_max()) { |
policy_fetch_timeout_.Start( |
FROM_HERE, |
initial_policy_fetch_timeout, |
@@ -174,10 +176,10 @@ void UserCloudPolicyManagerChromeOS::Connect( |
// store has already been loaded and contains a valid policy - the |
// registration setup in this case is performed by the CloudPolicyService |
// that is instantiated inside the CloudPolicyCore::Connect() method call. |
- // If that's the case and |wait_for_policy_fetch_| is true, then the policy |
- // fetch needs to be issued (it happens otherwise after the client |
- // registration is finished, in OnRegistrationStateChanged()). |
- if (client()->is_registered() && wait_for_policy_fetch_) { |
+ // If that's the case and |waiting_for_initial_policy_fetch_| is true, then |
+ // the policy fetch needs to be issued (it happens otherwise after the |
+ // client registration is finished, in OnRegistrationStateChanged()). |
+ if (client()->is_registered() && waiting_for_initial_policy_fetch_) { |
service()->RefreshPolicy( |
base::Bind(&UserCloudPolicyManagerChromeOS::CancelWaitForPolicyFetch, |
base::Unretained(this))); |
@@ -230,7 +232,7 @@ bool UserCloudPolicyManagerChromeOS::IsInitializationComplete( |
if (!CloudPolicyManager::IsInitializationComplete(domain)) |
return false; |
if (domain == POLICY_DOMAIN_CHROME) |
- return !wait_for_policy_fetch_; |
+ return !waiting_for_initial_policy_fetch_; |
return true; |
} |
@@ -246,25 +248,27 @@ void UserCloudPolicyManagerChromeOS::OnInitializationCompleted( |
// If the CloudPolicyClient isn't registered at this stage then it needs an |
// OAuth token for the initial registration. |
// |
- // If |wait_for_policy_fetch_| is true then Profile initialization is blocking |
- // on the initial policy fetch, so the token must be fetched immediately. |
- // In that case, the signin Profile is used to authenticate a Gaia request to |
- // fetch a refresh token, and then the policy token is fetched. |
+ // If |waiting_for_initial_policy_fetch_| is true then Profile initialization |
+ // is blocking on the initial policy fetch, so the token must be fetched |
+ // immediately. In that case, the signin Profile is used to authenticate a |
+ // Gaia request to fetch a refresh token, and then the policy token is |
+ // fetched. |
// |
- // If |wait_for_policy_fetch_| is false then the UserCloudPolicyTokenForwarder |
- // service will eventually call OnAccessTokenAvailable() once an access token |
- // is available. That call may have already happened while waiting for |
- // initialization of the CloudPolicyService, so in that case check if an |
- // access token is already available. |
+ // If |waiting_for_initial_policy_fetch_| is false then the |
+ // UserCloudPolicyTokenForwarder service will eventually call |
+ // OnAccessTokenAvailable() once an access token is available. That call may |
+ // have already happened while waiting for initialization of the |
+ // CloudPolicyService, so in that case check if an access token is already |
+ // available. |
if (!client()->is_registered()) { |
- if (wait_for_policy_fetch_) { |
+ if (waiting_for_initial_policy_fetch_) { |
FetchPolicyOAuthToken(); |
} else if (!access_token_.empty()) { |
OnAccessTokenAvailable(access_token_); |
} |
} |
- if (!wait_for_policy_fetch_) { |
+ if (!waiting_for_initial_policy_fetch_) { |
// If this isn't blocking on a policy fetch then |
// CloudPolicyManager::OnStoreLoaded() already published the cached policy. |
// Start the refresh scheduler now, which will eventually refresh the |
@@ -285,7 +289,7 @@ void UserCloudPolicyManagerChromeOS::OnRegistrationStateChanged( |
CloudPolicyClient* cloud_policy_client) { |
DCHECK_EQ(client(), cloud_policy_client); |
- if (wait_for_policy_fetch_) { |
+ if (waiting_for_initial_policy_fetch_) { |
time_client_registered_ = base::Time::Now(); |
if (!time_token_available_.is_null()) { |
UMA_HISTOGRAM_MEDIUM_TIMES( |
@@ -310,7 +314,7 @@ void UserCloudPolicyManagerChromeOS::OnRegistrationStateChanged( |
void UserCloudPolicyManagerChromeOS::OnClientError( |
CloudPolicyClient* cloud_policy_client) { |
DCHECK_EQ(client(), cloud_policy_client); |
- if (wait_for_policy_fetch_) { |
+ if (waiting_for_initial_policy_fetch_) { |
UMA_HISTOGRAM_SPARSE_SLOWLY(kUMAInitialFetchClientError, |
cloud_policy_client->status()); |
} |
@@ -404,7 +408,7 @@ void UserCloudPolicyManagerChromeOS::OnOAuth2PolicyTokenFetched( |
const GoogleServiceAuthError& error) { |
DCHECK(!client()->is_registered()); |
time_token_available_ = base::Time::Now(); |
- if (wait_for_policy_fetch_) { |
+ if (waiting_for_initial_policy_fetch_) { |
UMA_HISTOGRAM_MEDIUM_TIMES(kUMAInitialFetchDelayOAuth2Token, |
time_token_available_ - time_init_completed_); |
} |
@@ -445,14 +449,14 @@ void UserCloudPolicyManagerChromeOS::OnInitialPolicyFetchComplete( |
} |
void UserCloudPolicyManagerChromeOS::OnBlockingFetchTimeout() { |
- DCHECK(wait_for_policy_fetch_); |
+ DCHECK(waiting_for_initial_policy_fetch_); |
LOG(WARNING) << "Timed out while waiting for the policy fetch. " |
<< "The session will start with the cached policy."; |
CancelWaitForPolicyFetch(false); |
} |
void UserCloudPolicyManagerChromeOS::CancelWaitForPolicyFetch(bool success) { |
- if (!wait_for_policy_fetch_) |
+ if (!waiting_for_initial_policy_fetch_) |
return; |
policy_fetch_timeout_.Stop(); |
@@ -461,7 +465,7 @@ void UserCloudPolicyManagerChromeOS::CancelWaitForPolicyFetch(bool success) { |
// to go forward after a failed policy fetch, then just return (profile |
// initialization will not complete). |
// TODO(atwilson): Add code to retry policy fetching. |
- if (!success && !allow_failed_policy_fetches_) { |
+ if (!success && !initial_policy_fetch_may_fail_) { |
LOG(ERROR) << "Policy fetch failed for the user. " |
"Aborting profile initialization"; |
// Need to exit the current user, because we've already started this user's |
@@ -470,10 +474,11 @@ void UserCloudPolicyManagerChromeOS::CancelWaitForPolicyFetch(bool success) { |
return; |
} |
- wait_for_policy_fetch_ = false; |
+ waiting_for_initial_policy_fetch_ = false; |
+ |
CheckAndPublishPolicy(); |
- // Now that |wait_for_policy_fetch_| is guaranteed to be false, the scheduler |
- // can be started. |
+ // Now that |waiting_for_initial_policy_fetch_| is guaranteed to be false, the |
+ // scheduler can be started. |
StartRefreshSchedulerIfReady(); |
} |
@@ -481,7 +486,7 @@ void UserCloudPolicyManagerChromeOS::StartRefreshSchedulerIfReady() { |
if (core()->refresh_scheduler()) |
return; // Already started. |
- if (wait_for_policy_fetch_) |
+ if (waiting_for_initial_policy_fetch_) |
return; // Still waiting for the initial, blocking fetch. |
if (!service() || !local_state_) |