configuration_policy_pref_store.h revision 21d179b334e59e9a3bfcaed4c4430bef1bc5759d
1// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_PREF_STORE_H_ 6#define CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_PREF_STORE_H_ 7#pragma once 8 9#include <set> 10#include <string> 11 12#include "base/basictypes.h" 13#include "base/observer_list.h" 14#include "base/scoped_ptr.h" 15#include "base/values.h" 16#include "chrome/browser/policy/configuration_policy_provider.h" 17#include "chrome/browser/policy/configuration_policy_store_interface.h" 18#include "chrome/common/pref_store.h" 19 20class Profile; 21 22namespace policy { 23 24class ConfigurationPolicyPrefKeeper; 25 26// An implementation of PrefStore that bridges policy settings as read from a 27// ConfigurationPolicyProvider to preferences. 28class ConfigurationPolicyPrefStore 29 : public PrefStore, 30 public ConfigurationPolicyProvider::Observer { 31 public: 32 // The ConfigurationPolicyPrefStore does not take ownership of the 33 // passed-in |provider|. 34 explicit ConfigurationPolicyPrefStore(ConfigurationPolicyProvider* provider); 35 virtual ~ConfigurationPolicyPrefStore(); 36 37 // PrefStore methods: 38 virtual void AddObserver(PrefStore::Observer* observer); 39 virtual void RemoveObserver(PrefStore::Observer* observer); 40 virtual bool IsInitializationComplete() const; 41 virtual ReadResult GetValue(const std::string& key, Value** result) const; 42 43 // ConfigurationPolicyProvider::Observer methods: 44 virtual void OnUpdatePolicy(); 45 46 // Creates a ConfigurationPolicyPrefStore that reads managed platform policy. 47 static ConfigurationPolicyPrefStore* CreateManagedPlatformPolicyPrefStore(); 48 49 // Creates a ConfigurationPolicyPrefStore that supplies policy from 50 // the device management server. 51 static ConfigurationPolicyPrefStore* CreateDeviceManagementPolicyPrefStore( 52 Profile* profile); 53 54 // Creates a ConfigurationPolicyPrefStore that reads recommended policy. 55 static ConfigurationPolicyPrefStore* CreateRecommendedPolicyPrefStore(); 56 57 // Returns the default policy definition list for Chrome. 58 static const ConfigurationPolicyProvider::PolicyDefinitionList* 59 GetChromePolicyDefinitionList(); 60 61 private: 62 // Refreshes policy information, rereading policy from the provider and 63 // sending out change notifications as appropriate. 64 void Refresh(); 65 66 static const ConfigurationPolicyProvider::PolicyDefinitionList 67 kPolicyDefinitionList; 68 69 // The policy provider from which policy settings are read. 70 ConfigurationPolicyProvider* provider_; 71 72 // Initialization status as reported by the policy provider the last time we 73 // queried it. 74 bool initialization_complete_; 75 76 // Current policy preferences. 77 scoped_ptr<ConfigurationPolicyPrefKeeper> policy_keeper_; 78 79 ObserverList<PrefStore::Observer, true> observers_; 80 81 ConfigurationPolicyObserverRegistrar registrar_; 82 83 DISALLOW_COPY_AND_ASSIGN(ConfigurationPolicyPrefStore); 84}; 85 86} // namespace policy 87 88#endif // CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_PREF_STORE_H_ 89