Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2013 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/supervised_user_pref_store.h" | |
| 6 | |
| 7 #include "base/bind.h" | |
| 8 #include "base/prefs/pref_value_map.h" | |
| 9 #include "base/values.h" | |
| 10 #include "chrome/browser/managed_mode/managed_mode_url_filter.h" | |
| 11 #include "chrome/browser/managed_mode/managed_user_settings.h" | |
| 12 #include "chrome/browser/managed_mode/managed_user_settings_service.h" | |
| 13 #include "chrome/browser/prefs/incognito_mode_prefs.h" | |
| 14 #include "chrome/common/pref_names.h" | |
| 15 | |
| 16 using base::FundamentalValue; | |
| 17 | |
| 18 SupervisedUserPrefStore::SupervisedUserPrefStore( | |
| 19 ManagedUserSettingsService* managed_user_settings_service) | |
| 20 : weak_ptr_factory_(this) { | |
|
Pam (message me for reviews)
2013/08/30 13:35:53
I'd suggest additional indentation here.
Bernhard Bauer
2013/08/30 14:54:27
Like what? Note that this is also how clang-format
Pam (message me for reviews)
2013/09/02 09:38:41
Well, OK. IIRC this case is specifically called ou
| |
| 21 managed_user_settings_service->Subscribe( | |
| 22 base::Bind(&SupervisedUserPrefStore::OnNewSettingsAvailable, | |
| 23 weak_ptr_factory_.GetWeakPtr())); | |
| 24 } | |
| 25 | |
| 26 bool SupervisedUserPrefStore::GetValue(const std::string& key, | |
| 27 const base::Value** value) const { | |
| 28 DCHECK(prefs_); | |
| 29 return prefs_->GetValue(key, value); | |
| 30 } | |
| 31 | |
| 32 void SupervisedUserPrefStore::AddObserver(PrefStore::Observer* observer) { | |
| 33 observers_.AddObserver(observer); | |
| 34 } | |
| 35 | |
| 36 void SupervisedUserPrefStore::RemoveObserver(PrefStore::Observer* observer) { | |
| 37 observers_.RemoveObserver(observer); | |
| 38 } | |
| 39 | |
| 40 bool SupervisedUserPrefStore::HasObservers() const { | |
| 41 return observers_.might_have_observers(); | |
| 42 } | |
| 43 | |
| 44 bool SupervisedUserPrefStore::IsInitializationComplete() const { | |
| 45 return prefs_; | |
|
Pam (message me for reviews)
2013/08/30 13:35:53
This works, but it makes me itch. It could also le
Bernhard Bauer
2013/08/30 14:54:27
Well, it'd need to be `prefs_.get() != NULL`. If i
Pam (message me for reviews)
2013/09/02 09:38:41
Works for me.
Bernhard Bauer
2013/09/02 11:01:07
Done.
| |
| 46 } | |
| 47 | |
| 48 SupervisedUserPrefStore::~SupervisedUserPrefStore() { | |
| 49 } | |
| 50 | |
| 51 void SupervisedUserPrefStore::CopySettingsValue( | |
| 52 const base::DictionaryValue* settings, | |
| 53 const char* settings_name, | |
| 54 const char* pref_name) { | |
| 55 const base::Value* value = NULL; | |
| 56 if (settings->GetWithoutPathExpansion(settings_name, &value)) | |
| 57 prefs_->SetValue(pref_name, value->DeepCopy()); | |
| 58 } | |
| 59 | |
| 60 void SupervisedUserPrefStore::OnNewSettingsAvailable( | |
| 61 const base::DictionaryValue* settings) { | |
| 62 scoped_ptr<PrefValueMap> old_prefs = prefs_.Pass(); | |
| 63 prefs_.reset(new PrefValueMap); | |
| 64 if (settings) { | |
| 65 // Set hardcoded prefs. | |
| 66 prefs_->SetValue(prefs::kAllowDeletingBrowserHistory, | |
| 67 new FundamentalValue(false)); | |
| 68 prefs_->SetValue(prefs::kDefaultManagedModeFilteringBehavior, | |
| 69 new FundamentalValue(ManagedModeURLFilter::ALLOW)); | |
| 70 prefs_->SetValue(prefs::kForceSafeSearch, new FundamentalValue(true)); | |
| 71 prefs_->SetValue(prefs::kHideWebStoreIcon, new FundamentalValue(true)); | |
| 72 prefs_->SetValue(prefs::kIncognitoModeAvailability, | |
| 73 new FundamentalValue(IncognitoModePrefs::DISABLED)); | |
| 74 prefs_->SetValue(prefs::kSigninAllowed, new FundamentalValue(false)); | |
| 75 | |
| 76 // Copy managed user settings to prefs. | |
|
Pam (message me for reviews)
2013/08/30 13:35:53
Try a map, like ExtensionPrefStore and others use,
Bernhard Bauer
2013/08/30 14:54:27
Done.
| |
| 77 CopySettingsValue(settings, | |
| 78 managed_users::kContentPackDefaultFilteringBehavior, | |
| 79 prefs::kDefaultManagedModeFilteringBehavior); | |
| 80 CopySettingsValue(settings, | |
| 81 managed_users::kContentPackManualBehaviorHosts, | |
| 82 prefs::kManagedModeManualHosts); | |
| 83 CopySettingsValue(settings, | |
| 84 managed_users::kContentPackManualBehaviorURLs, | |
| 85 prefs::kManagedModeManualURLs); | |
| 86 CopySettingsValue(settings, | |
| 87 managed_users::kForceSafeSearch, | |
| 88 prefs::kForceSafeSearch); | |
| 89 } | |
| 90 | |
| 91 if (!old_prefs) { | |
| 92 FOR_EACH_OBSERVER(Observer, observers_, OnInitializationCompleted(true)); | |
| 93 return; | |
| 94 } | |
| 95 | |
| 96 std::vector<std::string> changed_prefs; | |
| 97 prefs_->GetDifferingKeys(old_prefs.get(), &changed_prefs); | |
| 98 | |
| 99 // Send out change notifications. | |
| 100 for (std::vector<std::string>::const_iterator pref(changed_prefs.begin()); | |
| 101 pref != changed_prefs.end(); | |
| 102 ++pref) { | |
| 103 FOR_EACH_OBSERVER( | |
| 104 PrefStore::Observer, observers_, OnPrefValueChanged(*pref)); | |
| 105 } | |
| 106 } | |
| OLD | NEW |