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..e7097dc88ca4edf0c5852f9b4ca51079f7baa607 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/tab_loader.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_list.h" |
#include "chrome/browser/ui/browser_window.h" |
@@ -136,6 +137,8 @@ TabManager::TabManager() |
#endif |
browser_tab_strip_tracker_(this, nullptr, nullptr), |
test_tick_clock_(nullptr), |
+ in_session_restore_tab_loading_(false), |
lpy
2017/06/23 22:35:57
is_in_session_restore_tab_loading_
ducbui
2017/06/23 23:30:14
Done.
|
+ session_restore_observer_instance_(this), |
weak_ptr_factory_(this) { |
#if defined(OS_CHROMEOS) |
delegate_.reset(new TabManagerDelegate(weak_ptr_factory_.GetWeakPtr())); |
@@ -475,6 +478,16 @@ int64_t TabManager::IdFromWebContents(WebContents* web_contents) { |
return reinterpret_cast<int64_t>(web_contents); |
} |
+void TabManager::OnSessionRestoreTabLoadingStarted() { |
+ DCHECK(!in_session_restore_tab_loading_); |
+ in_session_restore_tab_loading_ = true; |
+} |
+ |
+void TabManager::OnSessionRestoreTabLoadingEnded() { |
+ DCHECK(in_session_restore_tab_loading_); |
+ in_session_restore_tab_loading_ = false; |
+} |
+ |
/////////////////////////////////////////////////////////////////////////////// |
// TabManager, private: |
@@ -903,4 +916,23 @@ std::vector<TabManager::BrowserInfo> TabManager::GetBrowserInfoList() const { |
return browser_info_list; |
} |
+TabManager::SessionRestoreObserverInstance::SessionRestoreObserverInstance( |
+ TabManager* tab_manager) |
+ : tab_manager_(tab_manager) { |
+ SessionRestoreObserver::AddObserver(this); |
+} |
+ |
+TabManager::SessionRestoreObserverInstance::~SessionRestoreObserverInstance() { |
+ SessionRestoreObserver::RemoveObserver(this); |
+} |
+ |
+// SessionRestoreObserver implementation: |
+void TabManager::SessionRestoreObserverInstance::OnTabLoadingStarted() { |
+ tab_manager_->OnSessionRestoreTabLoadingStarted(); |
+} |
+ |
+void TabManager::SessionRestoreObserverInstance::OnTabLoadingEnded() { |
+ tab_manager_->OnSessionRestoreTabLoadingEnded(); |
+} |
+ |
} // namespace resource_coordinator |