| Index: chrome/browser/profiles/profile_impl.cc
|
| diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
|
| index 0c894336d6b33b01f7fc0a6ce77261a70fbb01b9..0e6f79f190c7b0b4bfb2da5bdbfd1a2b16c3a94c 100644
|
| --- a/chrome/browser/profiles/profile_impl.cc
|
| +++ b/chrome/browser/profiles/profile_impl.cc
|
| @@ -362,18 +362,34 @@ void ProfileImpl::DoFinalInit(bool is_new_profile) {
|
|
|
| FilePath app_path = GetPath().Append(chrome::kIsolatedAppStateDirname);
|
|
|
| + bool restore_old_session_cookies = false;
|
| + if (session_restore_enabled_) {
|
| + // Restore old session cookies
|
| + // - after crashes
|
| + // - after updates
|
| + // - when the user has the "continue where I left off" startup option
|
| + // selected, and hasn't selected to clear cookies on exit or restricted them
|
| + // to session only.
|
| + const CommandLine* command_line = CommandLine::ForCurrentProcess();
|
| #if defined(OS_ANDROID)
|
| - SessionStartupPref::Type startup_pref_type =
|
| - SessionStartupPref::GetDefaultStartupType();
|
| + SessionStartupPref::Type startup_pref_type =
|
| + SessionStartupPref::GetDefaultStartupType();
|
| #else
|
| - SessionStartupPref::Type startup_pref_type =
|
| - BrowserInit::GetSessionStartupPref(*CommandLine::ForCurrentProcess(),
|
| - this).type;
|
| + SessionStartupPref::Type startup_pref_type =
|
| + BrowserInit::GetSessionStartupPref(*command_line, this).type;
|
| #endif
|
| - bool restore_old_session_cookies =
|
| - session_restore_enabled_ &&
|
| - (!DidLastSessionExitCleanly() ||
|
| - startup_pref_type == SessionStartupPref::LAST);
|
| + CookieSettings* cookie_settings =
|
| + CookieSettings::Factory::GetForProfile(this);
|
| +
|
| + restore_old_session_cookies =
|
| + !DidLastSessionExitCleanly() ||
|
| + command_line->HasSwitch(switches::kRestoreLastSession) ||
|
| + BrowserInit::WasRestarted() ||
|
| + (startup_pref_type == SessionStartupPref::LAST &&
|
| + !clear_local_state_on_exit_ &&
|
| + cookie_settings->GetDefaultCookieSetting(NULL) !=
|
| + CONTENT_SETTING_SESSION_ONLY);
|
| + }
|
|
|
| InitHostZoomMap();
|
|
|
| @@ -560,15 +576,8 @@ ProfileImpl::~ProfileImpl() {
|
| chrome::NOTIFICATION_PROFILE_DESTROYED,
|
| content::Source<Profile>(this),
|
| content::NotificationService::NoDetails());
|
| - // Save the session state if we're going to restore the session during the
|
| - // next startup.
|
| - SessionStartupPref pref = SessionStartupPref::GetStartupPref(this);
|
| - if (pref.type == SessionStartupPref::LAST) {
|
| - if (session_restore_enabled_)
|
| - BrowserContext::SaveSessionState(this);
|
| - } else if (clear_local_state_on_exit_) {
|
| + if (clear_local_state_on_exit_)
|
| BrowserContext::ClearLocalOnDestruction(this);
|
| - }
|
|
|
| StopCreateSessionServiceTimer();
|
|
|
|
|