| Index: chrome/browser/prefs/pref_member.cc
|
| diff --git a/chrome/browser/prefs/pref_member.cc b/chrome/browser/prefs/pref_member.cc
|
| index 405aab63d850747d491fdfc6d5cc779a1373195c..2efeafc2c11523d7436b3c64e7e7a10bddd15fbb 100644
|
| --- a/chrome/browser/prefs/pref_member.cc
|
| +++ b/chrome/browser/prefs/pref_member.cc
|
| @@ -18,8 +18,7 @@ PrefMemberBase::PrefMemberBase()
|
| }
|
|
|
| PrefMemberBase::~PrefMemberBase() {
|
| - if (prefs_ && !pref_name_.empty())
|
| - prefs_->RemovePrefObserver(pref_name_.c_str(), this);
|
| + Destroy();
|
| }
|
|
|
|
|
| @@ -38,7 +37,7 @@ void PrefMemberBase::Init(const char* pref_name, PrefService* prefs,
|
| }
|
|
|
| void PrefMemberBase::Destroy() {
|
| - if (prefs_) {
|
| + if (prefs_ && !pref_name_.empty()) {
|
| prefs_->RemovePrefObserver(pref_name_.c_str(), this);
|
| prefs_ = NULL;
|
| }
|
| @@ -62,10 +61,6 @@ void PrefMemberBase::Observe(NotificationType type,
|
| observer_->Observe(type, source, details);
|
| }
|
|
|
| -void PrefMemberBase::VerifyValuePrefName() const {
|
| - DCHECK(!pref_name_.empty());
|
| -}
|
| -
|
| void PrefMemberBase::UpdateValueFromPref() const {
|
| VerifyValuePrefName();
|
| const PrefService::Preference* pref =
|
| @@ -76,6 +71,12 @@ void PrefMemberBase::UpdateValueFromPref() const {
|
| internal()->UpdateValue(pref->GetValue()->DeepCopy(), pref->IsManaged());
|
| }
|
|
|
| +void PrefMemberBase::VerifyPref() const {
|
| + VerifyValuePrefName();
|
| + if (!internal())
|
| + UpdateValueFromPref();
|
| +}
|
| +
|
| PrefMemberBase::Internal::Internal() : thread_id_(BrowserThread::UI) { }
|
| PrefMemberBase::Internal::~Internal() { }
|
|
|
|
|