OLD | NEW |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |