Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2459)

Unified Diff: chrome/browser/resource_coordinator/tab_manager.cc

Issue 2935183002: [TabMetrics] Add signals that mark the start and end of session restore. (Closed)
Patch Set: Enable SessionRestoreObserverTest only when session service available. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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:

Powered by Google App Engine
This is Rietveld 408576698