Chromium Code Reviews| Index: ios/clean/chrome/browser/ui/web_contents/web_contents_mediator.mm |
| diff --git a/ios/clean/chrome/browser/ui/web_contents/web_contents_mediator.mm b/ios/clean/chrome/browser/ui/web_contents/web_contents_mediator.mm |
| index 447209e8403d8516ebfb566dd7d8412824536214..56cae8de9a2784121fe9e61838191e5ee4131864 100644 |
| --- a/ios/clean/chrome/browser/ui/web_contents/web_contents_mediator.mm |
| +++ b/ios/clean/chrome/browser/ui/web_contents/web_contents_mediator.mm |
| @@ -5,6 +5,7 @@ |
| #import "ios/clean/chrome/browser/ui/web_contents/web_contents_mediator.h" |
| #include "base/memory/ptr_util.h" |
| +#include "base/scoped_observer.h" |
| #include "ios/chrome/browser/chrome_url_constants.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" |
| @@ -23,6 +24,8 @@ |
| @implementation WebContentsMediator { |
| std::unique_ptr<WebStateListObserverBridge> _webStateListObserver; |
| + std::unique_ptr<ScopedObserver<WebStateList, WebStateListObserverBridge>> |
| + _scopedWebStateListObserver; |
| } |
| @synthesize webStateList = _webStateList; |
| @synthesize consumer = _consumer; |
| @@ -44,16 +47,17 @@ |
| #pragma mark - Properties |
| - (void)setWebStateList:(WebStateList*)webStateList { |
| - if (_webStateList) { |
| - _webStateList->RemoveObserver(_webStateListObserver.get()); |
| - _webStateListObserver.reset(); |
| - } |
| + _scopedWebStateListObserver.reset(); |
|
sdefresne
2017/04/20 10:02:07
ditto, use RemoveAll/Add to avoid creating destroy
lpromero
2017/04/20 16:25:13
Done.
|
| + _webStateListObserver.reset(); |
|
sdefresne
2017/04/20 10:02:07
Why don't we call "[self disableWebUsage:self.webS
lpromero
2017/04/20 16:25:13
No idea. I filed http://crbug.com/713757.
|
| _webStateList = webStateList; |
| if (!_webStateList) { |
| return; |
| } |
| _webStateListObserver = base::MakeUnique<WebStateListObserverBridge>(self); |
| - _webStateList->AddObserver(_webStateListObserver.get()); |
| + _scopedWebStateListObserver = base::MakeUnique< |
| + ScopedObserver<WebStateList, WebStateListObserverBridge>>( |
| + _webStateListObserver.get()); |
| + _scopedWebStateListObserver->Add(_webStateList); |
| if (_webStateList->GetActiveWebState()) { |
| [self updateConsumerWithWebState:_webStateList->GetActiveWebState()]; |
| } |