| Index: base/observer_list.h
|
| diff --git a/base/observer_list.h b/base/observer_list.h
|
| index ef45269ed6e60ea3b4a63342ca474318c6521906..f7b92679e9e37af4d3c6d6492da93aed9789cd4e 100644
|
| --- a/base/observer_list.h
|
| +++ b/base/observer_list.h
|
| @@ -79,7 +79,7 @@ class ObserverListBase
|
| // also the FOR_EACH_OBSERVER macro defined below.
|
| class Iterator {
|
| public:
|
| - Iterator(ObserverListBase<ObserverType>& list);
|
| + explicit Iterator(ObserverListBase<ObserverType>* list);
|
| ~Iterator();
|
| ObserverType* GetNext();
|
|
|
| @@ -126,12 +126,11 @@ class ObserverListBase
|
|
|
| template <class ObserverType>
|
| ObserverListBase<ObserverType>::Iterator::Iterator(
|
| - ObserverListBase<ObserverType>& list)
|
| - : list_(list.AsWeakPtr()),
|
| + ObserverListBase<ObserverType>* list)
|
| + : list_(list->AsWeakPtr()),
|
| index_(0),
|
| - max_index_(list.type_ == NOTIFY_ALL ?
|
| - std::numeric_limits<size_t>::max() :
|
| - list.observers_.size()) {
|
| + max_index_(list->type_ == NOTIFY_ALL ? std::numeric_limits<size_t>::max()
|
| + : list->observers_.size()) {
|
| ++list_->notify_depth_;
|
| }
|
|
|
| @@ -228,15 +227,15 @@ class ObserverList : public ObserverListBase<ObserverType> {
|
| }
|
| };
|
|
|
| -#define FOR_EACH_OBSERVER(ObserverType, observer_list, func) \
|
| - do { \
|
| - if ((observer_list).might_have_observers()) { \
|
| - ObserverListBase<ObserverType>::Iterator \
|
| - it_inside_observer_macro(observer_list); \
|
| - ObserverType* obs; \
|
| - while ((obs = it_inside_observer_macro.GetNext()) != NULL) \
|
| - obs->func; \
|
| - } \
|
| +#define FOR_EACH_OBSERVER(ObserverType, observer_list, func) \
|
| + do { \
|
| + if ((observer_list).might_have_observers()) { \
|
| + ObserverListBase<ObserverType>::Iterator it_inside_observer_macro( \
|
| + &observer_list); \
|
| + ObserverType* obs; \
|
| + while ((obs = it_inside_observer_macro.GetNext()) != NULL) \
|
| + obs->func; \
|
| + } \
|
| } while (0)
|
|
|
| #endif // BASE_OBSERVER_LIST_H__
|
|
|