| // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/policy/asynchronous_policy_provider.h" |
| |
| #include "chrome/browser/policy/asynchronous_policy_loader.h" |
| |
| namespace policy { |
| |
| AsynchronousPolicyProvider::AsynchronousPolicyProvider( |
| const PolicyDefinitionList* policy_list, |
| scoped_refptr<AsynchronousPolicyLoader> loader) |
| : ConfigurationPolicyProvider(policy_list), |
| loader_(loader) { |
| loader_->Init(); |
| } |
| |
| AsynchronousPolicyProvider::~AsynchronousPolicyProvider() { |
| DCHECK(CalledOnValidThread()); |
| loader_->Stop(); |
| } |
| |
| bool AsynchronousPolicyProvider::Provide( |
| ConfigurationPolicyStoreInterface* store) { |
| DCHECK(CalledOnValidThread()); |
| DCHECK(loader_->policy()); |
| ApplyPolicyValueTree(loader_->policy(), store); |
| return true; |
| } |
| |
| void AsynchronousPolicyProvider::AddObserver( |
| ConfigurationPolicyProvider::Observer* observer) { |
| loader_->AddObserver(observer); |
| } |
| |
| void AsynchronousPolicyProvider::RemoveObserver( |
| ConfigurationPolicyProvider::Observer* observer) { |
| loader_->RemoveObserver(observer); |
| } |
| |
| scoped_refptr<AsynchronousPolicyLoader> AsynchronousPolicyProvider::loader() { |
| return loader_; |
| } |
| |
| } // namespace policy |