121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// Copyright (c) 2010 The Chromium Authors. All rights reserved.
221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// Use of this source code is governed by a BSD-style license that can be
321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// found in the LICENSE file.
421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/policy/asynchronous_policy_provider.h"
621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/policy/asynchronous_policy_loader.h"
821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsennamespace policy {
1021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
1121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenAsynchronousPolicyProvider::AsynchronousPolicyProvider(
1221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    const PolicyDefinitionList* policy_list,
1321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    scoped_refptr<AsynchronousPolicyLoader> loader)
1421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    : ConfigurationPolicyProvider(policy_list),
1521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      loader_(loader) {
1621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  loader_->Init();
1721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
1821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
1921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenAsynchronousPolicyProvider::~AsynchronousPolicyProvider() {
2021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  DCHECK(CalledOnValidThread());
2121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  loader_->Stop();
2221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
2321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
2421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenbool AsynchronousPolicyProvider::Provide(
2521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    ConfigurationPolicyStoreInterface* store) {
2621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  DCHECK(CalledOnValidThread());
2721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  DCHECK(loader_->policy());
28dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  ApplyPolicyValueTree(loader_->policy(), store);
2921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  return true;
3021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
3121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
3221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid AsynchronousPolicyProvider::AddObserver(
3321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    ConfigurationPolicyProvider::Observer* observer) {
3421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  loader_->AddObserver(observer);
3521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
3621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
3721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid AsynchronousPolicyProvider::RemoveObserver(
3821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    ConfigurationPolicyProvider::Observer* observer) {
3921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  loader_->RemoveObserver(observer);
4021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
4121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
4221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenscoped_refptr<AsynchronousPolicyLoader> AsynchronousPolicyProvider::loader() {
4321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  return loader_;
4421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
4521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
4621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}  // namespace policy
47