Chromium Code Reviews| 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
|
| } |
| } |
| } |