| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" | 5 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 FetchPolicyOAuthTokenUsingRefreshToken(); | 141 FetchPolicyOAuthTokenUsingRefreshToken(); |
| 142 } | 142 } |
| 143 } | 143 } |
| 144 | 144 |
| 145 if (!wait_for_policy_fetch_) { | 145 if (!wait_for_policy_fetch_) { |
| 146 // If this isn't blocking on a policy fetch then | 146 // If this isn't blocking on a policy fetch then |
| 147 // CloudPolicyManager::OnStoreLoaded() already published the cached policy. | 147 // CloudPolicyManager::OnStoreLoaded() already published the cached policy. |
| 148 // Start the refresh scheduler now, which will eventually refresh the | 148 // Start the refresh scheduler now, which will eventually refresh the |
| 149 // cached policy or make the first fetch once the OAuth2 token is | 149 // cached policy or make the first fetch once the OAuth2 token is |
| 150 // available. | 150 // available. |
| 151 StartRefreshScheduler(); | 151 StartRefreshSchedulerIfReady(); |
| 152 } | 152 } |
| 153 } | 153 } |
| 154 | 154 |
| 155 void UserCloudPolicyManagerChromeOS::OnPolicyFetched( | 155 void UserCloudPolicyManagerChromeOS::OnPolicyFetched( |
| 156 CloudPolicyClient* client) { | 156 CloudPolicyClient* client) { |
| 157 // No action required. If we're blocked on a policy fetch, we'll learn about | 157 // No action required. If we're blocked on a policy fetch, we'll learn about |
| 158 // completion of it through OnInitialPolicyFetchComplete(). | 158 // completion of it through OnInitialPolicyFetchComplete(). |
| 159 } | 159 } |
| 160 | 160 |
| 161 void UserCloudPolicyManagerChromeOS::OnRegistrationStateChanged( | 161 void UserCloudPolicyManagerChromeOS::OnRegistrationStateChanged( |
| (...skipping 19 matching lines...) Expand all Loading... |
| 181 DCHECK_EQ(client(), cloud_policy_client); | 181 DCHECK_EQ(client(), cloud_policy_client); |
| 182 CancelWaitForPolicyFetch(); | 182 CancelWaitForPolicyFetch(); |
| 183 } | 183 } |
| 184 | 184 |
| 185 void UserCloudPolicyManagerChromeOS::OnComponentCloudPolicyRefreshNeeded() { | 185 void UserCloudPolicyManagerChromeOS::OnComponentCloudPolicyRefreshNeeded() { |
| 186 core()->RefreshSoon(); | 186 core()->RefreshSoon(); |
| 187 } | 187 } |
| 188 | 188 |
| 189 void UserCloudPolicyManagerChromeOS::OnComponentCloudPolicyUpdated() { | 189 void UserCloudPolicyManagerChromeOS::OnComponentCloudPolicyUpdated() { |
| 190 CheckAndPublishPolicy(); | 190 CheckAndPublishPolicy(); |
| 191 StartRefreshScheduler(); | 191 StartRefreshSchedulerIfReady(); |
| 192 } | 192 } |
| 193 | 193 |
| 194 void UserCloudPolicyManagerChromeOS::FetchPolicyOAuthTokenUsingSigninProfile() { | 194 void UserCloudPolicyManagerChromeOS::FetchPolicyOAuthTokenUsingSigninProfile() { |
| 195 scoped_refptr<net::URLRequestContextGetter> signin_context; | 195 scoped_refptr<net::URLRequestContextGetter> signin_context; |
| 196 Profile* signin_profile = chromeos::ProfileHelper::GetSigninProfile(); | 196 Profile* signin_profile = chromeos::ProfileHelper::GetSigninProfile(); |
| 197 if (signin_profile) | 197 if (signin_profile) |
| 198 signin_context = signin_profile->GetRequestContext(); | 198 signin_context = signin_profile->GetRequestContext(); |
| 199 if (!signin_context.get()) { | 199 if (!signin_context.get()) { |
| 200 LOG(ERROR) << "No signin Profile for policy oauth token fetch!"; | 200 LOG(ERROR) << "No signin Profile for policy oauth token fetch!"; |
| 201 OnOAuth2PolicyTokenFetched( | 201 OnOAuth2PolicyTokenFetched( |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 void UserCloudPolicyManagerChromeOS::OnInitialPolicyFetchComplete( | 245 void UserCloudPolicyManagerChromeOS::OnInitialPolicyFetchComplete( |
| 246 bool success) { | 246 bool success) { |
| 247 CancelWaitForPolicyFetch(); | 247 CancelWaitForPolicyFetch(); |
| 248 } | 248 } |
| 249 | 249 |
| 250 void UserCloudPolicyManagerChromeOS::CancelWaitForPolicyFetch() { | 250 void UserCloudPolicyManagerChromeOS::CancelWaitForPolicyFetch() { |
| 251 wait_for_policy_fetch_ = false; | 251 wait_for_policy_fetch_ = false; |
| 252 CheckAndPublishPolicy(); | 252 CheckAndPublishPolicy(); |
| 253 // Now that |wait_for_policy_fetch_| is guaranteed to be false, the scheduler | 253 // Now that |wait_for_policy_fetch_| is guaranteed to be false, the scheduler |
| 254 // can be started. | 254 // can be started. |
| 255 StartRefreshScheduler(); | 255 StartRefreshSchedulerIfReady(); |
| 256 } | 256 } |
| 257 | 257 |
| 258 void UserCloudPolicyManagerChromeOS::StartRefreshScheduler() { | 258 void UserCloudPolicyManagerChromeOS::StartRefreshSchedulerIfReady() { |
| 259 if (core()->refresh_scheduler()) | 259 if (core()->refresh_scheduler()) |
| 260 return; // Already started. | 260 return; // Already started. |
| 261 | 261 |
| 262 if (wait_for_policy_fetch_) | 262 if (wait_for_policy_fetch_) |
| 263 return; // Still waiting for the initial, blocking fetch. | 263 return; // Still waiting for the initial, blocking fetch. |
| 264 | 264 |
| 265 if (!service() || !local_state_) | 265 if (!service() || !local_state_) |
| 266 return; // Not connected. | 266 return; // Not connected. |
| 267 | 267 |
| 268 if (component_policy_service_ && | 268 if (component_policy_service_ && |
| 269 !component_policy_service_->is_initialized()) { | 269 !component_policy_service_->is_initialized()) { |
| 270 // If the client doesn't have the list of components to fetch yet then don't | 270 // If the client doesn't have the list of components to fetch yet then don't |
| 271 // start the scheduler. The |component_policy_service_| will call back into | 271 // start the scheduler. The |component_policy_service_| will call back into |
| 272 // OnComponentCloudPolicyUpdated() once it's ready. | 272 // OnComponentCloudPolicyUpdated() once it's ready. |
| 273 return; | 273 return; |
| 274 } | 274 } |
| 275 | 275 |
| 276 core()->StartRefreshScheduler(); | 276 StartRefreshScheduler(); |
| 277 core()->TrackRefreshDelayPref(local_state_, prefs::kUserPolicyRefreshRate); | 277 core()->TrackRefreshDelayPref(local_state_, prefs::kUserPolicyRefreshRate); |
| 278 } | 278 } |
| 279 | 279 |
| 280 } // namespace policy | 280 } // namespace policy |
| OLD | NEW |