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

Unified Diff: ios/chrome/browser/tabs/tab_model_web_state_list_delegate.mm

Issue 2775623002: [ios] WebStateList owns all WebState it manages. (Closed)
Patch Set: Fix ios_chrome_unittests. Created 3 years, 9 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/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) {
rohitrao (ping after 24h) 2017/03/26 23:21:22 FYI I think I'm going to need to call AttachTabHel
sdefresne 2017/03/28 15:15:05 Ack.
+ // 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];
+}

Powered by Google App Engine
This is Rietveld 408576698