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..66bfa754158eedb98b95c09419ce823ce10212c5 100644 |
--- a/chrome/browser/api/prefs/pref_member.cc |
+++ b/chrome/browser/api/prefs/pref_member.cc |
@@ -4,7 +4,8 @@ |
#include "chrome/browser/api/prefs/pref_member.h" |
-#include "base/bind.h" |
+#include "base/bind_helpers.h" |
+#include "base/callback.h" |
#include "base/location.h" |
#include "base/prefs/public/pref_service_base.h" |
#include "base/value_conversions.h" |
@@ -14,7 +15,7 @@ using base::MessageLoopProxy; |
namespace subtle { |
PrefMemberBase::PrefMemberBase() |
- : observer_(NULL), |
+ : observer_(base::Bind(&base::DoNothing)), |
prefs_(NULL), |
setting_value_(false) { |
} |
@@ -25,11 +26,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 +66,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 { |