| 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_);
 | 
| -}
 | 
| 
 |