Chromium Code Reviews| Index: chrome/browser/api/prefs/pref_member.h |
| diff --git a/chrome/browser/api/prefs/pref_member.h b/chrome/browser/api/prefs/pref_member.h |
| index 78436936149008c0f37080326aecc12312c8556c..721d3c7d1a93e689645149fc681fd783c871bf0f 100644 |
| --- a/chrome/browser/api/prefs/pref_member.h |
| +++ b/chrome/browser/api/prefs/pref_member.h |
| @@ -28,6 +28,8 @@ |
| #include <vector> |
| #include "base/basictypes.h" |
| +#include "base/bind.h" |
| +#include "base/callback_forward.h" |
| #include "base/file_path.h" |
| #include "base/logging.h" |
| #include "base/memory/ref_counted.h" |
| @@ -91,7 +93,8 @@ class PrefMemberBase : public PrefObserver { |
| // See PrefMember<> for description. |
| void Init(const char* pref_name, PrefServiceBase* prefs, |
| - PrefObserver* observer); |
| + const base::Closure& observer); |
| + void Init(const char* pref_name, PrefServiceBase* prefs); |
| virtual void CreateInternal() const = 0; |
| @@ -124,9 +127,12 @@ class PrefMemberBase : public PrefObserver { |
| virtual Internal* internal() const = 0; |
| private: |
| + // |observer_| is bound to this unless an external observer is provided. |
| + void DoNothing() {} |
|
Mattias Nissler (ping if slow)
2012/11/07 16:02:24
base/bind_helpers.h has a DoNothing that you can u
Jói
2012/11/08 11:03:14
Thanks, switched.
|
| + |
| // Ordered the members to compact the class instance. |
| std::string pref_name_; |
| - PrefObserver* observer_; |
| + base::Closure observer_; |
| PrefServiceBase* prefs_; |
| protected: |
| @@ -148,14 +154,30 @@ class PrefMember : public subtle::PrefMemberBase { |
| PrefMember() {} |
| virtual ~PrefMember() {} |
| - // Do the actual initialization of the class. |observer| may be null if you |
| - // don't want any notifications of changes. |
| - // This method should only be called on the UI thread. |
| + // Do the actual initialization of the class. Use the two-parameter |
| + // version if you don't want any notifications of changes. This |
| + // method should only be called on the UI thread. |
| void Init(const char* pref_name, PrefServiceBase* prefs, |
| - PrefObserver* observer) { |
| + const base::Closure& observer) { |
| subtle::PrefMemberBase::Init(pref_name, prefs, observer); |
| } |
| + void Init(const char* pref_name, PrefServiceBase* prefs) { |
| + subtle::PrefMemberBase::Init(pref_name, prefs); |
| + } |
| + |
| + // Deprecated version of Init. |
| + void Init(const char* pref_name, PrefServiceBase* prefs, |
| + PrefObserver* observer) { |
| + if (observer) { |
| + Init(pref_name, prefs, base::Bind(&PrefObserver::OnPreferenceChanged, |
| + base::Unretained(observer), |
| + prefs, pref_name)); |
| + } else { |
| + Init(pref_name, prefs); |
| + } |
| + } |
| + |
| // Unsubscribes the PrefMember from the PrefService. After calling this |
| // function, the PrefMember may not be used any more on the UI thread. |
| // Assuming |MoveToThread| was previously called, |GetValue|, |IsManaged|, |