diff options
author | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-26 00:22:02 +0000 |
---|---|---|
committer | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-26 00:22:02 +0000 |
commit | 37858e5c2f58f4b46117c65df2ab3da8a7b2e6e2 (patch) | |
tree | f3acb53adbd2d0ffe5e113d6c057fdee9bcc6dcd /chrome/browser/prefs/pref_member.cc | |
parent | feecbf07dbc4b4c94dceb5e0043889126d213f6e (diff) | |
download | chromium_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.cc | 132 |
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); +} |