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 28b2966f818c6a42ba26c4b1c9d1017cd44b0ec6..9d5c3122709459dff1f353967f51ca45e44af392 100644 |
--- a/chrome/browser/sessions/session_restore_delegate.cc |
+++ b/chrome/browser/sessions/session_restore_delegate.cc |
@@ -8,6 +8,7 @@ |
#include "chrome/browser/sessions/session_restore_stats_collector.h" |
#include "chrome/browser/sessions/tab_loader.h" |
#include "chrome/common/url_constants.h" |
+#include "components/favicon/content/content_favicon_driver.h" |
#include "content/public/browser/web_contents.h" |
namespace { |
@@ -64,6 +65,23 @@ bool SessionRestoreDelegate::RestoredTab::operator<( |
void SessionRestoreDelegate::RestoreTabs( |
const std::vector<RestoredTab>& tabs, |
const base::TimeTicks& restore_started) { |
- SessionRestoreStatsCollector::TrackTabs(tabs, restore_started); |
- TabLoader::RestoreTabs(tabs, restore_started); |
+ // 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()); |
+ } |
+ } |
+ } |
} |