summaryrefslogtreecommitdiffstats
path: root/base/prefs
diff options
context:
space:
mode:
authoraberent@chromium.org <aberent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-07 18:06:02 +0000
committeraberent@chromium.org <aberent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-07 18:06:02 +0000
commit307cbf25bf5ac87d913fea7617d5653293dcbe92 (patch)
tree12ca9f6b3726d2971b181d651eef7479393757a7 /base/prefs
parent1959c50c1bade879687830aaac5bbb7ac33481f1 (diff)
downloadchromium_src-307cbf25bf5ac87d913fea7617d5653293dcbe92.zip
chromium_src-307cbf25bf5ac87d913fea7617d5653293dcbe92.tar.gz
chromium_src-307cbf25bf5ac87d913fea7617d5653293dcbe92.tar.bz2
Rewrite DefaultPrefStore for performance
Derive directly from PrefStore, and ignore observers since they can't usefully observe anything. Also remove now redundant members from ValueMapPrefStore. BUG=158330 Review URL: https://chromiumcodereview.appspot.com/11358123 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@166469 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/prefs')
-rw-r--r--base/prefs/default_pref_store.cc19
-rw-r--r--base/prefs/default_pref_store.h15
-rw-r--r--base/prefs/value_map_pref_store.cc16
-rw-r--r--base/prefs/value_map_pref_store.h8
4 files changed, 30 insertions, 28 deletions
diff --git a/base/prefs/default_pref_store.cc b/base/prefs/default_pref_store.cc
index c031221..eb14a50 100644
--- a/base/prefs/default_pref_store.cc
+++ b/base/prefs/default_pref_store.cc
@@ -3,19 +3,26 @@
// found in the LICENSE file.
#include "base/prefs/default_pref_store.h"
+#include "base/logging.h"
using base::Value;
DefaultPrefStore::DefaultPrefStore() {}
+PrefStore::ReadResult DefaultPrefStore::GetValue(
+ const std::string& key,
+ const base::Value** result) const {
+ return prefs_.GetValue(key, result) ? READ_OK : READ_NO_VALUE;
+}
+
void DefaultPrefStore::SetDefaultValue(const std::string& key, Value* value) {
CHECK(GetValue(key, NULL) == READ_NO_VALUE);
- SetValue(key, value);
+ prefs_.SetValue(key, value);
}
void DefaultPrefStore::RemoveDefaultValue(const std::string& key) {
CHECK(GetValue(key, NULL) == READ_OK);
- RemoveValue(key);
+ prefs_.RemoveValue(key);
}
base::Value::Type DefaultPrefStore::GetType(const std::string& key) const {
@@ -23,4 +30,12 @@ base::Value::Type DefaultPrefStore::GetType(const std::string& key) const {
return GetValue(key, &value) == READ_OK ? value->GetType() : Value::TYPE_NULL;
}
+DefaultPrefStore::const_iterator DefaultPrefStore::begin() const {
+ return prefs_.begin();
+}
+
+DefaultPrefStore::const_iterator DefaultPrefStore::end() const {
+ return prefs_.end();
+}
+
DefaultPrefStore::~DefaultPrefStore() {}
diff --git a/base/prefs/default_pref_store.h b/base/prefs/default_pref_store.h
index 3226cc2..e6fdbfa 100644
--- a/base/prefs/default_pref_store.h
+++ b/base/prefs/default_pref_store.h
@@ -8,15 +8,21 @@
#include <string>
#include "base/prefs/base_prefs_export.h"
-#include "base/prefs/value_map_pref_store.h"
+#include "base/prefs/pref_store.h"
+#include "base/prefs/pref_value_map.h"
#include "base/values.h"
// This PrefStore keeps track of default preference values set when a
// preference is registered with the PrefService.
-class BASE_PREFS_EXPORT DefaultPrefStore : public ValueMapPrefStore {
+class BASE_PREFS_EXPORT DefaultPrefStore : public PrefStore {
public:
+ typedef PrefValueMap::const_iterator const_iterator;
+
DefaultPrefStore();
+ virtual ReadResult GetValue(const std::string& key,
+ const base::Value** result) const OVERRIDE;
+
// Stores a new |value| for |key|. Assumes ownership of |value|.
void SetDefaultValue(const std::string& key, Value* value);
@@ -27,10 +33,15 @@ class BASE_PREFS_EXPORT DefaultPrefStore : public ValueMapPrefStore {
// has not been registered.
base::Value::Type GetType(const std::string& key) const;
+ const_iterator begin() const;
+ const_iterator end() const;
+
protected:
virtual ~DefaultPrefStore();
private:
+ PrefValueMap prefs_;
+
DISALLOW_COPY_AND_ASSIGN(DefaultPrefStore);
};
diff --git a/base/prefs/value_map_pref_store.cc b/base/prefs/value_map_pref_store.cc
index dc33384..f1eb440 100644
--- a/base/prefs/value_map_pref_store.cc
+++ b/base/prefs/value_map_pref_store.cc
@@ -28,22 +28,6 @@ size_t ValueMapPrefStore::NumberOfObservers() const {
return observers_.size();
}
-ValueMapPrefStore::iterator ValueMapPrefStore::begin() {
- return prefs_.begin();
-}
-
-ValueMapPrefStore::iterator ValueMapPrefStore::end() {
- return prefs_.end();
-}
-
-ValueMapPrefStore::const_iterator ValueMapPrefStore::begin() const {
- return prefs_.begin();
-}
-
-ValueMapPrefStore::const_iterator ValueMapPrefStore::end() const {
- return prefs_.end();
-}
-
ValueMapPrefStore::~ValueMapPrefStore() {}
void ValueMapPrefStore::SetValue(const std::string& key, Value* value) {
diff --git a/base/prefs/value_map_pref_store.h b/base/prefs/value_map_pref_store.h
index b8a34ae..dc79939 100644
--- a/base/prefs/value_map_pref_store.h
+++ b/base/prefs/value_map_pref_store.h
@@ -18,9 +18,6 @@
// storing the preference values.
class BASE_PREFS_EXPORT ValueMapPrefStore : public PrefStore {
public:
- typedef std::map<std::string, base::Value*>::iterator iterator;
- typedef std::map<std::string, base::Value*>::const_iterator const_iterator;
-
ValueMapPrefStore();
// PrefStore overrides:
@@ -30,11 +27,6 @@ class BASE_PREFS_EXPORT ValueMapPrefStore : public PrefStore {
virtual void RemoveObserver(PrefStore::Observer* observer) OVERRIDE;
virtual size_t NumberOfObservers() const OVERRIDE;
- iterator begin();
- iterator end();
- const_iterator begin() const;
- const_iterator end() const;
-
protected:
virtual ~ValueMapPrefStore();