| 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 {
|
|
|