| Index: chrome/browser/policy/user_policy_cache.cc
|
| diff --git a/chrome/browser/policy/user_policy_cache.cc b/chrome/browser/policy/user_policy_cache.cc
|
| index 3cf8da57bd513dadeb544b791e82ab5f9ad30d0d..b9fd81500f2837332792f89c62981038a7d28038 100644
|
| --- a/chrome/browser/policy/user_policy_cache.cc
|
| +++ b/chrome/browser/policy/user_policy_cache.cc
|
| @@ -28,8 +28,11 @@ namespace policy {
|
| void DecodePolicy(const em::CloudPolicySettings& policy,
|
| PolicyMap* mandatory, PolicyMap* recommended);
|
|
|
| -UserPolicyCache::UserPolicyCache(const FilePath& backing_file_path)
|
| - : ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) {
|
| +UserPolicyCache::UserPolicyCache(const FilePath& backing_file_path,
|
| + bool wait_for_policy_fetch)
|
| + : ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)),
|
| + disk_cache_ready_(false),
|
| + fetch_ready_(!wait_for_policy_fetch) {
|
| disk_cache_ = new UserPolicyDiskCache(weak_ptr_factory_.GetWeakPtr(),
|
| backing_file_path);
|
| }
|
| @@ -72,6 +75,13 @@ void UserPolicyCache::SetUnmanaged() {
|
| disk_cache_->Store(cached_policy);
|
| }
|
|
|
| +void UserPolicyCache::SetFetchingDone() {
|
| + if (!fetch_ready_)
|
| + DVLOG(1) << "SetFetchingDone, cache is now fetch_ready_";
|
| + fetch_ready_ = true;
|
| + CheckIfReady();
|
| +}
|
| +
|
| void UserPolicyCache::OnDiskCacheLoaded(
|
| UserPolicyDiskCache::LoadResult result,
|
| const em::CachedCloudPolicyResponse& cached_response) {
|
| @@ -89,7 +99,8 @@ void UserPolicyCache::OnDiskCacheLoaded(
|
| }
|
|
|
| // Ready to feed policy up the chain!
|
| - SetReady();
|
| + disk_cache_ready_ = true;
|
| + CheckIfReady();
|
| }
|
|
|
| bool UserPolicyCache::DecodePolicyData(const em::PolicyData& policy_data,
|
| @@ -107,6 +118,11 @@ bool UserPolicyCache::DecodePolicyData(const em::PolicyData& policy_data,
|
| return true;
|
| }
|
|
|
| +void UserPolicyCache::CheckIfReady() {
|
| + if (!IsReady() && disk_cache_ready_ && fetch_ready_)
|
| + SetReady();
|
| +}
|
| +
|
| // Everything below is only needed for supporting old-style GenericNamedValue
|
| // based policy data and can be removed once this support is no longer needed.
|
|
|
|
|