Index: base/prefs/pref_registry.cc |
diff --git a/base/prefs/pref_registry.cc b/base/prefs/pref_registry.cc |
index 69f0494f534408807fb916400e2abe45b4cc0107..74f4b5220887ee76e4596e401e806c766d6755c9 100644 |
--- a/base/prefs/pref_registry.cc |
+++ b/base/prefs/pref_registry.cc |
@@ -7,6 +7,7 @@ |
#include "base/logging.h" |
#include "base/prefs/default_pref_store.h" |
#include "base/prefs/pref_store.h" |
+#include "base/stl_util.h" |
#include "base/values.h" |
PrefRegistry::PrefRegistry() |
@@ -16,6 +17,13 @@ PrefRegistry::PrefRegistry() |
PrefRegistry::~PrefRegistry() { |
} |
+uint32 PrefRegistry::GetRegistrationFlags(const std::string& pref_name) const { |
+ const auto& it = registration_flags_.find(pref_name); |
+ if (it == registration_flags_.end()) |
+ return NO_REGISTRATION_FLAGS; |
+ return it->second; |
+} |
+ |
scoped_refptr<PrefStore> PrefRegistry::defaults() { |
return defaults_.get(); |
} |
@@ -41,13 +49,18 @@ void PrefRegistry::SetDefaultPrefValue(const std::string& pref_name, |
} |
void PrefRegistry::RegisterPreference(const std::string& path, |
- base::Value* default_value) { |
+ base::Value* default_value, |
+ uint32 flags) { |
base::Value::Type orig_type = default_value->GetType(); |
DCHECK(orig_type != base::Value::TYPE_NULL && |
orig_type != base::Value::TYPE_BINARY) << |
"invalid preference type: " << orig_type; |
DCHECK(!defaults_->GetValue(path, NULL)) << |
"Trying to register a previously registered pref: " << path; |
+ DCHECK(!ContainsKey(registration_flags_, path)) << |
+ "Trying to register a previously registered pref: " << path; |
defaults_->SetDefaultValue(path, make_scoped_ptr(default_value)); |
+ if (flags != NO_REGISTRATION_FLAGS) |
+ registration_flags_[path] = flags; |
} |