1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 23345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Use of this source code is governed by a BSD-style license that can be 33345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// found in the LICENSE file. 43345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 53345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#ifndef CHROME_BROWSER_PREFS_PREF_SET_OBSERVER_H_ 63345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#define CHROME_BROWSER_PREFS_PREF_SET_OBSERVER_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 83345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 93345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include <set> 103345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/basictypes.h" 123345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/prefs/pref_change_registrar.h" 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/prefs/pref_service.h" 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/notification_observer.h" 153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Observes the state of a set of preferences and allows to query their combined 173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// managed bits. 183345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickclass PrefSetObserver : public NotificationObserver { 193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick public: 203345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Initialize with an empty set of preferences. 213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick PrefSetObserver(PrefService* pref_service, 223345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick NotificationObserver* observer); 23731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick virtual ~PrefSetObserver(); 243345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Add a |pref| to the set of preferences to observe. 263345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick void AddPref(const std::string& pref); 273345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Remove |pref| from the set of observed peferences. 283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick void RemovePref(const std::string& pref); 293345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Check whether |pref| is in the set of observed preferences. 313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick bool IsObserved(const std::string& pref); 323345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Check whether any of the observed preferences has the managed bit set. 333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick bool IsManaged(); 343345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 353345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Create a pref set observer for all preferences relevant to proxies. 363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick static PrefSetObserver* CreateProxyPrefSetObserver( 373345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick PrefService* pref_service, 383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick NotificationObserver* observer); 393345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 403345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Create a pref set observer for all preferences relevant to default search. 413345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick static PrefSetObserver* CreateDefaultSearchPrefSetObserver( 423345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick PrefService* pref_service, 433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick NotificationObserver* observer); 443345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick private: 463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Overridden from NotificationObserver. 473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual void Observe(NotificationType type, 483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick const NotificationSource& source, 493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick const NotificationDetails& details); 503345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 513345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick typedef std::set<std::string> PrefSet; 523345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick PrefSet prefs_; 533345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 543345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick PrefService* pref_service_; 553345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick PrefChangeRegistrar registrar_; 563345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick NotificationObserver* observer_; 573345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick DISALLOW_COPY_AND_ASSIGN(PrefSetObserver); 593345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}; 603345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 613345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#endif // CHROME_BROWSER_PREFS_PREF_SET_OBSERVER_H_ 62