Index: chrome/browser/api/prefs/pref_member.cc |
diff --git a/chrome/browser/api/prefs/pref_member.cc b/chrome/browser/api/prefs/pref_member.cc |
index e81b13a61081620b7495dbb94ac4f697fe0d344d..0c1d41bd35c6eea51a2edf5519451946a64c7e3b 100644 |
--- a/chrome/browser/api/prefs/pref_member.cc |
+++ b/chrome/browser/api/prefs/pref_member.cc |
@@ -4,7 +4,7 @@ |
#include "chrome/browser/api/prefs/pref_member.h" |
-#include "base/bind.h" |
+#include "base/callback.h" |
#include "base/location.h" |
#include "base/prefs/public/pref_service_base.h" |
#include "base/value_conversions.h" |
@@ -14,7 +14,7 @@ using base::MessageLoopProxy; |
namespace subtle { |
PrefMemberBase::PrefMemberBase() |
- : observer_(NULL), |
+ : observer_(base::Bind(&PrefMemberBase::DoNothing, base::Unretained(this))), |
prefs_(NULL), |
setting_value_(false) { |
} |
@@ -25,11 +25,16 @@ PrefMemberBase::~PrefMemberBase() { |
void PrefMemberBase::Init(const char* pref_name, |
PrefServiceBase* prefs, |
- PrefObserver* observer) { |
+ const base::Closure& observer) { |
+ observer_ = observer; |
+ Init(pref_name, prefs); |
+} |
+ |
+void PrefMemberBase::Init(const char* pref_name, |
+ PrefServiceBase* prefs) { |
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. |
@@ -60,8 +65,8 @@ void PrefMemberBase::OnPreferenceChanged(PrefServiceBase* service, |
const std::string& pref_name) { |
VerifyValuePrefName(); |
UpdateValueFromPref(); |
- if (!setting_value_ && observer_) |
- observer_->OnPreferenceChanged(service, pref_name); |
+ if (!setting_value_) |
+ observer_.Run(); |
} |
void PrefMemberBase::UpdateValueFromPref() const { |