Chromium Code Reviews| Index: ios/chrome/browser/web_state_list/web_state_list_fast_enumeration_helper.mm |
| diff --git a/ios/chrome/browser/web_state_list/web_state_list_fast_enumeration_helper.mm b/ios/chrome/browser/web_state_list/web_state_list_fast_enumeration_helper.mm |
| index b2e727b3b5f377ef91c2f34801e85eaf1d1d90c7..1c07849dc29bbf90b2e312e9a829eae677bb830f 100644 |
| --- a/ios/chrome/browser/web_state_list/web_state_list_fast_enumeration_helper.mm |
| +++ b/ios/chrome/browser/web_state_list/web_state_list_fast_enumeration_helper.mm |
| @@ -11,6 +11,7 @@ |
| #include "base/logging.h" |
| #import "base/mac/foundation_util.h" |
| #include "base/memory/ptr_util.h" |
| +#include "base/scoped_observer.h" |
| #import "ios/chrome/browser/web_state_list/web_state_list.h" |
| #import "ios/chrome/browser/web_state_list/web_state_list_observer_bridge.h" |
| @@ -36,7 +37,9 @@ |
| id<WebStateProxyFactory> _proxyFactory; |
| // WebStateListObserverBridge forwarding the events of WebStateList to self. |
| - std::unique_ptr<WebStateListObserverBridge> _observerBridge; |
| + std::unique_ptr<WebStateListObserverBridge> _webStateListObserver; |
| + std::unique_ptr<ScopedObserver<WebStateList, WebStateListObserverBridge>> |
| + _scopedWebStateListObserver; |
| // Counter incremented each time the WebStateList is mutated. |
| unsigned long _mutationCounter; |
| @@ -49,14 +52,16 @@ |
| if ((self = [super init])) { |
| _webStateList = webStateList; |
| _proxyFactory = proxyFactory; |
| - _observerBridge = base::MakeUnique<WebStateListObserverBridge>(self); |
| - _webStateList->AddObserver(_observerBridge.get()); |
| + _webStateListObserver = base::MakeUnique<WebStateListObserverBridge>(self); |
| + _scopedWebStateListObserver = base::MakeUnique< |
| + ScopedObserver<WebStateList, WebStateListObserverBridge>>( |
| + _webStateListObserver.get()); |
| + _scopedWebStateListObserver->Add(_webStateList); |
| } |
| return self; |
| } |
| - (void)shutdown { |
| - _webStateList->RemoveObserver(_observerBridge.get()); |
|
sdefresne
2017/04/20 10:02:07
This is incorrect, the registration needs to happe
lpromero
2017/04/20 16:25:13
Done.
|
| _webStateList = nullptr; |
| ++_mutationCounter; |
| } |