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

Unified Diff: chrome/browser/sessions/session_restore_delegate.cc

Issue 1136523004: [Sessions] Add detailed logging of SessionRestore events. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Refactor and rebase. Created 5 years, 7 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/sessions/session_restore_delegate.cc
diff --git a/chrome/browser/sessions/session_restore_delegate.cc b/chrome/browser/sessions/session_restore_delegate.cc
index 9d5c3122709459dff1f353967f51ca45e44af392..beb4e256ecfa77c1b1376047aece64c44ed3b904 100644
--- a/chrome/browser/sessions/session_restore_delegate.cc
+++ b/chrome/browser/sessions/session_restore_delegate.cc
@@ -65,22 +65,32 @@ bool SessionRestoreDelegate::RestoredTab::operator<(
void SessionRestoreDelegate::RestoreTabs(
const std::vector<RestoredTab>& tabs,
const base::TimeTicks& restore_started) {
+ SessionRestoreStatsCollector::TrackTabs(tabs, restore_started);
+
+ // Restore the favicon for all tabs. Any tab may end up being deferred due
+ // to memory pressure so it's best to have some visual indication of its
+ // contents.
+ for (auto& restored_tab : tabs) {
+ // Restore the favicon for deferred tabs.
+ favicon::ContentFaviconDriver* favicon_driver =
+ favicon::ContentFaviconDriver::FromWebContents(
+ restored_tab.contents());
+ favicon_driver->FetchFavicon(favicon_driver->GetActiveURL());
+ }
+
// This experiment allows us to have comparative numbers for session restore
// metrics. It will be removed once those numbers are obtained.
// TODO(georgesak): Remove this experiment when stats are collected.
base::FieldTrial* trial =
base::FieldTrialList::Find("IntelligentSessionRestore");
if (!trial || trial->group_name() != "DontRestoreBackgroundTabs") {
- SessionRestoreStatsCollector::TrackTabs(tabs, restore_started);
TabLoader::RestoreTabs(tabs, restore_started);
} else {
- SessionRestoreStatsCollector::TrackActiveTabs(tabs, restore_started);
for (auto& restored_tab : tabs) {
if (!restored_tab.is_active()) {
- favicon::ContentFaviconDriver* favicon_driver =
- favicon::ContentFaviconDriver::FromWebContents(
- restored_tab.contents());
- favicon_driver->FetchFavicon(favicon_driver->GetActiveURL());
+ // Non-active tabs aren't being loaded, so mark them as deferred.
+ auto tab_controller = &restored_tab.contents()->GetController();
+ SessionRestoreStatsCollector::DeferTab(tab_controller);
sky 2015/05/14 15:47:04 I would rather not expose a bunch of static functi
chrisha 2015/05/14 21:27:02 This is an edge case. When memory pressure fires t
sky 2015/05/14 21:51:50 I don't think deferred belongs in RestoredTab as i
}
}
}

Powered by Google App Engine
This is Rietveld 408576698