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; |
} |