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

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: Store global SessionRestoreObserver list into a separate class. 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..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

Powered by Google App Engine
This is Rietveld 408576698