summaryrefslogtreecommitdiffstats
path: root/chrome/browser/policy/asynchronous_policy_provider.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/policy/asynchronous_policy_provider.cc')
-rw-r--r--chrome/browser/policy/asynchronous_policy_provider.cc20
1 files changed, 8 insertions, 12 deletions
diff --git a/chrome/browser/policy/asynchronous_policy_provider.cc b/chrome/browser/policy/asynchronous_policy_provider.cc
index 38b00e5..403d08e 100644
--- a/chrome/browser/policy/asynchronous_policy_provider.cc
+++ b/chrome/browser/policy/asynchronous_policy_provider.cc
@@ -4,7 +4,9 @@
#include "chrome/browser/policy/asynchronous_policy_provider.h"
+#include "base/bind.h"
#include "chrome/browser/policy/asynchronous_policy_loader.h"
+#include "chrome/browser/policy/policy_map.h"
namespace policy {
@@ -13,31 +15,25 @@ AsynchronousPolicyProvider::AsynchronousPolicyProvider(
scoped_refptr<AsynchronousPolicyLoader> loader)
: ConfigurationPolicyProvider(policy_list),
loader_(loader) {
- loader_->Init();
+ loader_->Init(
+ base::Bind(&AsynchronousPolicyProvider::NotifyPolicyUpdated,
+ base::Unretained(this)));
}
AsynchronousPolicyProvider::~AsynchronousPolicyProvider() {
DCHECK(CalledOnValidThread());
+ // |loader_| won't invoke its callback anymore after Stop(), therefore
+ // Unretained(this) is safe in the ctor.
loader_->Stop();
}
bool AsynchronousPolicyProvider::Provide(PolicyMap* map) {
DCHECK(CalledOnValidThread());
DCHECK(loader_->policy());
- ApplyPolicyValueTree(loader_->policy(), map);
+ map->LoadFrom(loader_->policy(), policy_definition_list());
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_;
}