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/bind.h" | 10 #include "base/bind.h" |
(...skipping 727 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
738 "invalid preference type: " << orig_type; | 738 "invalid preference type: " << orig_type; |
739 | 739 |
740 // Hand off ownership. | 740 // Hand off ownership. |
741 default_store_->SetDefaultValue(path, scoped_value.release()); | 741 default_store_->SetDefaultValue(path, scoped_value.release()); |
742 | 742 |
743 // Register with sync if necessary. | 743 // Register with sync if necessary. |
744 if (sync_status == SYNCABLE_PREF && pref_sync_associator_.get()) | 744 if (sync_status == SYNCABLE_PREF && pref_sync_associator_.get()) |
745 pref_sync_associator_->RegisterPref(path); | 745 pref_sync_associator_->RegisterPref(path); |
746 } | 746 } |
747 | 747 |
| 748 void PrefService::UnregisterPreference(const char* path) { |
| 749 DCHECK(CalledOnValidThread()); |
| 750 |
| 751 Preference p(this, path, Value::TYPE_NULL); |
| 752 PreferenceSet::const_iterator it = prefs_.find(&p); |
| 753 if (it == prefs_.end()) { |
| 754 NOTREACHED() << "Trying to unregister an unregistered pref: " << path; |
| 755 return; |
| 756 } |
| 757 |
| 758 prefs_.erase(it); |
| 759 default_store_->RemoveDefaultValue(path); |
| 760 if (pref_sync_associator_.get() && |
| 761 pref_sync_associator_->IsPrefRegistered(path)) { |
| 762 pref_sync_associator_->UnregisterPref(path); |
| 763 } |
| 764 } |
| 765 |
748 void PrefService::ClearPref(const char* path) { | 766 void PrefService::ClearPref(const char* path) { |
749 DCHECK(CalledOnValidThread()); | 767 DCHECK(CalledOnValidThread()); |
750 | 768 |
751 const Preference* pref = FindPreference(path); | 769 const Preference* pref = FindPreference(path); |
752 if (!pref) { | 770 if (!pref) { |
753 NOTREACHED() << "Trying to clear an unregistered pref: " << path; | 771 NOTREACHED() << "Trying to clear an unregistered pref: " << path; |
754 return; | 772 return; |
755 } | 773 } |
756 user_pref_store_->RemoveValue(path); | 774 user_pref_store_->RemoveValue(path); |
757 } | 775 } |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
921 return pref_value_store()->PrefValueFromDefaultStore(name_.c_str()); | 939 return pref_value_store()->PrefValueFromDefaultStore(name_.c_str()); |
922 } | 940 } |
923 | 941 |
924 bool PrefService::Preference::IsUserModifiable() const { | 942 bool PrefService::Preference::IsUserModifiable() const { |
925 return pref_value_store()->PrefValueUserModifiable(name_.c_str()); | 943 return pref_value_store()->PrefValueUserModifiable(name_.c_str()); |
926 } | 944 } |
927 | 945 |
928 bool PrefService::Preference::IsExtensionModifiable() const { | 946 bool PrefService::Preference::IsExtensionModifiable() const { |
929 return pref_value_store()->PrefValueExtensionModifiable(name_.c_str()); | 947 return pref_value_store()->PrefValueExtensionModifiable(name_.c_str()); |
930 } | 948 } |
OLD | NEW |