diff options
author | jkummerow@chromium.org <jkummerow@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-23 13:26:16 +0000 |
---|---|---|
committer | jkummerow@chromium.org <jkummerow@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-23 13:26:16 +0000 |
commit | 3c93c7475a236ffee13504591906248b2cbd9849 (patch) | |
tree | 37547ab6f869b149df017584ed29145981b1a21b /chrome/browser/policy/configuration_policy_provider.cc | |
parent | f00768e58f44e2343b1ed6c0456a07dad5ec66ed (diff) | |
download | chromium_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.cc | 43 |
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) { |