summaryrefslogtreecommitdiffstats
path: root/chrome/browser/policy/configuration_policy_provider.cc
diff options
context:
space:
mode:
authorjkummerow@chromium.org <jkummerow@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-23 13:26:16 +0000
committerjkummerow@chromium.org <jkummerow@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-23 13:26:16 +0000
commit3c93c7475a236ffee13504591906248b2cbd9849 (patch)
tree37547ab6f869b149df017584ed29145981b1a21b /chrome/browser/policy/configuration_policy_provider.cc
parentf00768e58f44e2343b1ed6c0456a07dad5ec66ed (diff)
downloadchromium_src-3c93c7475a236ffee13504591906248b2cbd9849.zip
chromium_src-3c93c7475a236ffee13504591906248b2cbd9849.tar.gz
chromium_src-3c93c7475a236ffee13504591906248b2cbd9849.tar.bz2
Observer interface for PolicyProviders
BUG=67707 TEST=existing unit tests still work, in particular: *Policy* Review URL: http://codereview.chromium.org/6001004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70051 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/policy/configuration_policy_provider.cc')
-rw-r--r--chrome/browser/policy/configuration_policy_provider.cc43
1 files changed, 35 insertions, 8 deletions
diff --git a/chrome/browser/policy/configuration_policy_provider.cc b/chrome/browser/policy/configuration_policy_provider.cc
index a8ca10f..2aee046 100644
--- a/chrome/browser/policy/configuration_policy_provider.cc
+++ b/chrome/browser/policy/configuration_policy_provider.cc
@@ -4,11 +4,45 @@
#include "chrome/browser/policy/configuration_policy_provider.h"
+#include <algorithm>
+
#include "base/values.h"
-#include "chrome/common/notification_service.h"
namespace policy {
+ConfigurationPolicyObserverRegistrar::ConfigurationPolicyObserverRegistrar() {}
+
+ConfigurationPolicyObserverRegistrar::~ConfigurationPolicyObserverRegistrar() {
+ RemoveAll();
+}
+
+void ConfigurationPolicyObserverRegistrar::Init(
+ ConfigurationPolicyProvider* provider) {
+ provider_ = provider;
+}
+
+void ConfigurationPolicyObserverRegistrar::AddObserver(
+ ConfigurationPolicyProvider::Observer* observer) {
+ observers_.push_back(observer);
+ provider_->AddObserver(observer);
+}
+
+void ConfigurationPolicyObserverRegistrar::RemoveObserver(
+ ConfigurationPolicyProvider::Observer* observer) {
+ std::remove(observers_.begin(), observers_.end(), observer);
+ provider_->RemoveObserver(observer);
+}
+
+void ConfigurationPolicyObserverRegistrar::RemoveAll() {
+ for (std::vector<ConfigurationPolicyProvider::Observer*>::iterator it =
+ observers_.begin(); it != observers_.end(); ++it) {
+ provider_->RemoveObserver(*it);
+ }
+ observers_.clear();
+}
+
+// Class ConfigurationPolicyProvider.
+
ConfigurationPolicyProvider::ConfigurationPolicyProvider(
const PolicyDefinitionList* policy_list)
: policy_definition_list_(policy_list) {
@@ -16,13 +50,6 @@ ConfigurationPolicyProvider::ConfigurationPolicyProvider(
ConfigurationPolicyProvider::~ConfigurationPolicyProvider() {}
-void ConfigurationPolicyProvider::NotifyStoreOfPolicyChange() {
- NotificationService::current()->Notify(
- NotificationType::POLICY_CHANGED,
- Source<ConfigurationPolicyProvider>(this),
- NotificationService::NoDetails());
-}
-
void ConfigurationPolicyProvider::DecodePolicyValueTree(
const DictionaryValue* policies,
ConfigurationPolicyStoreInterface* store) {