diff options
author | tim@chromium.org <tim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-17 21:10:21 +0000 |
---|---|---|
committer | tim@chromium.org <tim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-17 21:10:21 +0000 |
commit | 41ef4508ee9980a2945514ba2f913d1bf64ee326 (patch) | |
tree | bc15a721ad72de224856f229a086abfa109a0384 /chrome/browser/sessions/session_restore.cc | |
parent | 448644f367ad072a82d095615a98f2ab6bf2822b (diff) | |
download | chromium_src-41ef4508ee9980a2945514ba2f913d1bf64ee326.zip chromium_src-41ef4508ee9980a2945514ba2f913d1bf64ee326.tar.gz chromium_src-41ef4508ee9980a2945514ba2f913d1bf64ee326.tar.bz2 |
Added classes to enable session sync functionality.
TEST=ProfileSyncServiceSessionTest
BUG=30519
Original patch by jerrica@chromium.org
Original review: http://codereview.chromium.org/3168009
Review URL: http://codereview.chromium.org/3184004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56423 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/sessions/session_restore.cc')
-rw-r--r-- | chrome/browser/sessions/session_restore.cc | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/chrome/browser/sessions/session_restore.cc b/chrome/browser/sessions/session_restore.cc index a75f7de..9a20e65 100644 --- a/chrome/browser/sessions/session_restore.cc +++ b/chrome/browser/sessions/session_restore.cc @@ -298,6 +298,33 @@ class SessionRestoreImpl : public NotificationObserver { } } + void RestoreForeignSession(std::vector<SessionWindow*>* windows) { + tab_loader_.reset(new TabLoader()); + // Create a browser instance to put the restored tabs in. + bool has_tabbed_browser = false; + for (std::vector<SessionWindow*>::iterator i = (*windows).begin(); + i != (*windows).end(); ++i) { + Browser* browser = NULL; + if (!has_tabbed_browser && (*i)->type == Browser::TYPE_NORMAL) + has_tabbed_browser = true; + browser = new Browser(static_cast<Browser::Type>((*i)->type), + profile_); + browser->set_override_bounds((*i)->bounds); + browser->set_maximized_state((*i)->is_maximized ? + Browser::MAXIMIZED_STATE_MAXIMIZED : + Browser::MAXIMIZED_STATE_UNMAXIMIZED); + browser->CreateBrowserWindow(); + + // Restore and show the browser. + const int initial_tab_count = browser->tab_count(); + RestoreTabsToBrowser(*(*i), browser); + ShowBrowser(browser, initial_tab_count, + (*i)->selected_tab_index); + NotifySessionServiceOfRestoredTabs(browser, initial_tab_count); + FinishedTabCreation(true, has_tabbed_browser); + } + } + ~SessionRestoreImpl() { STLDeleteElements(&windows_); restoring = false; @@ -614,6 +641,16 @@ void SessionRestore::RestoreSession(Profile* profile, } // static +void SessionRestore::RestoreForeignSessionWindows(Profile* profile, + std::vector<SessionWindow*>* windows) { + // Create a SessionRestore object to eventually restore the tabs. + std::vector<GURL> gurls; + SessionRestoreImpl restorer(profile, + static_cast<Browser*>(NULL), true, false, true, gurls); + restorer.RestoreForeignSession(windows); +} + +// static void SessionRestore::RestoreSessionSynchronously( Profile* profile, const std::vector<GURL>& urls_to_open) { |