Index: chrome/browser/configuration_policy_provider_win.h |
diff --git a/chrome/browser/configuration_policy_provider_win.h b/chrome/browser/configuration_policy_provider_win.h |
index 874a9ccca5b74a01d5da003eb35064a688f0515c..522b53883fc77fcb7d97d060a0484f5b43e764d3 100644 |
--- a/chrome/browser/configuration_policy_provider_win.h |
+++ b/chrome/browser/configuration_policy_provider_win.h |
@@ -6,6 +6,9 @@ |
#define CHROME_BROWSER_CONFIGURATION_POLICY_PROVIDER_WIN_H_ |
#pragma once |
+#include "base/object_watcher.h" |
+#include "base/scoped_ptr.h" |
+#include "base/waitable_event.h" |
#include "chrome/browser/configuration_policy_store.h" |
#include "chrome/browser/configuration_policy_provider.h" |
@@ -17,6 +20,23 @@ |
// the latest version of the policy set by administrators. |
class ConfigurationPolicyProviderWin : public ConfigurationPolicyProvider { |
public: |
+ // Keeps watch on Windows Group Policy notification event to trigger |
+ // a policy reload when Group Policy changes. |
+ class GroupPolicyChangeWatcher : public base::ObjectWatcher::Delegate { |
+ public: |
+ explicit GroupPolicyChangeWatcher(ConfigurationPolicyProvider* provider); |
+ virtual ~GroupPolicyChangeWatcher() {} |
+ |
+ virtual void OnObjectSignaled(HANDLE object); |
+ |
+ private: |
+ ConfigurationPolicyProvider* provider_; |
+ base::WaitableEvent user_policy_changed_event_; |
+ base::WaitableEvent machine_policy_changed_event_; |
+ base::ObjectWatcher user_policy_watcher_; |
+ base::ObjectWatcher machine_policy_watcher_; |
+ }; |
+ |
ConfigurationPolicyProviderWin(); |
virtual ~ConfigurationPolicyProviderWin() { } |
@@ -29,6 +49,8 @@ class ConfigurationPolicyProviderWin : public ConfigurationPolicyProvider { |
static const wchar_t kPolicyRegistrySubKey[]; |
private: |
+ scoped_ptr<GroupPolicyChangeWatcher> watcher_; |
+ |
// Methods to perfrom type-specific policy lookups in the registry. |
// HKLM is checked first, then HKCU. |
bool GetRegistryPolicyString(const wchar_t* value_name, string16* result); |