Chromium Code Reviews| Index: ios/clean/chrome/browser/ui/tab_collection/tab_collection_mediator.mm |
| diff --git a/ios/clean/chrome/browser/ui/tab_collection/tab_collection_mediator.mm b/ios/clean/chrome/browser/ui/tab_collection/tab_collection_mediator.mm |
| index 58839e6bbda687110437202ee12a8eca962361f4..64e18de5c98f1064e0f8a18856d4f03a14c676f5 100644 |
| --- a/ios/clean/chrome/browser/ui/tab_collection/tab_collection_mediator.mm |
| +++ b/ios/clean/chrome/browser/ui/tab_collection/tab_collection_mediator.mm |
| @@ -11,15 +11,20 @@ |
| #import "ios/clean/chrome/browser/ui/tab_collection/tab_collection_consumer.h" |
| #import "ios/clean/chrome/browser/ui/tab_collection/tab_collection_item.h" |
| #include "ios/web/public/web_state/web_state.h" |
| +#import "ios/web/public/web_state/web_state_observer_bridge.h" |
| #if !defined(__has_feature) || !__has_feature(objc_arc) |
| #error "This file requires ARC support." |
| #endif |
| +@interface TabCollectionMediator ()<CRWWebStateObserver> |
|
sczs
2017/05/26 16:12:52
Could we also move the WebstateListObserverving to
edchin
2017/05/26 18:09:00
WSLO is needed by the subclasses so it is exposed.
sczs
2017/05/30 02:32:02
Acknowledged.
|
| +@end |
| + |
| @implementation TabCollectionMediator { |
| std::unique_ptr<WebStateListObserverBridge> _webStateListObserver; |
| std::unique_ptr<ScopedObserver<WebStateList, WebStateListObserverBridge>> |
| _scopedWebStateListObserver; |
| + std::unique_ptr<web::WebStateObserverBridge> _webStateObserver; |
| } |
| @synthesize webStateList = _webStateList; |
| @@ -44,6 +49,7 @@ |
| - (void)disconnect { |
| self.webStateList = nullptr; |
| + _webStateObserver.reset(); |
| } |
| #pragma mark - Properties |
| @@ -104,6 +110,17 @@ |
| userAction:(BOOL)userAction { |
| DCHECK(self.consumer); |
| [self.consumer selectItemAtIndex:atIndex]; |
| + _webStateObserver = |
| + base::MakeUnique<web::WebStateObserverBridge>(newWebState, self); |
| +} |
| + |
| +#pragma mark - CRWWebStateObserver |
| + |
| +- (void)webState:(web::WebState*)webState didLoadPageWithSuccess:(BOOL)success { |
|
rohitrao (ping after 24h)
2017/05/26 12:44:01
Please add a comment explaining why we listen for
edchin
2017/05/26 18:09:00
Done.
|
| + int index = self.webStateList->GetIndexOfWebState(webState); |
| + [self.consumer |
| + replaceItemAtIndex:index |
| + withItem:[self tabCollectionItemFromWebState:webState]]; |
| } |
| #pragma mark - Private |
| @@ -140,6 +157,9 @@ |
| [self.consumer populateItems:[self tabCollectionItemsFromWebStateList: |
| self.webStateList]]; |
| [self.consumer selectItemAtIndex:self.webStateList->active_index()]; |
| + web::WebState* webState = self.webStateList->GetActiveWebState(); |
| + _webStateObserver = |
| + base::MakeUnique<web::WebStateObserverBridge>(webState, self); |
| } |
| } |