Index: chrome/browser/policy/cloud/component_cloud_policy_service.cc |
diff --git a/chrome/browser/policy/cloud/component_cloud_policy_service.cc b/chrome/browser/policy/cloud/component_cloud_policy_service.cc |
index 7908f43b2509200d56c33c467a5d53b2d3751eca..3cc210c88d26972c4e25881597685b7f46fab079 100644 |
--- a/chrome/browser/policy/cloud/component_cloud_policy_service.cc |
+++ b/chrome/browser/policy/cloud/component_cloud_policy_service.cc |
@@ -224,6 +224,7 @@ ComponentCloudPolicyService::ComponentCloudPolicyService( |
backend_task_runner_(backend_task_runner), |
io_task_runner_(io_task_runner), |
current_schema_map_(new SchemaMap), |
+ started_loading_initial_policy_(false), |
loaded_initial_policy_(false), |
is_registered_for_cloud_policy_(false), |
weak_ptr_factory_(this) { |
@@ -421,19 +422,23 @@ void ComponentCloudPolicyService::OnClientError(CloudPolicyClient* client) { |
void ComponentCloudPolicyService::InitializeIfReady() { |
DCHECK(CalledOnValidThread()); |
- if (!schema_registry_->IsReady() || !core_->store()->is_initialized()) |
+ if (started_loading_initial_policy_ || !schema_registry_->IsReady() || |
+ !core_->store()->is_initialized()) { |
return; |
+ } |
// The initial list of components is ready. Initialize the backend now, which |
// will call back to OnBackendInitialized. |
backend_task_runner_->PostTask(FROM_HERE, |
base::Bind(&Backend::Init, |
base::Unretained(backend_.get()), |
schema_registry_->schema_map())); |
+ started_loading_initial_policy_ = true; |
} |
void ComponentCloudPolicyService::OnBackendInitialized( |
scoped_ptr<PolicyBundle> initial_policy) { |
DCHECK(CalledOnValidThread()); |
+ DCHECK(!loaded_initial_policy_); |
loaded_initial_policy_ = true; |