managed_prefs_banner_base.cc revision 21d179b334e59e9a3bfcaed4c4430bef1bc5759d
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/policy/managed_prefs_banner_base.h" 6 7#include "chrome/browser/browser_process.h" 8#include "chrome/browser/prefs/pref_service.h" 9#include "chrome/browser/prefs/pref_set_observer.h" 10#include "chrome/common/notification_details.h" 11#include "chrome/common/notification_type.h" 12#include "chrome/common/pref_names.h" 13 14namespace policy { 15 16ManagedPrefsBannerBase::ManagedPrefsBannerBase(PrefService* user_prefs, 17 OptionsPage page) { 18 Init(g_browser_process->local_state(), user_prefs, page); 19} 20 21ManagedPrefsBannerBase::ManagedPrefsBannerBase(PrefService* local_state, 22 PrefService* user_prefs, 23 OptionsPage page) { 24 Init(local_state, user_prefs, page); 25} 26 27ManagedPrefsBannerBase::~ManagedPrefsBannerBase() {} 28 29void ManagedPrefsBannerBase::AddLocalStatePref(const char* pref) { 30 local_state_set_->AddPref(pref); 31} 32 33void ManagedPrefsBannerBase::RemoveLocalStatePref(const char* pref) { 34 local_state_set_->RemovePref(pref); 35} 36 37void ManagedPrefsBannerBase::AddUserPref(const char* pref) { 38 user_pref_set_->AddPref(pref); 39} 40 41void ManagedPrefsBannerBase::RemoveUserPref(const char* pref) { 42 user_pref_set_->RemovePref(pref); 43} 44 45bool ManagedPrefsBannerBase::DetermineVisibility() const { 46 return local_state_set_->IsManaged() || user_pref_set_->IsManaged(); 47} 48 49void ManagedPrefsBannerBase::Init(PrefService* local_state, 50 PrefService* user_prefs, 51 OptionsPage page) { 52 local_state_set_.reset(new PrefSetObserver(local_state, this)); 53 user_pref_set_.reset(new PrefSetObserver(user_prefs, this)); 54 55 switch (page) { 56 case OPTIONS_PAGE_GENERAL: 57 AddUserPref(prefs::kHomePage); 58 AddUserPref(prefs::kHomePageIsNewTabPage); 59 AddUserPref(prefs::kShowHomeButton); 60 AddUserPref(prefs::kRestoreOnStartup); 61 AddUserPref(prefs::kURLsToRestoreOnStartup); 62 AddUserPref(prefs::kDefaultSearchProviderEnabled); 63 AddUserPref(prefs::kDefaultSearchProviderName); 64 AddUserPref(prefs::kDefaultSearchProviderKeyword); 65 AddUserPref(prefs::kDefaultSearchProviderSearchURL); 66 AddUserPref(prefs::kDefaultSearchProviderSuggestURL); 67 AddUserPref(prefs::kDefaultSearchProviderIconURL); 68 AddUserPref(prefs::kDefaultSearchProviderEncodings); 69 break; 70 case OPTIONS_PAGE_CONTENT: 71 AddUserPref(prefs::kSyncManaged); 72 AddUserPref(prefs::kAutoFillEnabled); 73 AddUserPref(prefs::kPasswordManagerEnabled); 74#if defined(OS_CHROMEOS) 75 AddUserPref(prefs::kEnableScreenLock); 76#endif 77 break; 78 case OPTIONS_PAGE_ADVANCED: 79 AddUserPref(prefs::kAlternateErrorPagesEnabled); 80 AddUserPref(prefs::kSearchSuggestEnabled); 81 AddUserPref(prefs::kDnsPrefetchingEnabled); 82 AddUserPref(prefs::kDisableSpdy); 83 AddUserPref(prefs::kSafeBrowsingEnabled); 84#if defined(GOOGLE_CHROME_BUILD) 85 AddLocalStatePref(prefs::kMetricsReportingEnabled); 86#endif 87 AddUserPref(prefs::kProxyMode); 88 AddUserPref(prefs::kProxyServer); 89 AddUserPref(prefs::kProxyPacUrl); 90 AddUserPref(prefs::kProxyBypassList); 91 break; 92 default: 93 NOTREACHED(); 94 } 95} 96 97void ManagedPrefsBannerBase::Observe(NotificationType type, 98 const NotificationSource& source, 99 const NotificationDetails& details) { 100 if (NotificationType::PREF_CHANGED == type) { 101 std::string* pref = Details<std::string>(details).ptr(); 102 if (pref && (local_state_set_->IsObserved(*pref) || 103 user_pref_set_->IsObserved(*pref))) 104 OnUpdateVisibility(); 105 } 106} 107 108} // namespace policy 109