// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_LOADER_WIN_H_ #define CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_LOADER_WIN_H_ #pragma once #include "base/synchronization/waitable_event.h" #include "base/win/object_watcher.h" #include "chrome/browser/policy/asynchronous_policy_loader.h" namespace policy { // Keeps watch on Windows Group Policy notification event to trigger a policy // reload when Group Policy changes. class ConfigurationPolicyLoaderWin : public AsynchronousPolicyLoader, public base::win::ObjectWatcher::Delegate { public: ConfigurationPolicyLoaderWin( AsynchronousPolicyProvider::Delegate* delegate, int reload_interval_minutes); virtual ~ConfigurationPolicyLoaderWin() {} protected: // AsynchronousPolicyLoader overrides: virtual void InitOnFileThread(); virtual void StopOnFileThread(); private: // Updates the watchers and schedules the reload task if appropriate. void SetupWatches(); // Post a reload notification and update the watch machinery. void Reload(); // ObjectWatcher::Delegate overrides: virtual void OnObjectSignaled(HANDLE object); base::WaitableEvent user_policy_changed_event_; base::WaitableEvent machine_policy_changed_event_; base::win::ObjectWatcher user_policy_watcher_; base::win::ObjectWatcher machine_policy_watcher_; bool user_policy_watcher_failed_; bool machine_policy_watcher_failed_; DISALLOW_COPY_AND_ASSIGN(ConfigurationPolicyLoaderWin); }; } // namespace policy #endif // CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_LOADER_WIN_H_