Commit 4d7982ba authored by Mohammad Refaat's avatar Mohammad Refaat Committed by Commit Bot

Remove setupTabModel from BrowserViewWrangler.

Replace it with 2 methods:
1- restoreSessionToBrowser
2- addObserversToWebStateList

Bug: 1049335
Change-Id: I7099e8fdfdc023fdd71bde00cd1384213690dd1c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2040008Reviewed-by: default avatarMark Cogan <marq@chromium.org>
Commit-Queue: Mohammad Refaat <mrefaat@chromium.org>
Cr-Commit-Position: refs/heads/master@{#738989}
parent 912f342c
...@@ -97,6 +97,7 @@ source_set("main") { ...@@ -97,6 +97,7 @@ source_set("main") {
"//ios/chrome/browser/main", "//ios/chrome/browser/main",
"//ios/chrome/browser/reading_list", "//ios/chrome/browser/reading_list",
"//ios/chrome/browser/sessions", "//ios/chrome/browser/sessions",
"//ios/chrome/browser/sessions:restoration_agent",
"//ios/chrome/browser/sessions:serialisation", "//ios/chrome/browser/sessions:serialisation",
"//ios/chrome/browser/sessions:session_service", "//ios/chrome/browser/sessions:session_service",
"//ios/chrome/browser/store_kit", "//ios/chrome/browser/store_kit",
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#import "ios/chrome/browser/main/browser_list.h" #import "ios/chrome/browser/main/browser_list.h"
#import "ios/chrome/browser/main/browser_list_factory.h" #import "ios/chrome/browser/main/browser_list_factory.h"
#import "ios/chrome/browser/sessions/session_ios.h" #import "ios/chrome/browser/sessions/session_ios.h"
#import "ios/chrome/browser/sessions/session_restoration_browser_agent.h"
#import "ios/chrome/browser/sessions/session_service_ios.h" #import "ios/chrome/browser/sessions/session_service_ios.h"
#import "ios/chrome/browser/sessions/session_window_ios.h" #import "ios/chrome/browser/sessions/session_window_ios.h"
#import "ios/chrome/browser/tabs/tab_model.h" #import "ios/chrome/browser/tabs/tab_model.h"
...@@ -127,12 +128,12 @@ ...@@ -127,12 +128,12 @@
@property(nonatomic, strong, readwrite) @property(nonatomic, strong, readwrite)
DeviceSharingManager* deviceSharingManager; DeviceSharingManager* deviceSharingManager;
// Sets up the given |tabModel| for use. If |restorePersistedState| is YES, // Restore session to the given |browser|, any existing tabs that have been
// then any existing tabs that have been saved for |browserState| will be // saved for the |browser| will be loaded.
// loaded; otherwise, the tab model will be left empty. - (void)restoreSessionToBrowser:(Browser*)browser;
- (void)setUpTabModel:(TabModel*)tabModel
withBrowserState:(ChromeBrowserState*)browserState // Add the common observers to the browser's |webStateList|.
restorePersistedState:(BOOL)restorePersistedState; - (void)addObserversToWebStateList:(WebStateList*)webStateList;
// Setters for the main and otr Browsers. // Setters for the main and otr Browsers.
- (void)setMainBrowser:(std::unique_ptr<Browser>)browser; - (void)setMainBrowser:(std::unique_ptr<Browser>)browser;
...@@ -182,9 +183,8 @@ ...@@ -182,9 +183,8 @@
BrowserList* browserList = BrowserList* browserList =
BrowserListFactory::GetForBrowserState(_mainBrowser->GetBrowserState()); BrowserListFactory::GetForBrowserState(_mainBrowser->GetBrowserState());
browserList->AddBrowser(_mainBrowser.get()); browserList->AddBrowser(_mainBrowser.get());
[self setUpTabModel:_mainBrowser->GetTabModel() [self restoreSessionToBrowser:_mainBrowser.get()];
withBrowserState:_browserState [self addObserversToWebStateList:_mainBrowser->GetWebStateList()];
restorePersistedState:YES];
// Follow loaded URLs in the main tab model to send those in case of // Follow loaded URLs in the main tab model to send those in case of
// crashes. // crashes.
...@@ -445,50 +445,45 @@ ...@@ -445,50 +445,45 @@
BrowserList* browserList = BrowserList* browserList =
BrowserListFactory::GetForBrowserState(browser->GetBrowserState()); BrowserListFactory::GetForBrowserState(browser->GetBrowserState());
browserList->AddIncognitoBrowser(browser.get()); browserList->AddIncognitoBrowser(browser.get());
if (restorePersistedState)
[self restoreSessionToBrowser:browser.get()];
[self addObserversToWebStateList:browser->GetWebStateList()];
[self setUpTabModel:browser->GetTabModel()
withBrowserState:otrBrowserState
restorePersistedState:restorePersistedState];
return browser; return browser;
} }
- (void)setUpTabModel:(TabModel*)tabModel - (BrowserCoordinator*)coordinatorForBrowser:(Browser*)browser {
withBrowserState:(ChromeBrowserState*)browserState BrowserCoordinator* coordinator =
restorePersistedState:(BOOL)restorePersistedState { [[BrowserCoordinator alloc] initWithBaseViewController:nil
DCHECK_EQ(0U, tabModel.count); browser:browser];
coordinator.applicationCommandHandler = _applicationCommandEndpoint;
coordinator.browsingDataCommandHandler = _browsingDataCommandEndpoint;
coordinator.appURLLoadingService = _appURLLoadingService;
return coordinator;
}
- (void)restoreSessionToBrowser:(Browser*)browser {
SessionWindowIOS* sessionWindow = nil; SessionWindowIOS* sessionWindow = nil;
if (restorePersistedState) { NSString* statePath = base::SysUTF8ToNSString(
// Load existing saved tab model state. browser->GetBrowserState()->GetStatePath().AsUTF8Unsafe());
NSString* statePath =
base::SysUTF8ToNSString(browserState->GetStatePath().AsUTF8Unsafe());
SessionIOS* session = SessionIOS* session =
[[SessionServiceIOS sharedService] loadSessionFromDirectory:statePath]; [[SessionServiceIOS sharedService] loadSessionFromDirectory:statePath];
if (session) { if (session) {
DCHECK_EQ(session.sessionWindows.count, 1u); DCHECK_EQ(session.sessionWindows.count, 1u);
sessionWindow = session.sessionWindows[0]; sessionWindow = session.sessionWindows[0];
} }
SessionRestorationBrowserAgent::FromBrowser(browser)->RestoreSessionWindow(
[tabModel restoreSessionWindow:sessionWindow forInitialRestore:YES]; sessionWindow);
}
// Add observers.
_activeWebStateObservationForwarders[tabModel.webStateList] =
std::make_unique<ActiveWebStateObservationForwarder>(
tabModel.webStateList, _activeWebStateObserver.get());
tabModel.webStateList->AddObserver(_webStateListObserver.get());
tabModel.webStateList->AddObserver(_webStateListForwardingObserver.get());
breakpad::MonitorTabStateForWebStateList(tabModel.webStateList);
} }
- (BrowserCoordinator*)coordinatorForBrowser:(Browser*)browser { - (void)addObserversToWebStateList:(WebStateList*)webStateList {
BrowserCoordinator* coordinator = _activeWebStateObservationForwarders[webStateList] =
[[BrowserCoordinator alloc] initWithBaseViewController:nil std::make_unique<ActiveWebStateObservationForwarder>(
browser:browser]; webStateList, _activeWebStateObserver.get());
coordinator.applicationCommandHandler = _applicationCommandEndpoint; webStateList->AddObserver(_webStateListObserver.get());
coordinator.browsingDataCommandHandler = _browsingDataCommandEndpoint; webStateList->AddObserver(_webStateListForwardingObserver.get());
coordinator.appURLLoadingService = _appURLLoadingService; breakpad::MonitorTabStateForWebStateList(webStateList);
return coordinator;
} }
@end @end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment