Index: chrome/browser/sessions/base_session_service.cc |
diff --git a/chrome/browser/sessions/base_session_service.cc b/chrome/browser/sessions/base_session_service.cc |
index f06a79cec38c02646d34ac6ae9bf1da50f7734b7..7948d1318b636ef947780519f5a7ec7421e10276 100644 |
--- a/chrome/browser/sessions/base_session_service.cc |
+++ b/chrome/browser/sessions/base_session_service.cc |
@@ -14,6 +14,7 @@ |
#include "chrome/browser/sessions/session_backend.h" |
#include "chrome/browser/sessions/session_types.h" |
#include "chrome/common/chrome_switches.h" |
+#include "chrome/common/url_constants.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/navigation_entry.h" |
#include "content/public/common/referrer.h" |
@@ -264,7 +265,11 @@ bool BaseSessionService::RestoreSetWindowAppNameCommand( |
} |
bool BaseSessionService::ShouldTrackEntry(const GURL& url) { |
- return url.is_valid(); |
+ // Blacklist chrome://quit and chrome://restart to avoid quit or restart |
+ // loops. |
+ return url.is_valid() && !(url.SchemeIs(chrome::kChromeUIScheme) && |
+ (url.host() == chrome::kChromeUIQuitHost || |
+ url.host() == chrome::kChromeUIRestartHost)); |
} |
CancelableTaskTracker::TaskId |