| Index: chrome/browser/prefs/pref_member.cc
|
| diff --git a/chrome/browser/prefs/pref_member.cc b/chrome/browser/prefs/pref_member.cc
|
| deleted file mode 100644
|
| index 902224e91ff4067fd9fdb4e83591d6635bb2ea98..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/prefs/pref_member.cc
|
| +++ /dev/null
|
| @@ -1,172 +0,0 @@
|
| -// Copyright (c) 2012 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/bind.h"
|
| -#include "base/logging.h"
|
| -#include "base/value_conversions.h"
|
| -#include "chrome/browser/prefs/pref_service.h"
|
| -#include "chrome/common/chrome_notification_types.h"
|
| -
|
| -using content::BrowserThread;
|
| -
|
| -namespace subtle {
|
| -
|
| -PrefMemberBase::PrefMemberBase()
|
| - : observer_(NULL),
|
| - prefs_(NULL),
|
| - setting_value_(false) {
|
| -}
|
| -
|
| -PrefMemberBase::~PrefMemberBase() {
|
| - Destroy();
|
| -}
|
| -
|
| -
|
| -void PrefMemberBase::Init(const char* pref_name,
|
| - PrefService* prefs,
|
| - content::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;
|
| - // Check that the preference is registered.
|
| - DCHECK(prefs_->FindPreference(pref_name_.c_str()))
|
| - << pref_name << " not registered.";
|
| -
|
| - // Add ourselves as a pref observer so we can keep our local value in sync.
|
| - prefs_->AddPrefObserver(pref_name, this);
|
| -}
|
| -
|
| -void PrefMemberBase::Destroy() {
|
| - if (prefs_ && !pref_name_.empty()) {
|
| - prefs_->RemovePrefObserver(pref_name_.c_str(), this);
|
| - prefs_ = NULL;
|
| - }
|
| -}
|
| -
|
| -void PrefMemberBase::MoveToThread(BrowserThread::ID thread_id) {
|
| - VerifyValuePrefName();
|
| - // Load the value from preferences if it hasn't been loaded so far.
|
| - if (!internal())
|
| - UpdateValueFromPref();
|
| - internal()->MoveToThread(thread_id);
|
| -}
|
| -
|
| -void PrefMemberBase::Observe(int type,
|
| - const content::NotificationSource& source,
|
| - const content::NotificationDetails& details) {
|
| - VerifyValuePrefName();
|
| - DCHECK(chrome::NOTIFICATION_PREF_CHANGED == type);
|
| - UpdateValueFromPref();
|
| - if (!setting_value_ && observer_)
|
| - observer_->Observe(type, source, details);
|
| -}
|
| -
|
| -void PrefMemberBase::UpdateValueFromPref() const {
|
| - VerifyValuePrefName();
|
| - const PrefService::Preference* pref =
|
| - prefs_->FindPreference(pref_name_.c_str());
|
| - DCHECK(pref);
|
| - if (!internal())
|
| - CreateInternal();
|
| - internal()->UpdateValue(pref->GetValue()->DeepCopy(), pref->IsManaged());
|
| -}
|
| -
|
| -void PrefMemberBase::VerifyPref() const {
|
| - VerifyValuePrefName();
|
| - if (!internal())
|
| - UpdateValueFromPref();
|
| -}
|
| -
|
| -PrefMemberBase::Internal::Internal()
|
| - : thread_id_(BrowserThread::UI),
|
| - is_managed_(false) {
|
| -}
|
| -PrefMemberBase::Internal::~Internal() { }
|
| -
|
| -bool PrefMemberBase::Internal::IsOnCorrectThread() const {
|
| - // In unit tests, there may not be a UI thread.
|
| - return (BrowserThread::CurrentlyOn(thread_id_) ||
|
| - (thread_id_ == BrowserThread::UI &&
|
| - !BrowserThread::IsMessageLoopValid(BrowserThread::UI)));
|
| -}
|
| -
|
| -void PrefMemberBase::Internal::UpdateValue(Value* v, bool is_managed) const {
|
| - scoped_ptr<Value> value(v);
|
| - if (IsOnCorrectThread()) {
|
| - bool rv = UpdateValueInternal(*value);
|
| - DCHECK(rv);
|
| - is_managed_ = is_managed;
|
| - } else {
|
| - bool rv = BrowserThread::PostTask(
|
| - thread_id_, FROM_HERE,
|
| - base::Bind(&PrefMemberBase::Internal::UpdateValue, this,
|
| - value.release(), is_managed));
|
| - DCHECK(rv);
|
| - }
|
| -}
|
| -
|
| -void PrefMemberBase::Internal::MoveToThread(BrowserThread::ID thread_id) {
|
| - CheckOnCorrectThread();
|
| - thread_id_ = thread_id;
|
| -}
|
| -
|
| -} // namespace subtle
|
| -
|
| -template <>
|
| -void PrefMember<bool>::UpdatePref(const bool& value) {
|
| - prefs()->SetBoolean(pref_name().c_str(), value);
|
| -}
|
| -
|
| -template <>
|
| -bool PrefMember<bool>::Internal::UpdateValueInternal(const Value& value) const {
|
| - return value.GetAsBoolean(&value_);
|
| -}
|
| -
|
| -template <>
|
| -void PrefMember<int>::UpdatePref(const int& value) {
|
| - prefs()->SetInteger(pref_name().c_str(), value);
|
| -}
|
| -
|
| -template <>
|
| -bool PrefMember<int>::Internal::UpdateValueInternal(const Value& value) const {
|
| - return value.GetAsInteger(&value_);
|
| -}
|
| -
|
| -template <>
|
| -void PrefMember<double>::UpdatePref(const double& value) {
|
| - prefs()->SetDouble(pref_name().c_str(), value);
|
| -}
|
| -
|
| -template <>
|
| -bool PrefMember<double>::Internal::UpdateValueInternal(const Value& value)
|
| - const {
|
| - return value.GetAsDouble(&value_);
|
| -}
|
| -
|
| -template <>
|
| -void PrefMember<std::string>::UpdatePref(const std::string& value) {
|
| - prefs()->SetString(pref_name().c_str(), value);
|
| -}
|
| -
|
| -template <>
|
| -bool PrefMember<std::string>::Internal::UpdateValueInternal(const Value& value)
|
| - const {
|
| - return value.GetAsString(&value_);
|
| -}
|
| -
|
| -template <>
|
| -void PrefMember<FilePath>::UpdatePref(const FilePath& value) {
|
| - prefs()->SetFilePath(pref_name().c_str(), value);
|
| -}
|
| -
|
| -template <>
|
| -bool PrefMember<FilePath>::Internal::UpdateValueInternal(const Value& value)
|
| - const {
|
| - return base::GetValueAsFilePath(value, &value_);
|
| -}
|
|
|