| Index: ios/chrome/browser/tabs/tab_model_web_state_list_delegate.mm
|
| diff --git a/ios/chrome/browser/tabs/tab_model_web_state_list_delegate.mm b/ios/chrome/browser/tabs/tab_model_web_state_list_delegate.mm
|
| index 0c5a4fb5cc0305d262de3fe4d29331e24f881e15..253cf3f3c4f826e0b4a27a48dd9260986e7379e7 100644
|
| --- a/ios/chrome/browser/tabs/tab_model_web_state_list_delegate.mm
|
| +++ b/ios/chrome/browser/tabs/tab_model_web_state_list_delegate.mm
|
| @@ -5,6 +5,9 @@
|
| #import "ios/chrome/browser/tabs/tab_model_web_state_list_delegate.h"
|
|
|
| #include "base/logging.h"
|
| +#import "ios/chrome/browser/tabs/legacy_tab_helper.h"
|
| +#import "ios/chrome/browser/tabs/tab.h"
|
| +#import "ios/chrome/browser/tabs/tab_helper_util.h"
|
|
|
| #if !defined(__has_feature) || !__has_feature(objc_arc)
|
| #error "This file requires ARC support."
|
| @@ -17,6 +20,19 @@ TabModelWebStateListDelegate::TabModelWebStateListDelegate(TabModel* tab_model)
|
|
|
| TabModelWebStateListDelegate::~TabModelWebStateListDelegate() = default;
|
|
|
| -void TabModelWebStateListDelegate::WillAddWebState(web::WebState* web_state) {}
|
| +void TabModelWebStateListDelegate::WillAddWebState(web::WebState* web_state) {
|
| + // Some Tab objects are created outside of TabModel, avoid recreating the
|
| + // tab helpers for those Tab objects.
|
| + if (!LegacyTabHelper::FromWebState(web_state))
|
| + AttachTabHelpers(web_state);
|
|
|
| -void TabModelWebStateListDelegate::WebStateDetached(web::WebState* web_state) {}
|
| + DCHECK(LegacyTabHelper::FromWebState(web_state));
|
| + Tab* tab = LegacyTabHelper::GetTabForWebState(web_state);
|
| + [tab setParentTabModel:tab_model_.get()];
|
| +}
|
| +
|
| +void TabModelWebStateListDelegate::WebStateDetached(web::WebState* web_state) {
|
| + DCHECK(LegacyTabHelper::FromWebState(web_state));
|
| + Tab* tab = LegacyTabHelper::GetTabForWebState(web_state);
|
| + [tab setParentTabModel:nil];
|
| +}
|
|
|