| 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 7332949cbdacd598ba3f6665fb179a7af6a3ae0e..846d73c0a561ed81bcab7e826da259044e033545 100644
|
| --- a/chrome/browser/resource_coordinator/tab_manager.cc
|
| +++ b/chrome/browser/resource_coordinator/tab_manager.cc
|
| @@ -155,6 +155,7 @@ TabManager::TabManager()
|
| browser_tab_strip_tracker_(this, nullptr, this),
|
| test_tick_clock_(nullptr),
|
| is_session_restore_loading_tabs_(false),
|
| + initial_session_restore_foreground_tab_changed_(false),
|
| force_load_timer_(base::MakeUnique<base::OneShotTimer>()),
|
| weak_ptr_factory_(this) {
|
| #if defined(OS_CHROMEOS)
|
| @@ -515,6 +516,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() {
|
| @@ -887,6 +891,15 @@ void TabManager::ActiveTabChanged(content::WebContents* old_contents,
|
| }
|
|
|
| ResumeTabNavigationIfNeeded(new_contents);
|
| +
|
| + if (old_contents && !initial_session_restore_foreground_tab_changed_) {
|
| + RestoreOrigin* restore_origin =
|
| + RestoreOrigin::FromWebContents(old_contents);
|
| + if (restore_origin &&
|
| + restore_origin->type() == RestoreOrigin::Type::SESSION_RESTORE) {
|
| + initial_session_restore_foreground_tab_changed_ = true;
|
| + }
|
| + }
|
| }
|
|
|
| void TabManager::TabInsertedAt(TabStripModel* tab_strip_model,
|
|
|