| Index: chrome/browser/policy/configuration_policy_pref_store.h
|
| diff --git a/chrome/browser/policy/configuration_policy_pref_store.h b/chrome/browser/policy/configuration_policy_pref_store.h
|
| index 820306aa74fdf0c4374d4e420639faf85557be28..26ba19046125622f5f4cce6d23fdeb115a0021b8 100644
|
| --- a/chrome/browser/policy/configuration_policy_pref_store.h
|
| +++ b/chrome/browser/policy/configuration_policy_pref_store.h
|
| @@ -10,37 +10,37 @@
|
| #include <string>
|
|
|
| #include "base/basictypes.h"
|
| -#include "base/gtest_prod_util.h"
|
| +#include "base/observer_list.h"
|
| #include "base/scoped_ptr.h"
|
| #include "base/values.h"
|
| #include "chrome/browser/policy/configuration_policy_provider.h"
|
| #include "chrome/browser/policy/configuration_policy_store_interface.h"
|
| +#include "chrome/common/notification_observer.h"
|
| +#include "chrome/common/notification_registrar.h"
|
| #include "chrome/common/pref_store.h"
|
|
|
| class Profile;
|
|
|
| namespace policy {
|
|
|
| -// An implementation of the |PrefStore| that holds a Dictionary
|
| -// created through applied policy.
|
| +class ConfigurationPolicyPrefKeeper;
|
| +
|
| +// An implementation of PrefStore that bridges policy settings as read from a
|
| +// ConfigurationPolicyProvider to preferences.
|
| class ConfigurationPolicyPrefStore : public PrefStore,
|
| - public ConfigurationPolicyStoreInterface {
|
| + public NotificationObserver {
|
| public:
|
| - typedef std::set<const char*> ProxyPreferenceSet;
|
| -
|
| // The ConfigurationPolicyPrefStore does not take ownership of the
|
| // passed-in |provider|.
|
| explicit ConfigurationPolicyPrefStore(ConfigurationPolicyProvider* provider);
|
| virtual ~ConfigurationPolicyPrefStore();
|
|
|
| // PrefStore methods:
|
| + virtual void AddObserver(Observer* observer);
|
| + virtual void RemoveObserver(Observer* observer);
|
| + virtual bool IsInitializationComplete() const;
|
| virtual ReadResult GetValue(const std::string& key, Value** result) const;
|
|
|
| - virtual DictionaryValue* prefs() const;
|
| -
|
| - // ConfigurationPolicyStore methods:
|
| - virtual void Apply(ConfigurationPolicyType setting, Value* value);
|
| -
|
| // Creates a ConfigurationPolicyPrefStore that reads managed platform policy.
|
| static ConfigurationPolicyPrefStore* CreateManagedPlatformPolicyPrefStore();
|
|
|
| @@ -56,85 +56,34 @@ class ConfigurationPolicyPrefStore : public PrefStore,
|
| static const ConfigurationPolicyProvider::PolicyDefinitionList*
|
| GetChromePolicyDefinitionList();
|
|
|
| - // Returns the set of preference paths that can be affected by a proxy
|
| - // policy.
|
| - static void GetProxyPreferenceSet(ProxyPreferenceSet* proxy_pref_set);
|
| -
|
| private:
|
| - // Policies that map to a single preference are handled
|
| - // by an automated converter. Each one of these policies
|
| - // has an entry in |simple_policy_map_| with the following type.
|
| - struct PolicyToPreferenceMapEntry {
|
| - Value::ValueType value_type;
|
| - ConfigurationPolicyType policy_type;
|
| - const char* preference_path; // A DictionaryValue path, not a file path.
|
| - };
|
| -
|
| - static const PolicyToPreferenceMapEntry kSimplePolicyMap[];
|
| - static const PolicyToPreferenceMapEntry kProxyPolicyMap[];
|
| - static const PolicyToPreferenceMapEntry kDefaultSearchPolicyMap[];
|
| + // TODO(mnissler): Remove after provider has proper observer interface.
|
| + // NotificationObserver overrides:
|
| + void Observe(NotificationType type,
|
| + const NotificationSource& source,
|
| + const NotificationDetails& details);
|
| +
|
| + // Refreshes policy information, rereading policy from the provider and
|
| + // sending out change notifications as appropriate.
|
| + void Refresh();
|
| +
|
| static const ConfigurationPolicyProvider::PolicyDefinitionList
|
| kPolicyDefinitionList;
|
|
|
| + // The policy provider from which policy settings are read.
|
| ConfigurationPolicyProvider* provider_;
|
| - scoped_ptr<DictionaryValue> prefs_;
|
| -
|
| - // Set to false until the first proxy-relevant policy is applied. At that
|
| - // time, default values are provided for all proxy-relevant prefs
|
| - // to override any values set from stores with a lower priority.
|
| - bool lower_priority_proxy_settings_overridden_;
|
| -
|
| - // The following are used to track what proxy-relevant policy has been applied
|
| - // accross calls to Apply to provide a warning if a policy specifies a
|
| - // contradictory proxy configuration. |proxy_disabled_| is set to true if and
|
| - // only if the kPolicyNoProxyServer has been applied,
|
| - // |proxy_configuration_specified_| is set to true if and only if any other
|
| - // proxy policy other than kPolicyNoProxyServer has been applied.
|
| - bool proxy_disabled_;
|
| - bool proxy_configuration_specified_;
|
| -
|
| - // Set to true if a the proxy mode policy has been set to force Chrome
|
| - // to use the system proxy.
|
| - bool use_system_proxy_;
|
| -
|
| - // Returns the map entry that corresponds to |policy| in the map.
|
| - const PolicyToPreferenceMapEntry* FindPolicyInMap(
|
| - ConfigurationPolicyType policy,
|
| - const PolicyToPreferenceMapEntry* map,
|
| - int size) const;
|
| -
|
| - // Remove the preferences found in the map from |prefs_|. Returns true if
|
| - // any such preferences were found and removed.
|
| - bool RemovePreferencesOfMap(const PolicyToPreferenceMapEntry* map,
|
| - int table_size);
|
| -
|
| - bool ApplyPolicyFromMap(ConfigurationPolicyType policy,
|
| - Value* value,
|
| - const PolicyToPreferenceMapEntry* map,
|
| - int size);
|
| -
|
| - // Processes proxy-specific policies. Returns true if the specified policy
|
| - // is a proxy-related policy. ApplyProxyPolicy assumes the ownership
|
| - // of |value| in the case that the policy is proxy-specific.
|
| - bool ApplyProxyPolicy(ConfigurationPolicyType policy, Value* value);
|
| -
|
| - // Handles sync-related policies. Returns true if the policy was handled.
|
| - // Assumes ownership of |value| in that case.
|
| - bool ApplySyncPolicy(ConfigurationPolicyType policy, Value* value);
|
| -
|
| - // Handles policies that affect AutoFill. Returns true if the policy was
|
| - // handled and assumes ownership of |value| in that case.
|
| - bool ApplyAutoFillPolicy(ConfigurationPolicyType policy, Value* value);
|
| -
|
| - // Make sure that the |path| if present in |prefs_|. If not, set it to
|
| - // a blank string.
|
| - void EnsureStringPrefExists(const std::string& path);
|
| -
|
| - // If the required entries for default search are specified and valid,
|
| - // finalizes the policy-specified configuration by initializing the
|
| - // unspecified map entries. Otherwise wipes all default search related
|
| - // map entries from |prefs_|.
|
| - void FinalizeDefaultSearchPolicySettings();
|
| +
|
| + // Initialization status as reported by the policy provider the last time we
|
| + // queried it.
|
| + bool initialization_complete_;
|
| +
|
| + // Current policy preferences.
|
| + scoped_ptr<ConfigurationPolicyPrefKeeper> policy_keeper_;
|
| +
|
| + // TODO(mnissler): Remove after provider has proper observer interface.
|
| + NotificationRegistrar registrar_;
|
| +
|
| + ObserverList<Observer, true> observers_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ConfigurationPolicyPrefStore);
|
| };
|
|
|