| Index: chrome/browser/sessions/session_restore.cc
|
| diff --git a/chrome/browser/sessions/session_restore.cc b/chrome/browser/sessions/session_restore.cc
|
| index eefb94b3061820883afdbaf5e61a2077856b3287..9f7d13ab148cbc984bf435d8a87c873b0b85018d 100644
|
| --- a/chrome/browser/sessions/session_restore.cc
|
| +++ b/chrome/browser/sessions/session_restore.cc
|
| @@ -406,12 +406,14 @@ class SessionRestoreImpl : public content::NotificationObserver {
|
| bool synchronous,
|
| bool clobber_existing_tab,
|
| bool always_create_tabbed_browser,
|
| + bool restore_session_state,
|
| const std::vector<GURL>& urls_to_open)
|
| : profile_(profile),
|
| browser_(browser),
|
| synchronous_(synchronous),
|
| clobber_existing_tab_(clobber_existing_tab),
|
| always_create_tabbed_browser_(always_create_tabbed_browser),
|
| + restore_session_state_(restore_session_state),
|
| urls_to_open_(urls_to_open),
|
| restore_started_(base::TimeTicks::Now()) {
|
| // When asynchronous its possible for there to be no windows. To make sure
|
| @@ -424,6 +426,9 @@ class SessionRestoreImpl : public content::NotificationObserver {
|
| SessionService* session_service =
|
| SessionServiceFactory::GetForProfile(profile_);
|
| DCHECK(session_service);
|
| +
|
| + session_service->RestoreOrResetSessionState(restore_session_state_);
|
| +
|
| SessionService::SessionCallback* callback =
|
| NewCallback(this, &SessionRestoreImpl::OnGotSession);
|
| session_service->GetLastSession(&request_consumer_, callback);
|
| @@ -788,6 +793,9 @@ class SessionRestoreImpl : public content::NotificationObserver {
|
| // at least one window is created.
|
| const bool always_create_tabbed_browser_;
|
|
|
| + // See description of RESTORE_SESSION_STATE.
|
| + const bool restore_session_state_;
|
| +
|
| // Set of URLs to open in addition to those restored from the session.
|
| std::vector<GURL> urls_to_open_;
|
|
|
| @@ -837,6 +845,7 @@ Browser* SessionRestore::RestoreSession(Profile* profile,
|
| profile, browser, (behavior & SYNCHRONOUS) != 0,
|
| (behavior & CLOBBER_CURRENT_TAB) != 0,
|
| (behavior & ALWAYS_CREATE_TABBED_BROWSER) != 0,
|
| + (behavior & RESTORE_SESSION_STATE) != 0,
|
| urls_to_open);
|
| return restorer->Restore();
|
| }
|
| @@ -849,7 +858,7 @@ void SessionRestore::RestoreForeignSessionWindows(
|
| // Create a SessionRestore object to eventually restore the tabs.
|
| std::vector<GURL> gurls;
|
| SessionRestoreImpl restorer(profile,
|
| - static_cast<Browser*>(NULL), true, false, true, gurls);
|
| + static_cast<Browser*>(NULL), true, false, true, false, gurls);
|
| restorer.RestoreForeignSession(begin, end);
|
| }
|
|
|
| @@ -859,7 +868,7 @@ void SessionRestore::RestoreForeignSessionTab(Profile* profile,
|
| // Create a SessionRestore object to eventually restore the tabs.
|
| std::vector<GURL> gurls;
|
| SessionRestoreImpl restorer(profile,
|
| - static_cast<Browser*>(NULL), true, false, true, gurls);
|
| + static_cast<Browser*>(NULL), true, false, true, false, gurls);
|
| restorer.RestoreForeignTab(tab);
|
| }
|
|
|
|
|