Chromium Code Reviews| 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; |
| +} |