Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(161)

Side by Side Diff: chrome/browser/prefs/supervised_user_pref_store.cc

Issue 23466004: Add ManagedUserSettingsService and a SupervisedUserPrefStore using it. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698