pref_set_observer.cc revision 731df977c0511bca2206b5f333555b1205ff1f43
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#include "chrome/browser/prefs/pref_set_observer.h" 6 7#include "chrome/common/notification_type.h" 8#include "chrome/common/pref_names.h" 9 10PrefSetObserver::PrefSetObserver(PrefService* pref_service, 11 NotificationObserver* observer) 12 : pref_service_(pref_service), 13 observer_(observer) { 14 registrar_.Init(pref_service); 15} 16 17PrefSetObserver::~PrefSetObserver() {} 18 19void PrefSetObserver::AddPref(const std::string& pref) { 20 if (!prefs_.count(pref) && pref_service_->FindPreference(pref.c_str())) { 21 prefs_.insert(pref); 22 registrar_.Add(pref.c_str(), this); 23 } 24} 25 26void PrefSetObserver::RemovePref(const std::string& pref) { 27 if (prefs_.erase(pref)) 28 registrar_.Remove(pref.c_str(), this); 29} 30 31bool PrefSetObserver::IsObserved(const std::string& pref) { 32 return prefs_.count(pref) > 0; 33} 34 35bool PrefSetObserver::IsManaged() { 36 for (PrefSet::const_iterator i(prefs_.begin()); i != prefs_.end(); ++i) { 37 const PrefService::Preference* pref = 38 pref_service_->FindPreference(i->c_str()); 39 if (pref && pref->IsManaged()) 40 return true; 41 } 42 return false; 43} 44 45// static 46PrefSetObserver* PrefSetObserver::CreateProxyPrefSetObserver( 47 PrefService* pref_service, 48 NotificationObserver* observer) { 49 PrefSetObserver* pref_set = new PrefSetObserver(pref_service, observer); 50 pref_set->AddPref(prefs::kNoProxyServer); 51 pref_set->AddPref(prefs::kProxyAutoDetect); 52 pref_set->AddPref(prefs::kProxyServer); 53 pref_set->AddPref(prefs::kProxyPacUrl); 54 pref_set->AddPref(prefs::kProxyBypassList); 55 56 return pref_set; 57} 58 59// static 60PrefSetObserver* PrefSetObserver::CreateDefaultSearchPrefSetObserver( 61 PrefService* pref_service, 62 NotificationObserver* observer) { 63 PrefSetObserver* pref_set = new PrefSetObserver(pref_service, observer); 64 pref_set->AddPref(prefs::kDefaultSearchProviderEnabled); 65 pref_set->AddPref(prefs::kDefaultSearchProviderName); 66 pref_set->AddPref(prefs::kDefaultSearchProviderKeyword); 67 pref_set->AddPref(prefs::kDefaultSearchProviderSearchURL); 68 pref_set->AddPref(prefs::kDefaultSearchProviderSuggestURL); 69 pref_set->AddPref(prefs::kDefaultSearchProviderIconURL); 70 pref_set->AddPref(prefs::kDefaultSearchProviderEncodings); 71 72 return pref_set; 73} 74 75void PrefSetObserver::Observe(NotificationType type, 76 const NotificationSource& source, 77 const NotificationDetails& details) { 78 if (observer_) 79 observer_->Observe(type, source, details); 80} 81