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") {
"//ios/chrome/browser/main",
"//ios/chrome/browser/reading_list",
"//ios/chrome/browser/sessions",
"//ios/chrome/browser/sessions:restoration_agent",
"//ios/chrome/browser/sessions:serialisation",
"//ios/chrome/browser/sessions:session_service",
"//ios/chrome/browser/store_kit",
......
......@@ -15,6 +15,7 @@
#import "ios/chrome/browser/main/browser_list.h"
#import "ios/chrome/browser/main/browser_list_factory.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_window_ios.h"
#import "ios/chrome/browser/tabs/tab_model.h"
......@@ -127,12 +128,12 @@
@property(nonatomic, strong, readwrite)
DeviceSharingManager* deviceSharingManager;
// Sets up the given |tabModel| for use. If |restorePersistedState| is YES,
// then any existing tabs that have been saved for |browserState| will be
// loaded; otherwise, the tab model will be left empty.
- (void)setUpTabModel:(TabModel*)tabModel
withBrowserState:(ChromeBrowserState*)browserState
restorePersistedState:(BOOL)restorePersistedState;
// Restore session to the given |browser|, any existing tabs that have been
// saved for the |browser| will be loaded.
- (void)restoreSessionToBrowser:(Browser*)browser;
// Add the common observers to the browser's |webStateList|.
- (void)addObserversToWebStateList:(WebStateList*)webStateList;
// Setters for the main and otr Browsers.
- (void)setMainBrowser:(std::unique_ptr<Browser>)browser;
......@@ -182,9 +183,8 @@
BrowserList* browserList =
BrowserListFactory::GetForBrowserState(_mainBrowser->GetBrowserState());
browserList->AddBrowser(_mainBrowser.get());
[self setUpTabModel:_mainBrowser->GetTabModel()
withBrowserState:_browserState
restorePersistedState:YES];
[self restoreSessionToBrowser:_mainBrowser.get()];
[self addObserversToWebStateList:_mainBrowser->GetWebStateList()];
// Follow loaded URLs in the main tab model to send those in case of
// crashes.
......@@ -445,40 +445,12 @@
BrowserList* browserList =
BrowserListFactory::GetForBrowserState(browser->GetBrowserState());
browserList->AddIncognitoBrowser(browser.get());
if (restorePersistedState)
[self restoreSessionToBrowser:browser.get()];
[self setUpTabModel:browser->GetTabModel()
withBrowserState:otrBrowserState
restorePersistedState:restorePersistedState];
return browser;
}
- (void)setUpTabModel:(TabModel*)tabModel
withBrowserState:(ChromeBrowserState*)browserState
restorePersistedState:(BOOL)restorePersistedState {
DCHECK_EQ(0U, tabModel.count);
SessionWindowIOS* sessionWindow = nil;
if (restorePersistedState) {
// Load existing saved tab model state.
NSString* statePath =
base::SysUTF8ToNSString(browserState->GetStatePath().AsUTF8Unsafe());
SessionIOS* session =
[[SessionServiceIOS sharedService] loadSessionFromDirectory:statePath];
if (session) {
DCHECK_EQ(session.sessionWindows.count, 1u);
sessionWindow = session.sessionWindows[0];
}
[tabModel restoreSessionWindow:sessionWindow forInitialRestore:YES];
}
// Add observers.
_activeWebStateObservationForwarders[tabModel.webStateList] =
std::make_unique<ActiveWebStateObservationForwarder>(
tabModel.webStateList, _activeWebStateObserver.get());
tabModel.webStateList->AddObserver(_webStateListObserver.get());
tabModel.webStateList->AddObserver(_webStateListForwardingObserver.get());
[self addObserversToWebStateList:browser->GetWebStateList()];
breakpad::MonitorTabStateForWebStateList(tabModel.webStateList);
return browser;
}
- (BrowserCoordinator*)coordinatorForBrowser:(Browser*)browser {
......@@ -491,4 +463,27 @@
return coordinator;
}
- (void)restoreSessionToBrowser:(Browser*)browser {
SessionWindowIOS* sessionWindow = nil;
NSString* statePath = base::SysUTF8ToNSString(
browser->GetBrowserState()->GetStatePath().AsUTF8Unsafe());
SessionIOS* session =
[[SessionServiceIOS sharedService] loadSessionFromDirectory:statePath];
if (session) {
DCHECK_EQ(session.sessionWindows.count, 1u);
sessionWindow = session.sessionWindows[0];
}
SessionRestorationBrowserAgent::FromBrowser(browser)->RestoreSessionWindow(
sessionWindow);
}
- (void)addObserversToWebStateList:(WebStateList*)webStateList {
_activeWebStateObservationForwarders[webStateList] =
std::make_unique<ActiveWebStateObservationForwarder>(
webStateList, _activeWebStateObserver.get());
webStateList->AddObserver(_webStateListObserver.get());
webStateList->AddObserver(_webStateListForwardingObserver.get());
breakpad::MonitorTabStateForWebStateList(webStateList);
}
@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