Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(203)

Unified Diff: chrome/browser/sessions/session_common_utils.cc

Issue 2493573002: Make sure that the browser will always restore settings page instead of sign out page after user si… (Closed)
Patch Set: append the missing file Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sessions/session_common_utils.cc
diff --git a/chrome/browser/sessions/session_common_utils.cc b/chrome/browser/sessions/session_common_utils.cc
index 75973b73afa83d823ab1c05efe8b9bea2e52b675..4cddd5b3590bf391e27a937e8f0a848386b81bdc 100644
--- a/chrome/browser/sessions/session_common_utils.cc
+++ b/chrome/browser/sessions/session_common_utils.cc
@@ -4,7 +4,11 @@
#include "chrome/browser/sessions/session_common_utils.h"
+#include <algorithm>
+#include <string>
+
#include "chrome/common/url_constants.h"
+#include "components/sessions/core/session_types.h"
#include "url/gurl.h"
bool ShouldTrackURLForRestore(const GURL& url) {
@@ -13,3 +17,26 @@ bool ShouldTrackURLForRestore(const GURL& url) {
(url.host() == chrome::kChromeUIQuitHost ||
url.host() == chrome::kChromeUIRestartHost));
}
+
+int GetSelectedIndexFromTab(const sessions::SessionTab& tab) {
+ int selected_index = tab.current_navigation_index;
+ selected_index = std::max(
sky 2016/11/11 00:32:17 optional: avoid multiple statements and do the ass
zmin 2016/11/11 22:54:01 Done.
+ 0,
+ std::min(selected_index, static_cast<int>(tab.navigations.size() - 1)));
sky 2016/11/11 00:32:17 DCHECK !tab.navigations.empty() ? I realize the ch
zmin 2016/11/11 22:54:01 Done.
+
+ // After user sign out, Chrome may navigate to the setting page from the
+ // sign out page asynchronously. The browser may be closed before the
+ // navigation callback finished.
+ std::string setting_page_url = std::string(chrome::kChromeUISettingsURL);
+ std::string sign_out_page_url =
+ setting_page_url + std::string(chrome::kSignOutSubPage);
+ if (selected_index > 0 &&
+ tab.navigations[selected_index].virtual_url().spec() ==
+ sign_out_page_url &&
+ tab.navigations[selected_index - 1].virtual_url().spec() ==
+ setting_page_url) {
+ selected_index -= 1;
sky 2016/11/11 00:32:17 optional: I would early return at this point, e.g.
zmin 2016/11/11 22:54:01 Done.
+ }
+
+ return selected_index;
+}

Powered by Google App Engine
This is Rietveld 408576698