| 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 |