| Index: chrome/browser/net/predictor.cc
|
| diff --git a/chrome/browser/net/predictor.cc b/chrome/browser/net/predictor.cc
|
| index 44921f8b1658bf657309a3cc3155082d1df86460..b089e010ea1a92446bcf0d81bd75395b10697e6a 100644
|
| --- a/chrome/browser/net/predictor.cc
|
| +++ b/chrome/browser/net/predictor.cc
|
| @@ -146,16 +146,8 @@ void Predictor::InitNetworkPredictor(PrefService* user_prefs,
|
| // Gather the list of hostnames to prefetch on startup.
|
| std::vector<GURL> urls = GetPredictedUrlListAtStartup(user_prefs);
|
|
|
| - base::ListValue* referral_list =
|
| - static_cast<base::ListValue*>(user_prefs->GetList(
|
| - prefs::kDnsPrefetchingHostReferralList)->DeepCopy());
|
| -
|
| - // Now that we have the statistics in memory, wipe them from the Preferences
|
| - // file. They will be serialized back on a clean shutdown. This way we only
|
| - // have to worry about clearing our in-memory state when Clearing Browsing
|
| - // Data.
|
| - user_prefs->ClearPref(prefs::kDnsPrefetchingStartupList);
|
| - user_prefs->ClearPref(prefs::kDnsPrefetchingHostReferralList);
|
| + const base::ListValue* referral_list =
|
| + user_prefs->GetList(prefs::kDnsPrefetchingHostReferralList);
|
|
|
| BrowserThread::PostTask(
|
| BrowserThread::IO,
|
| @@ -315,6 +307,12 @@ std::vector<GURL> Predictor::GetPredictedUrlListAtStartup(
|
| return urls;
|
| }
|
|
|
| +void Predictor::ClearPrefsOnUIThread() {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + user_prefs_->ClearPref(prefs::kDnsPrefetchingStartupList);
|
| + user_prefs_->ClearPref(prefs::kDnsPrefetchingHostReferralList);
|
| +}
|
| +
|
| void Predictor::set_max_queueing_delay(int max_queueing_delay_ms) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| g_max_queueing_delay_ms = max_queueing_delay_ms;
|
| @@ -574,12 +572,6 @@ void Predictor::DeserializeReferrers(const base::ListValue& referral_list) {
|
| }
|
| }
|
|
|
| -void Predictor::DeserializeReferrersThenDelete(
|
| - base::ListValue* referral_list) {
|
| - DeserializeReferrers(*referral_list);
|
| - delete referral_list;
|
| -}
|
| -
|
| void Predictor::DiscardInitialNavigationHistory() {
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| if (initial_observer_.get())
|
| @@ -588,7 +580,7 @@ void Predictor::DiscardInitialNavigationHistory() {
|
|
|
| void Predictor::FinalizeInitializationOnIOThread(
|
| const std::vector<GURL>& startup_urls,
|
| - base::ListValue* referral_list,
|
| + const base::ListValue* referral_list,
|
| IOThread* io_thread,
|
| ProfileIOData* profile_io_data) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| @@ -612,7 +604,7 @@ void Predictor::FinalizeInitializationOnIOThread(
|
| // Prefetch these hostnames on startup.
|
| DnsPrefetchMotivatedList(startup_urls, UrlInfo::STARTUP_LIST_MOTIVATED);
|
|
|
| - DeserializeReferrersThenDelete(referral_list);
|
| + DeserializeReferrers(*referral_list);
|
|
|
| LogStartupMetrics();
|
| }
|
| @@ -849,6 +841,14 @@ bool Predictor::CanPreresolveAndPreconnect() const {
|
| }
|
| }
|
|
|
| +void Predictor::DiscardAllResultsAndClearPrefs() {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + DiscardAllResults();
|
| + BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| + base::Bind(&Predictor::ClearPrefsOnUIThread,
|
| + weak_factory_->GetWeakPtr()));
|
| +}
|
| +
|
| enum SubresourceValue {
|
| PRECONNECTION,
|
| PRERESOLUTION,
|
|
|