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

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

Issue 6312121: Add initial device policy infrastructure. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix race condition and tests. Created 9 years, 10 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
« no previous file with comments | « chrome/browser/prefs/pref_service.h ('k') | chrome/browser/prefs/pref_service_mock_builder.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/prefs/pref_service.h" 5 #include "chrome/browser/prefs/pref_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 // with NFS/AFS. 97 // with NFS/AFS.
98 // TODO(evanm): remove this once we've collected state. 98 // TODO(evanm): remove this once we've collected state.
99 file_util::FileSystemType fstype; 99 file_util::FileSystemType fstype;
100 if (file_util::GetFileSystemType(pref_filename.DirName(), &fstype)) { 100 if (file_util::GetFileSystemType(pref_filename.DirName(), &fstype)) {
101 UMA_HISTOGRAM_ENUMERATION("PrefService.FileSystemType", 101 UMA_HISTOGRAM_ENUMERATION("PrefService.FileSystemType",
102 static_cast<int>(fstype), 102 static_cast<int>(fstype),
103 file_util::FILE_SYSTEM_TYPE_COUNT); 103 file_util::FILE_SYSTEM_TYPE_COUNT);
104 } 104 }
105 #endif 105 #endif
106 106
107 ConfigurationPolicyPrefStore* managed = 107 ConfigurationPolicyPrefStore* managed_platform =
108 ConfigurationPolicyPrefStore::CreateManagedPlatformPolicyPrefStore(); 108 ConfigurationPolicyPrefStore::CreateManagedPlatformPolicyPrefStore();
109 ConfigurationPolicyPrefStore* device_management = 109 ConfigurationPolicyPrefStore* managed_cloud =
110 ConfigurationPolicyPrefStore::CreateDeviceManagementPolicyPrefStore( 110 ConfigurationPolicyPrefStore::CreateManagedCloudPolicyPrefStore(profile);
111 profile);
112 CommandLinePrefStore* command_line = 111 CommandLinePrefStore* command_line =
113 new CommandLinePrefStore(CommandLine::ForCurrentProcess()); 112 new CommandLinePrefStore(CommandLine::ForCurrentProcess());
114 JsonPrefStore* user = new JsonPrefStore( 113 JsonPrefStore* user = new JsonPrefStore(
115 pref_filename, 114 pref_filename,
116 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE)); 115 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE));
117 ConfigurationPolicyPrefStore* recommended = 116 ConfigurationPolicyPrefStore* recommended_platform =
118 ConfigurationPolicyPrefStore::CreateRecommendedPolicyPrefStore(); 117 ConfigurationPolicyPrefStore::CreateRecommendedPlatformPolicyPrefStore();
118 ConfigurationPolicyPrefStore* recommended_cloud =
119 ConfigurationPolicyPrefStore::CreateRecommendedCloudPolicyPrefStore(
120 profile);
119 DefaultPrefStore* default_pref_store = new DefaultPrefStore(); 121 DefaultPrefStore* default_pref_store = new DefaultPrefStore();
120 122
121 return new PrefService(managed, device_management, extension_prefs, 123 return new PrefService(managed_platform, managed_cloud, extension_prefs,
122 command_line, user, recommended, default_pref_store); 124 command_line, user, recommended_platform,
125 recommended_cloud, default_pref_store);
123 } 126 }
124 127
125 PrefService* PrefService::CreateIncognitoPrefService( 128 PrefService* PrefService::CreateIncognitoPrefService(
126 PrefStore* incognito_extension_prefs) { 129 PrefStore* incognito_extension_prefs) {
127 return new PrefService(*this, incognito_extension_prefs); 130 return new PrefService(*this, incognito_extension_prefs);
128 } 131 }
129 132
130 PrefService::PrefService(PrefStore* managed_platform_prefs, 133 PrefService::PrefService(PrefStore* managed_platform_prefs,
131 PrefStore* device_management_prefs, 134 PrefStore* managed_cloud_prefs,
132 PrefStore* extension_prefs, 135 PrefStore* extension_prefs,
133 PrefStore* command_line_prefs, 136 PrefStore* command_line_prefs,
134 PersistentPrefStore* user_prefs, 137 PersistentPrefStore* user_prefs,
135 PrefStore* recommended_prefs, 138 PrefStore* recommended_platform_prefs,
139 PrefStore* recommended_cloud_prefs,
136 DefaultPrefStore* default_store) 140 DefaultPrefStore* default_store)
137 : user_pref_store_(user_prefs), 141 : user_pref_store_(user_prefs),
138 default_store_(default_store) { 142 default_store_(default_store) {
139 pref_notifier_.reset(new PrefNotifierImpl(this)); 143 pref_notifier_.reset(new PrefNotifierImpl(this));
140 pref_value_store_.reset( 144 pref_value_store_.reset(
141 new PrefValueStore(managed_platform_prefs, 145 new PrefValueStore(managed_platform_prefs,
142 device_management_prefs, 146 managed_cloud_prefs,
143 extension_prefs, 147 extension_prefs,
144 command_line_prefs, 148 command_line_prefs,
145 user_pref_store_, 149 user_pref_store_,
146 recommended_prefs, 150 recommended_platform_prefs,
151 recommended_cloud_prefs,
147 default_store, 152 default_store,
148 pref_notifier_.get())); 153 pref_notifier_.get()));
149 InitFromStorage(); 154 InitFromStorage();
150 } 155 }
151 156
152 PrefService::PrefService(const PrefService& original, 157 PrefService::PrefService(const PrefService& original,
153 PrefStore* incognito_extension_prefs) 158 PrefStore* incognito_extension_prefs)
154 : user_pref_store_( 159 : user_pref_store_(
155 new OverlayPersistentPrefStore(original.user_pref_store_.get())), 160 new OverlayPersistentPrefStore(original.user_pref_store_.get())),
156 default_store_(original.default_store_.get()){ 161 default_store_(original.default_store_.get()){
157 pref_notifier_.reset(new PrefNotifierImpl(this)); 162 pref_notifier_.reset(new PrefNotifierImpl(this));
158 pref_value_store_.reset(original.pref_value_store_->CloneAndSpecialize( 163 pref_value_store_.reset(original.pref_value_store_->CloneAndSpecialize(
159 NULL, // managed_platform_prefs 164 NULL, // managed_platform_prefs
160 NULL, // device_management_prefs 165 NULL, // managed_cloud_prefs
161 incognito_extension_prefs, 166 incognito_extension_prefs,
162 NULL, // command_line_prefs 167 NULL, // command_line_prefs
163 user_pref_store_.get(), 168 user_pref_store_.get(),
164 NULL, // recommended_prefs 169 NULL, // recommended_platform_prefs
170 NULL, // recommended_cloud_prefs
165 default_store_.get(), 171 default_store_.get(),
166 pref_notifier_.get())); 172 pref_notifier_.get()));
167 InitFromStorage(); 173 InitFromStorage();
168 } 174 }
169 175
170 PrefService::~PrefService() { 176 PrefService::~PrefService() {
171 DCHECK(CalledOnValidThread()); 177 DCHECK(CalledOnValidThread());
172 STLDeleteContainerPointers(prefs_.begin(), prefs_.end()); 178 STLDeleteContainerPointers(prefs_.begin(), prefs_.end());
173 prefs_.clear(); 179 prefs_.clear();
174 180
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 DCHECK(found_value->IsType(type_)); 651 DCHECK(found_value->IsType(type_));
646 return found_value; 652 return found_value;
647 } 653 }
648 654
649 // Every registered preference has at least a default value. 655 // Every registered preference has at least a default value.
650 NOTREACHED() << "no valid value found for registered pref " << name_; 656 NOTREACHED() << "no valid value found for registered pref " << name_;
651 return NULL; 657 return NULL;
652 } 658 }
653 659
654 bool PrefService::Preference::IsManaged() const { 660 bool PrefService::Preference::IsManaged() const {
655 PrefValueStore* pref_value_store = pref_service_->pref_value_store_.get(); 661 return pref_service_->pref_value_store_->PrefValueInManagedStore(
656 return pref_value_store->PrefValueInManagedPlatformStore(name_.c_str()) || 662 name_.c_str());
657 pref_value_store->PrefValueInDeviceManagementStore(name_.c_str());
658 } 663 }
659 664
660 bool PrefService::Preference::HasExtensionSetting() const { 665 bool PrefService::Preference::HasExtensionSetting() const {
661 return pref_service_->pref_value_store_-> 666 return pref_service_->pref_value_store_->PrefValueInExtensionStore(
662 PrefValueInExtensionStore(name_.c_str()); 667 name_.c_str());
663 } 668 }
664 669
665 bool PrefService::Preference::HasUserSetting() const { 670 bool PrefService::Preference::HasUserSetting() const {
666 return pref_service_->pref_value_store_-> 671 return pref_service_->pref_value_store_->PrefValueInUserStore(
667 PrefValueInUserStore(name_.c_str()); 672 name_.c_str());
668 } 673 }
669 674
670 bool PrefService::Preference::IsExtensionControlled() const { 675 bool PrefService::Preference::IsExtensionControlled() const {
671 return pref_service_->pref_value_store_-> 676 return pref_service_->pref_value_store_->PrefValueFromExtensionStore(
672 PrefValueFromExtensionStore(name_.c_str()); 677 name_.c_str());
673 } 678 }
674 679
675 bool PrefService::Preference::IsUserControlled() const { 680 bool PrefService::Preference::IsUserControlled() const {
676 return pref_service_->pref_value_store_-> 681 return pref_service_->pref_value_store_->PrefValueFromUserStore(
677 PrefValueFromUserStore(name_.c_str()); 682 name_.c_str());
678 } 683 }
679 684
680 bool PrefService::Preference::IsDefaultValue() const { 685 bool PrefService::Preference::IsDefaultValue() const {
681 return pref_service_->pref_value_store_-> 686 return pref_service_->pref_value_store_->PrefValueFromDefaultStore(
682 PrefValueFromDefaultStore(name_.c_str()); 687 name_.c_str());
683 } 688 }
684 689
685 bool PrefService::Preference::IsUserModifiable() const { 690 bool PrefService::Preference::IsUserModifiable() const {
686 return pref_service_->pref_value_store_-> 691 return pref_service_->pref_value_store_->PrefValueUserModifiable(
687 PrefValueUserModifiable(name_.c_str()); 692 name_.c_str());
688 } 693 }
OLDNEW
« no previous file with comments | « chrome/browser/prefs/pref_service.h ('k') | chrome/browser/prefs/pref_service_mock_builder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698