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

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

Issue 2685653002: Remove TabModel -replaceWebState: method. (Closed)
Patch Set: Fix indentation in the initializer. Created 3 years, 10 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
« no previous file with comments | « ios/chrome/browser/tabs/tab.h ('k') | ios/chrome/browser/tabs/tab_model_unittest.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/chrome/browser/tabs/tab.mm
diff --git a/ios/chrome/browser/tabs/tab.mm b/ios/chrome/browser/tabs/tab.mm
index cd84b0fce7d043e1daa43e47cafd2d575580e404..4b3926ec0e35d2d76082cb26c9c3919ee6690ed6 100644
--- a/ios/chrome/browser/tabs/tab.mm
+++ b/ios/chrome/browser/tabs/tab.mm
@@ -514,6 +514,14 @@ void TabInfoBarObserver::OnInfoBarReplaced(infobars::InfoBar* old_infobar,
- (instancetype)initWithWebState:(std::unique_ptr<web::WebState>)webState
model:(TabModel*)parentModel {
+ return [self initWithWebState:std::move(webState)
+ model:parentModel
+ attachTabHelpers:YES];
+}
+
+- (instancetype)initWithWebState:(std::unique_ptr<web::WebState>)webState
+ model:(TabModel*)parentModel
+ attachTabHelpers:(BOOL)attachTabHelpers {
DCHECK(webState);
self = [super init];
if (self) {
@@ -542,89 +550,94 @@ void TabInfoBarObserver::OnInfoBarReplaced(infobars::InfoBar* old_infobar,
delegate:self]);
[self initNativeAppNavigationController];
- // IOSChromeSessionTabHelper comes first because it sets up the tab ID, and
- // other helpers may rely on that.
- IOSChromeSessionTabHelper::CreateForWebState(self.webState);
-
- NetworkActivityIndicatorTabHelper::CreateForWebState(self.webState,
- self.tabId);
- IOSChromeSyncedTabDelegate::CreateForWebState(self.webState);
- InfoBarManagerImpl::CreateForWebState(self.webState);
- IOSSecurityStateTabHelper::CreateForWebState(self.webState);
- RepostFormTabHelper::CreateForWebState(self.webState);
- BlockedPopupTabHelper::CreateForWebState(self.webState);
-
- if (reading_list::switches::IsReadingListEnabled()) {
- ReadingListModel* model =
- ReadingListModelFactory::GetForBrowserState(browserState_);
- ReadingListWebStateObserver::FromWebState(self.webState, model);
- }
- tabInfoBarObserver_.reset(new TabInfoBarObserver(self));
- tabInfoBarObserver_->SetShouldObserveInfoBarManager(true);
-
- if (AccountConsistencyService* account_consistency_service =
- ios::AccountConsistencyServiceFactory::GetForBrowserState(
- browserState_)) {
- account_consistency_service->SetWebStateHandler(self.webState, self);
- }
- ChromeIOSTranslateClient::CreateForWebState(self.webState);
- if (experimental_flags::IsAutoReloadEnabled()) {
- autoReloadBridge_.reset([[AutoReloadBridge alloc] initWithTab:self]);
- }
- printObserver_.reset(new PrintObserver(self.webState));
-
- base::scoped_nsprotocol<id<PasswordsUiDelegate>> passwordsUiDelegate(
- [[PasswordsUiDelegateImpl alloc] init]);
- passwordController_.reset([[PasswordController alloc]
- initWithWebState:self.webState
- passwordsUiDelegate:passwordsUiDelegate]);
- password_manager::PasswordGenerationManager* passwordGenerationManager =
- [passwordController_ passwordGenerationManager];
- autofillController_.reset([[AutofillController alloc]
- initWithBrowserState:browserState_
- passwordGenerationManager:passwordGenerationManager
- webState:self.webState]);
- suggestionController_.reset([[FormSuggestionController alloc]
- initWithWebState:self.webState
- providers:[self suggestionProviders]]);
- inputAccessoryViewController_.reset(
- [[FormInputAccessoryViewController alloc]
+ if (attachTabHelpers) {
+ // IOSChromeSessionTabHelper comes first because it sets up the tab ID,
+ // and other helpers may rely on that.
+ IOSChromeSessionTabHelper::CreateForWebState(self.webState);
+
+ NetworkActivityIndicatorTabHelper::CreateForWebState(self.webState,
+ self.tabId);
+ IOSChromeSyncedTabDelegate::CreateForWebState(self.webState);
+ InfoBarManagerImpl::CreateForWebState(self.webState);
+ IOSSecurityStateTabHelper::CreateForWebState(self.webState);
+ RepostFormTabHelper::CreateForWebState(self.webState);
+ BlockedPopupTabHelper::CreateForWebState(self.webState);
+
+ if (reading_list::switches::IsReadingListEnabled()) {
+ ReadingListModel* model =
+ ReadingListModelFactory::GetForBrowserState(browserState_);
+ ReadingListWebStateObserver::FromWebState(self.webState, model);
+ }
+
+ tabInfoBarObserver_.reset(new TabInfoBarObserver(self));
+ tabInfoBarObserver_->SetShouldObserveInfoBarManager(true);
+
+ if (AccountConsistencyService* account_consistency_service =
+ ios::AccountConsistencyServiceFactory::GetForBrowserState(
+ browserState_)) {
+ account_consistency_service->SetWebStateHandler(self.webState, self);
+ }
+ ChromeIOSTranslateClient::CreateForWebState(self.webState);
+ if (experimental_flags::IsAutoReloadEnabled()) {
+ autoReloadBridge_.reset([[AutoReloadBridge alloc] initWithTab:self]);
+ }
+ printObserver_.reset(new PrintObserver(self.webState));
+
+ base::scoped_nsprotocol<id<PasswordsUiDelegate>> passwordsUiDelegate(
+ [[PasswordsUiDelegateImpl alloc] init]);
+ passwordController_.reset([[PasswordController alloc]
+ initWithWebState:self.webState
+ passwordsUiDelegate:passwordsUiDelegate]);
+ password_manager::PasswordGenerationManager* passwordGenerationManager =
+ [passwordController_ passwordGenerationManager];
+ autofillController_.reset([[AutofillController alloc]
+ initWithBrowserState:browserState_
+ passwordGenerationManager:passwordGenerationManager
+ webState:self.webState]);
+ suggestionController_.reset([[FormSuggestionController alloc]
+ initWithWebState:self.webState
+ providers:[self suggestionProviders]]);
+ inputAccessoryViewController_.reset(
+ [[FormInputAccessoryViewController alloc]
+ initWithWebState:self.webState
+ providers:[self accessoryViewProviders]]);
+
+ ios::ChromeBrowserState* original_browser_state =
+ ios::ChromeBrowserState::FromBrowserState(
+ self.webState->GetBrowserState())
+ ->GetOriginalChromeBrowserState();
+ favicon::WebFaviconDriver::CreateForWebState(
+ self.webState,
+ ios::FaviconServiceFactory::GetForBrowserState(
+ original_browser_state, ServiceAccessType::IMPLICIT_ACCESS),
+ ios::HistoryServiceFactory::GetForBrowserState(
+ original_browser_state, ServiceAccessType::IMPLICIT_ACCESS),
+ ios::BookmarkModelFactory::GetForBrowserState(
+ original_browser_state));
+ history::WebStateTopSitesObserver::CreateForWebState(
+ self.webState,
+ ios::TopSitesFactory::GetForBrowserState(original_browser_state)
+ .get());
+ [self setShouldObserveFaviconChanges:YES];
+
+ if (parentModel && parentModel.syncedWindowDelegate) {
+ IOSChromeSessionTabHelper::FromWebState(self.webState)
+ ->SetWindowID(parentModel.sessionID);
+ }
+
+ // Create the ReaderModeController immediately so it can register for
+ // WebState changes.
+ if (experimental_flags::IsReaderModeEnabled()) {
+ readerModeController_.reset([[ReaderModeController alloc]
initWithWebState:self.webState
- providers:[self accessoryViewProviders]]);
-
- ios::ChromeBrowserState* original_browser_state =
- ios::ChromeBrowserState::FromBrowserState(
- self.webState->GetBrowserState())
- ->GetOriginalChromeBrowserState();
- favicon::WebFaviconDriver::CreateForWebState(
- self.webState,
- ios::FaviconServiceFactory::GetForBrowserState(
- original_browser_state, ServiceAccessType::IMPLICIT_ACCESS),
- ios::HistoryServiceFactory::GetForBrowserState(
- original_browser_state, ServiceAccessType::IMPLICIT_ACCESS),
- ios::BookmarkModelFactory::GetForBrowserState(original_browser_state));
- history::WebStateTopSitesObserver::CreateForWebState(
- self.webState,
- ios::TopSitesFactory::GetForBrowserState(original_browser_state).get());
- [self setShouldObserveFaviconChanges:YES];
-
- if (parentModel && parentModel.syncedWindowDelegate) {
- IOSChromeSessionTabHelper::FromWebState(self.webState)
- ->SetWindowID(parentModel.sessionID);
- }
+ delegate:self]);
+ }
- // Create the ReaderModeController immediately so it can register for
- // WebState changes.
- if (experimental_flags::IsReaderModeEnabled()) {
- readerModeController_.reset([[ReaderModeController alloc]
- initWithWebState:self.webState
- delegate:self]);
+ // Allow the embedder to attach tab helpers.
+ ios::GetChromeBrowserProvider()->AttachTabHelpers(self.webState, self);
}
- // Allow the embedder to attach tab helpers.
- ios::GetChromeBrowserProvider()->AttachTabHelpers(self.webState, self);
-
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(applicationDidBecomeActive)
@@ -2229,27 +2242,6 @@ void TabInfoBarObserver::OnInfoBarReplaced(infobars::InfoBar* old_infobar,
@implementation Tab (TestingSupport)
-- (void)replaceWebState:(std::unique_ptr<web::WebStateImpl>)webState {
- // Stop observing the old InfoBarManager and FaviconDriver since they will
- // be deleted with the old web controller.
- [self setShouldObserveInfoBarManager:NO];
- [self setShouldObserveFaviconChanges:NO];
- [self.webController setDelegate:nil];
- // Set the new web state.
- webStateImpl_ = std::move(webState);
- [self.webController setDelegate:self];
- webStateObserver_.reset(
- new web::WebStateObserverBridge(webStateImpl_.get(), self));
- // SessionTabHelper comes first because it sets up the tab ID, and other
- // helpers may rely on that.
- IOSChromeSessionTabHelper::CreateForWebState(webStateImpl_.get());
- IOSChromeSyncedTabDelegate::CreateForWebState(webStateImpl_.get());
- // Start observing the new web controller's InfoBarManager and FaviconDriver.
- [self setShouldObserveInfoBarManager:YES];
- [self setShouldObserveFaviconChanges:YES];
- findInPageController_.reset();
-}
-
- (void)replaceExternalAppLauncher:(id)externalAppLauncher {
externalAppLauncher_.reset([externalAppLauncher retain]);
}
« no previous file with comments | « ios/chrome/browser/tabs/tab.h ('k') | ios/chrome/browser/tabs/tab_model_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698