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,40 +445,12 @@ ...@@ -445,40 +445,12 @@
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 setUpTabModel:browser->GetTabModel() [self addObserversToWebStateList:browser->GetWebStateList()];
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());
breakpad::MonitorTabStateForWebStateList(tabModel.webStateList); return browser;
} }
- (BrowserCoordinator*)coordinatorForBrowser:(Browser*)browser { - (BrowserCoordinator*)coordinatorForBrowser:(Browser*)browser {
...@@ -491,4 +463,27 @@ ...@@ -491,4 +463,27 @@
return coordinator; 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 @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