| 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 9ce446cfd721ac2a23a6c8128224e1b70016d080..259d63e128c4419d4002d8b97bc8d36128cc3715 100644
|
| --- a/chrome/browser/resource_coordinator/tab_manager.cc
|
| +++ b/chrome/browser/resource_coordinator/tab_manager.cc
|
| @@ -35,6 +35,7 @@
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/resource_coordinator/tab_manager_observer.h"
|
| #include "chrome/browser/resource_coordinator/tab_manager_web_contents_data.h"
|
| +#include "chrome/browser/sessions/session_restore.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/browser/ui/browser_list.h"
|
| #include "chrome/browser/ui/browser_window.h"
|
| @@ -125,6 +126,29 @@ class BoundsList {
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // TabManager
|
|
|
| +class TabManager::TabManagerSessionRestoreObserver
|
| + : public SessionRestoreObserver {
|
| + public:
|
| + explicit TabManagerSessionRestoreObserver(TabManager* tab_manager)
|
| + : tab_manager_(tab_manager) {
|
| + SessionRestore::AddObserver(this);
|
| + }
|
| +
|
| + ~TabManagerSessionRestoreObserver() { SessionRestore::RemoveObserver(this); }
|
| +
|
| + // SessionRestoreObserver implementation:
|
| + void OnSessionRestoreStartedLoadingTabs() override {
|
| + tab_manager_->OnSessionRestoreStartedLoadingTabs();
|
| + }
|
| +
|
| + void OnSessionRestoreFinishedLoadingTabs() override {
|
| + tab_manager_->OnSessionRestoreFinishedLoadingTabs();
|
| + }
|
| +
|
| + private:
|
| + TabManager* tab_manager_;
|
| +};
|
| +
|
| constexpr base::TimeDelta TabManager::kDefaultMinTimeToPurge;
|
|
|
| TabManager::TabManager()
|
| @@ -136,11 +160,13 @@ TabManager::TabManager()
|
| #endif
|
| browser_tab_strip_tracker_(this, nullptr, nullptr),
|
| test_tick_clock_(nullptr),
|
| + is_session_restore_loading_tabs_(false),
|
| weak_ptr_factory_(this) {
|
| #if defined(OS_CHROMEOS)
|
| delegate_.reset(new TabManagerDelegate(weak_ptr_factory_.GetWeakPtr()));
|
| #endif
|
| browser_tab_strip_tracker_.Init();
|
| + session_restore_observer_.reset(new TabManagerSessionRestoreObserver(this));
|
| }
|
|
|
| TabManager::~TabManager() {
|
| @@ -475,6 +501,16 @@ int64_t TabManager::IdFromWebContents(WebContents* web_contents) {
|
| return reinterpret_cast<int64_t>(web_contents);
|
| }
|
|
|
| +void TabManager::OnSessionRestoreStartedLoadingTabs() {
|
| + DCHECK(!is_session_restore_loading_tabs_);
|
| + is_session_restore_loading_tabs_ = true;
|
| +}
|
| +
|
| +void TabManager::OnSessionRestoreFinishedLoadingTabs() {
|
| + DCHECK(is_session_restore_loading_tabs_);
|
| + is_session_restore_loading_tabs_ = false;
|
| +}
|
| +
|
| ///////////////////////////////////////////////////////////////////////////////
|
| // TabManager, private:
|
|
|
|
|