Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(361)

Unified Diff: ios/chrome/browser/web_state_list/web_state_list_fast_enumeration_helper.mm

Issue 2820493002: Use a scoped WebStateListObserverBridge. (Closed)
Patch Set: Use ScopedObserver Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
}

Powered by Google App Engine
This is Rietveld 408576698