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
|
} |
} |
} |