summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sessions/session_restore.cc
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-26 15:58:08 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-26 15:58:08 +0000
commitc9b19949487f406436c9f5cdfdf35ce3bd805d67 (patch)
tree0de3a25b34c84b1dcdbd84ae7205ca3a514fec7f /chrome/browser/sessions/session_restore.cc
parentfdeb7ac65e407aa5334b6f5308f15be3dae70dd6 (diff)
downloadchromium_src-c9b19949487f406436c9f5cdfdf35ce3bd805d67.zip
chromium_src-c9b19949487f406436c9f5cdfdf35ce3bd805d67.tar.gz
chromium_src-c9b19949487f406436c9f5cdfdf35ce3bd805d67.tar.bz2
Fixes bug where triggering session restore while the browser was
already running would end up creating an extra tab. BUG=11594 TEST=open chrome with a single tabbed browser, turn on session restore, navigate to a page with a popup, close the tabbed browser, create a new window ala control-n (or double click on the desktop), and make the restored window doesn't end upw Review URL: http://codereview.chromium.org/1371002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42766 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/sessions/session_restore.cc')
-rw-r--r--chrome/browser/sessions/session_restore.cc12
1 files changed, 11 insertions, 1 deletions
diff --git a/chrome/browser/sessions/session_restore.cc b/chrome/browser/sessions/session_restore.cc
index 99451b2..700290a 100644
--- a/chrome/browser/sessions/session_restore.cc
+++ b/chrome/browser/sessions/session_restore.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -26,6 +26,9 @@
#include "chrome/common/notification_registrar.h"
#include "chrome/common/notification_service.h"
+// Are we in the process of restoring?
+static bool restoring = false;
+
namespace {
// TabLoader ------------------------------------------------------------------
@@ -211,6 +214,7 @@ class SessionRestoreImpl : public NotificationObserver {
~SessionRestoreImpl() {
STLDeleteElements(&windows_);
+ restoring = false;
}
virtual void Observe(NotificationType type,
@@ -502,6 +506,7 @@ static void Restore(Profile* profile,
NOTREACHED();
return;
}
+ restoring = true;
profile->set_restored_last_session(true);
// SessionRestoreImpl takes care of deleting itself when done.
SessionRestoreImpl* restorer =
@@ -527,3 +532,8 @@ void SessionRestore::RestoreSessionSynchronously(
const std::vector<GURL>& urls_to_open) {
Restore(profile, NULL, true, false, true, urls_to_open);
}
+
+// static
+bool SessionRestore::IsRestoring() {
+ return restoring;
+}