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

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: Fix typo. Created 5 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/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..87b3e06c3b70d17a6d6d242c749cb0d2edd44cb1 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 (const 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) {
+ // 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 (const 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();
+ stats_collector->DeferTab(tab_controller);
}
}
}

Powered by Google App Engine
This is Rietveld 408576698