summaryrefslogtreecommitdiffstats
path: root/chrome/browser/prefs/pref_member.cc
diff options
context:
space:
mode:
authorevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-26 00:22:02 +0000
committerevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-26 00:22:02 +0000
commit37858e5c2f58f4b46117c65df2ab3da8a7b2e6e2 (patch)
treef3acb53adbd2d0ffe5e113d6c057fdee9bcc6dcd /chrome/browser/prefs/pref_member.cc
parentfeecbf07dbc4b4c94dceb5e0043889126d213f6e (diff)
downloadchromium_src-37858e5c2f58f4b46117c65df2ab3da8a7b2e6e2.zip
chromium_src-37858e5c2f58f4b46117c65df2ab3da8a7b2e6e2.tar.gz
chromium_src-37858e5c2f58f4b46117c65df2ab3da8a7b2e6e2.tar.bz2
Move prefs-related files under chrome/browser/ into a prefs/ subdir.
Rename includes, resort header include order in places where the rename changed the order. BUG=50548 TEST=compiles Review URL: http://codereview.chromium.org/3203008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57434 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/prefs/pref_member.cc')
-rw-r--r--chrome/browser/prefs/pref_member.cc132
1 files changed, 132 insertions, 0 deletions
diff --git a/chrome/browser/prefs/pref_member.cc b/chrome/browser/prefs/pref_member.cc
new file mode 100644
index 0000000..f326419
--- /dev/null
+++ b/chrome/browser/prefs/pref_member.cc
@@ -0,0 +1,132 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/prefs/pref_member.h"
+
+#include "base/logging.h"
+#include "chrome/browser/prefs/pref_service.h"
+#include "chrome/common/notification_type.h"
+
+namespace subtle {
+
+PrefMemberBase::PrefMemberBase()
+ : observer_(NULL),
+ prefs_(NULL),
+ is_synced_(false),
+ setting_value_(false) {
+}
+
+PrefMemberBase::~PrefMemberBase() {
+ if (!pref_name_.empty())
+ prefs_->RemovePrefObserver(pref_name_.c_str(), this);
+}
+
+
+void PrefMemberBase::Init(const char* pref_name, PrefService* prefs,
+ NotificationObserver* observer) {
+ DCHECK(pref_name);
+ DCHECK(prefs);
+ DCHECK(pref_name_.empty()); // Check that Init is only called once.
+ observer_ = observer;
+ prefs_ = prefs;
+ pref_name_ = pref_name;
+ DCHECK(!pref_name_.empty());
+
+ // Add ourself as a pref observer so we can keep our local value in sync.
+ prefs_->AddPrefObserver(pref_name, this);
+}
+
+bool PrefMemberBase::IsManaged() {
+ DCHECK(!pref_name_.empty());
+ const PrefService::Preference* pref =
+ prefs_->FindPreference(pref_name_.c_str());
+ return pref && pref->IsManaged();
+}
+
+void PrefMemberBase::Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details) {
+ DCHECK(!pref_name_.empty());
+ DCHECK(NotificationType::PREF_CHANGED == type);
+ UpdateValueFromPref();
+ is_synced_ = true;
+ if (!setting_value_ && observer_)
+ observer_->Observe(type, source, details);
+}
+
+void PrefMemberBase::VerifyValuePrefName() {
+ DCHECK(!pref_name_.empty());
+}
+
+} // namespace subtle
+
+BooleanPrefMember::BooleanPrefMember() : PrefMember<bool>() {
+}
+
+BooleanPrefMember::~BooleanPrefMember() {
+}
+
+void BooleanPrefMember::UpdateValueFromPref() {
+ value_ = prefs()->GetBoolean(pref_name().c_str());
+}
+
+void BooleanPrefMember::UpdatePref(const bool& value) {
+ prefs()->SetBoolean(pref_name().c_str(), value);
+}
+
+IntegerPrefMember::IntegerPrefMember() : PrefMember<int>() {
+}
+
+IntegerPrefMember::~IntegerPrefMember() {
+}
+
+void IntegerPrefMember::UpdateValueFromPref() {
+ value_ = prefs()->GetInteger(pref_name().c_str());
+}
+
+void IntegerPrefMember::UpdatePref(const int& value) {
+ prefs()->SetInteger(pref_name().c_str(), value);
+}
+
+RealPrefMember::RealPrefMember() : PrefMember<double>() {
+}
+
+RealPrefMember::~RealPrefMember() {
+}
+
+void RealPrefMember::UpdateValueFromPref() {
+ value_ = prefs()->GetReal(pref_name().c_str());
+}
+
+void RealPrefMember::UpdatePref(const double& value) {
+ prefs()->SetReal(pref_name().c_str(), value);
+}
+
+StringPrefMember::StringPrefMember() : PrefMember<std::string>() {
+}
+
+StringPrefMember::~StringPrefMember() {
+}
+
+void StringPrefMember::UpdateValueFromPref() {
+ value_ = prefs()->GetString(pref_name().c_str());
+}
+
+void StringPrefMember::UpdatePref(const std::string& value) {
+ prefs()->SetString(pref_name().c_str(), value);
+}
+
+FilePathPrefMember::FilePathPrefMember() : PrefMember<FilePath>() {
+}
+
+FilePathPrefMember::~FilePathPrefMember() {
+}
+
+void FilePathPrefMember::UpdateValueFromPref() {
+ value_ = prefs()->GetFilePath(pref_name().c_str());
+}
+
+void FilePathPrefMember::UpdatePref(const FilePath& value) {
+ prefs()->SetFilePath(pref_name().c_str(), value);
+}