Index: chrome/browser/resource_coordinator/tab_manager.cc |
diff --git a/chrome/browser/resource_coordinator/tab_manager.cc b/chrome/browser/resource_coordinator/tab_manager.cc |
index b4ca7b54f50b638ab8864bc1c89f9a0df7663669..387c51c13410d0b3340babf9d902714813acbad5 100644 |
--- a/chrome/browser/resource_coordinator/tab_manager.cc |
+++ b/chrome/browser/resource_coordinator/tab_manager.cc |
@@ -135,6 +135,7 @@ TabManager::TabManager() |
browser_tab_strip_tracker_(this, nullptr, nullptr), |
test_tick_clock_(nullptr), |
is_session_restore_loading_tabs_(false), |
+ initial_session_restore_foreground_tab_changed_(false), |
weak_ptr_factory_(this) { |
#if defined(OS_CHROMEOS) |
delegate_.reset(new TabManagerDelegate(weak_ptr_factory_.GetWeakPtr())); |
@@ -469,6 +470,9 @@ int64_t TabManager::IdFromWebContents(WebContents* web_contents) { |
void TabManager::OnSessionRestoreStartedLoadingTabs() { |
DCHECK(!is_session_restore_loading_tabs_); |
is_session_restore_loading_tabs_ = true; |
+ |
+ // Needs to reset this flag for each session restore. |
+ initial_session_restore_foreground_tab_changed_ = false; |
} |
void TabManager::OnSessionRestoreFinishedLoadingTabs() { |
@@ -794,6 +798,10 @@ void TabManager::ActiveTabChanged(content::WebContents* old_contents, |
GetWebContentsData(old_contents) |
->set_time_to_purge(GetTimeToPurge(min_time_to_purge_)); |
} |
+ |
+ if (old_contents && !initial_session_restore_foreground_tab_changed_) { |
+ initial_session_restore_foreground_tab_changed_ = true; |
+ } |
} |
void TabManager::TabInsertedAt(TabStripModel* tab_strip_model, |