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 52564f97adf048836da07c485e0ff02248b2d72b..061ab4eaa26500df6387e7167060b847f36373bc 100644 |
| --- a/chrome/browser/sessions/session_restore_delegate.cc |
| +++ b/chrome/browser/sessions/session_restore_delegate.cc |
| @@ -69,22 +69,38 @@ bool SessionRestoreDelegate::RestoredTab::operator<( |
| void SessionRestoreDelegate::RestoreTabs( |
| const std::vector<RestoredTab>& tabs, |
| const base::TimeTicks& 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) { |
|
Alexei Svitkine (slow)
2015/06/18 17:48:48
Nit: const auto&
chrisha
2015/06/18 20:09:03
Done.
|
| + // 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); |
| + // A TabLoader will not be used for this session restore, so manually create |
| + // and use a SessionRestoreStatsCollector, normally owned by the TabLoader. |
| + scoped_ptr<SessionRestoreStatsCollector::StatsReportingDelegate> |
| + reporting_delegate( |
| + new SessionRestoreStatsCollector::UmaStatsReportingDelegate()); |
| + scoped_refptr<SessionRestoreStatsCollector> stats_collector = |
| + new SessionRestoreStatsCollector(restore_started, |
| + reporting_delegate.Pass()); |
| + stats_collector->TrackTabs(tabs); |
| for (auto& restored_tab : tabs) { |
|
Alexei Svitkine (slow)
2015/06/18 17:48:48
Nit: const auto&
chrisha
2015/06/18 20:09:03
Done.
|
| 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(); |
| + stats_collector->DeferTab(tab_controller); |
| } |
| } |
| } |