| Index: base/prefs/pref_value_map.cc
|
| diff --git a/base/prefs/pref_value_map.cc b/base/prefs/pref_value_map.cc
|
| index 5f2dc506b69c017f3c190614269047ccd30eccb1..93eadb72db46920b6bc4602b9a02c76e3df4998b 100644
|
| --- a/base/prefs/pref_value_map.cc
|
| +++ b/base/prefs/pref_value_map.cc
|
| @@ -13,60 +13,43 @@
|
|
|
| PrefValueMap::PrefValueMap() {}
|
|
|
| -PrefValueMap::~PrefValueMap() {
|
| - Clear();
|
| -}
|
| +PrefValueMap::~PrefValueMap() {}
|
|
|
| bool PrefValueMap::GetValue(const std::string& key,
|
| const base::Value** value) const {
|
| - const Map::const_iterator entry = prefs_.find(key);
|
| - if (entry == prefs_.end())
|
| - return false;
|
| + const base::Value* got_value = prefs_.get(key);
|
| + if (value && got_value)
|
| + *value = got_value;
|
|
|
| - if (value)
|
| - *value = entry->second;
|
| - return true;
|
| + return !!got_value;
|
| }
|
|
|
| bool PrefValueMap::GetValue(const std::string& key, base::Value** value) {
|
| - const Map::const_iterator entry = prefs_.find(key);
|
| - if (entry == prefs_.end())
|
| - return false;
|
| + base::Value* got_value = prefs_.get(key);
|
| + if (value && got_value)
|
| + *value = got_value;
|
|
|
| - if (value)
|
| - *value = entry->second;
|
| - return true;
|
| + return !!got_value;
|
| }
|
|
|
| -bool PrefValueMap::SetValue(const std::string& key, base::Value* value) {
|
| +bool PrefValueMap::SetValue(const std::string& key,
|
| + scoped_ptr<base::Value> value) {
|
| DCHECK(value);
|
| - auto result = prefs_.insert(std::make_pair(key, value));
|
| - if (result.second)
|
| - return true;
|
|
|
| - scoped_ptr<base::Value> value_ptr(value);
|
| - const Map::iterator& entry = result.first;
|
| - if (base::Value::Equals(entry->second, value))
|
| + base::Value* old_value = prefs_.get(key);
|
| + if (old_value && value->Equals(old_value))
|
| return false;
|
|
|
| - delete entry->second;
|
| - entry->second = value_ptr.release();
|
| -
|
| + prefs_.set(key, value.Pass());
|
| return true;
|
| }
|
|
|
| bool PrefValueMap::RemoveValue(const std::string& key) {
|
| - const Map::iterator entry = prefs_.find(key);
|
| - if (entry == prefs_.end())
|
| - return false;
|
| -
|
| - delete entry->second;
|
| - prefs_.erase(entry);
|
| - return true;
|
| + return prefs_.erase(key) != 0;
|
| }
|
|
|
| void PrefValueMap::Clear() {
|
| - STLDeleteValues(&prefs_);
|
| + prefs_.clear();
|
| }
|
|
|
| void PrefValueMap::Swap(PrefValueMap* other) {
|
| @@ -96,7 +79,7 @@ bool PrefValueMap::GetBoolean(const std::string& key,
|
| }
|
|
|
| void PrefValueMap::SetBoolean(const std::string& key, bool value) {
|
| - SetValue(key, new base::FundamentalValue(value));
|
| + SetValue(key, make_scoped_ptr(new base::FundamentalValue(value)));
|
| }
|
|
|
| bool PrefValueMap::GetString(const std::string& key,
|
| @@ -107,7 +90,7 @@ bool PrefValueMap::GetString(const std::string& key,
|
|
|
| void PrefValueMap::SetString(const std::string& key,
|
| const std::string& value) {
|
| - SetValue(key, new base::StringValue(value));
|
| + SetValue(key, make_scoped_ptr(new base::StringValue(value)));
|
| }
|
|
|
| bool PrefValueMap::GetInteger(const std::string& key, int* value) const {
|
| @@ -116,11 +99,11 @@ bool PrefValueMap::GetInteger(const std::string& key, int* value) const {
|
| }
|
|
|
| void PrefValueMap::SetInteger(const std::string& key, const int value) {
|
| - SetValue(key, new base::FundamentalValue(value));
|
| + SetValue(key, make_scoped_ptr(new base::FundamentalValue(value)));
|
| }
|
|
|
| void PrefValueMap::SetDouble(const std::string& key, const double value) {
|
| - SetValue(key, new base::FundamentalValue(value));
|
| + SetValue(key, make_scoped_ptr(new base::FundamentalValue(value)));
|
| }
|
|
|
| void PrefValueMap::GetDifferingKeys(
|
|
|