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() { } |