configuration_policy_loader_win.h revision 3f50c38dc070f4bb515c1b64450dae14f316474e
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_LOADER_WIN_H_ 6#define CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_LOADER_WIN_H_ 7#pragma once 8 9#include "base/synchronization/waitable_event.h" 10#include "base/win/object_watcher.h" 11#include "chrome/browser/policy/asynchronous_policy_loader.h" 12 13namespace policy { 14 15// Keeps watch on Windows Group Policy notification event to trigger a policy 16// reload when Group Policy changes. 17class ConfigurationPolicyLoaderWin 18 : public AsynchronousPolicyLoader, 19 public base::win::ObjectWatcher::Delegate, 20 public MessageLoop::DestructionObserver { 21 public: 22 ConfigurationPolicyLoaderWin( 23 AsynchronousPolicyProvider::Delegate* delegate, 24 int reload_interval_minutes); 25 virtual ~ConfigurationPolicyLoaderWin() {} 26 27 protected: 28 // AsynchronousPolicyLoader overrides: 29 virtual void InitOnFileThread(); 30 virtual void StopOnFileThread(); 31 32 private: 33 // Updates the watchers and schedules the reload task if appropriate. 34 void SetupWatches(); 35 36 // Post a reload notification and update the watch machinery. 37 void Reload(); 38 39 // ObjectWatcher::Delegate overrides: 40 virtual void OnObjectSignaled(HANDLE object); 41 42 // MessageLoop::DestructionObserver overrides: 43 virtual void WillDestroyCurrentMessageLoop(); 44 45 base::WaitableEvent user_policy_changed_event_; 46 base::WaitableEvent machine_policy_changed_event_; 47 base::win::ObjectWatcher user_policy_watcher_; 48 base::win::ObjectWatcher machine_policy_watcher_; 49 bool user_policy_watcher_failed_; 50 bool machine_policy_watcher_failed_; 51 52 DISALLOW_COPY_AND_ASSIGN(ConfigurationPolicyLoaderWin); 53}; 54 55} // namespace policy 56 57#endif // CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_LOADER_WIN_H_ 58