diff options
Diffstat (limited to 'chrome/browser/prefs/pref_set_observer.h')
-rw-r--r-- | chrome/browser/prefs/pref_set_observer.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/chrome/browser/prefs/pref_set_observer.h b/chrome/browser/prefs/pref_set_observer.h new file mode 100644 index 0000000..038a3f5 --- /dev/null +++ b/chrome/browser/prefs/pref_set_observer.h @@ -0,0 +1,54 @@ +// Copyright (c) 2010 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_PREFS_PREF_SET_OBSERVER_H_ +#define CHROME_BROWSER_PREFS_PREF_SET_OBSERVER_H_ +#pragma once + +#include <set> + +#include "base/basictypes.h" +#include "chrome/browser/prefs/pref_service.h" +#include "chrome/common/notification_observer.h" + +// Observes the state of a set of preferences and allows to query their combined +// managed bits. +class PrefSetObserver : public NotificationObserver { + public: + // Initialize with an empty set of preferences. + PrefSetObserver(PrefService* pref_service, + NotificationObserver* observer); + virtual ~PrefSetObserver(); + + // Add a |pref| to the set of preferences to observe. + void AddPref(const std::string& pref); + // Remove |pref| from the set of observed peferences. + void RemovePref(const std::string& pref); + + // Check whether |pref| is in the set of observed preferences. + bool IsObserved(const std::string& pref); + // Check whether any of the observed preferences has the managed bit set. + bool IsManaged(); + + // Create a pref set observer for all preferences relavant to proxies. + static PrefSetObserver* CreateProxyPrefSetObserver( + PrefService* pref_service, + NotificationObserver* observer); + + private: + // Overridden from NotificationObserver. + virtual void Observe(NotificationType type, + const NotificationSource& source, + const NotificationDetails& details); + + typedef std::set<std::string> PrefSet; + PrefSet prefs_; + + PrefService* pref_service_; + NotificationObserver* observer_; + + DISALLOW_COPY_AND_ASSIGN(PrefSetObserver); +}; + +#endif // CHROME_BROWSER_PREFS_PREF_SET_OBSERVER_H_ |