OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/net/predictor.h" | 5 #include "chrome/browser/net/predictor.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 #include <set> | 9 #include <set> |
10 #include <sstream> | 10 #include <sstream> |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 | 181 |
182 void Predictor::RegisterProfilePrefs( | 182 void Predictor::RegisterProfilePrefs( |
183 user_prefs::PrefRegistrySyncable* registry) { | 183 user_prefs::PrefRegistrySyncable* registry) { |
184 registry->RegisterListPref(prefs::kDnsPrefetchingStartupList); | 184 registry->RegisterListPref(prefs::kDnsPrefetchingStartupList); |
185 registry->RegisterListPref(prefs::kDnsPrefetchingHostReferralList); | 185 registry->RegisterListPref(prefs::kDnsPrefetchingHostReferralList); |
186 } | 186 } |
187 | 187 |
188 // --------------------- Start UI methods. ------------------------------------ | 188 // --------------------- Start UI methods. ------------------------------------ |
189 | 189 |
190 void Predictor::InitNetworkPredictor(PrefService* user_prefs, | 190 void Predictor::InitNetworkPredictor(PrefService* user_prefs, |
191 PrefService* local_state, | |
192 IOThread* io_thread, | 191 IOThread* io_thread, |
193 net::URLRequestContextGetter* getter, | 192 net::URLRequestContextGetter* getter, |
194 ProfileIOData* profile_io_data) { | 193 ProfileIOData* profile_io_data) { |
195 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 194 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
196 | 195 |
197 user_prefs_ = user_prefs; | 196 user_prefs_ = user_prefs; |
198 url_request_context_getter_ = getter; | 197 url_request_context_getter_ = getter; |
199 | 198 |
200 // Gather the list of hostnames to prefetch on startup. | 199 // Gather the list of hostnames to prefetch on startup. |
201 UrlList urls = GetPredictedUrlListAtStartup(user_prefs, local_state); | 200 UrlList urls = GetPredictedUrlListAtStartup(user_prefs); |
202 | 201 |
203 base::ListValue* referral_list = | 202 base::ListValue* referral_list = |
204 static_cast<base::ListValue*>(user_prefs->GetList( | 203 static_cast<base::ListValue*>(user_prefs->GetList( |
205 prefs::kDnsPrefetchingHostReferralList)->DeepCopy()); | 204 prefs::kDnsPrefetchingHostReferralList)->DeepCopy()); |
206 | 205 |
207 // Now that we have the statistics in memory, wipe them from the Preferences | 206 // Now that we have the statistics in memory, wipe them from the Preferences |
208 // file. They will be serialized back on a clean shutdown. This way we only | 207 // file. They will be serialized back on a clean shutdown. This way we only |
209 // have to worry about clearing our in-memory state when Clearing Browsing | 208 // have to worry about clearing our in-memory state when Clearing Browsing |
210 // Data. | 209 // Data. |
211 user_prefs->ClearPref(prefs::kDnsPrefetchingStartupList); | 210 user_prefs->ClearPref(prefs::kDnsPrefetchingStartupList); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
307 if (!CanPreresolveAndPreconnect()) | 306 if (!CanPreresolveAndPreconnect()) |
308 return; | 307 return; |
309 | 308 |
310 UrlInfo::ResolutionMotivation motivation(UrlInfo::EARLY_LOAD_MOTIVATED); | 309 UrlInfo::ResolutionMotivation motivation(UrlInfo::EARLY_LOAD_MOTIVATED); |
311 const int kConnectionsNeeded = 1; | 310 const int kConnectionsNeeded = 1; |
312 PreconnectUrl(CanonicalizeUrl(url), first_party_for_cookies, motivation, | 311 PreconnectUrl(CanonicalizeUrl(url), first_party_for_cookies, motivation, |
313 kConnectionsNeeded, kAllowCredentialsOnPreconnectByDefault); | 312 kConnectionsNeeded, kAllowCredentialsOnPreconnectByDefault); |
314 PredictFrameSubresources(url.GetWithEmptyPath(), first_party_for_cookies); | 313 PredictFrameSubresources(url.GetWithEmptyPath(), first_party_for_cookies); |
315 } | 314 } |
316 | 315 |
317 UrlList Predictor::GetPredictedUrlListAtStartup( | 316 UrlList Predictor::GetPredictedUrlListAtStartup(PrefService* user_prefs) { |
318 PrefService* user_prefs, | |
319 PrefService* local_state) { | |
320 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 317 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
321 UrlList urls; | 318 UrlList urls; |
322 // Recall list of URLs we learned about during last session. | 319 // Recall list of URLs we learned about during last session. |
323 // This may catch secondary hostnames, pulled in by the homepages. It will | 320 // This may catch secondary hostnames, pulled in by the homepages. It will |
324 // also catch more of the "primary" home pages, since that was (presumably) | 321 // also catch more of the "primary" home pages, since that was (presumably) |
325 // rendered first (and will be rendered first this time too). | 322 // rendered first (and will be rendered first this time too). |
326 const base::ListValue* startup_list = | 323 const base::ListValue* startup_list = |
327 user_prefs->GetList(prefs::kDnsPrefetchingStartupList); | 324 user_prefs->GetList(prefs::kDnsPrefetchingStartupList); |
328 | 325 |
329 if (startup_list) { | 326 if (startup_list) { |
(...skipping 962 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1292 // If we omit a port, it will default to 80 or 443 as appropriate. | 1289 // If we omit a port, it will default to 80 or 443 as appropriate. |
1293 std::string colon_plus_port; | 1290 std::string colon_plus_port; |
1294 if (url.has_port()) | 1291 if (url.has_port()) |
1295 colon_plus_port = ":" + url.port(); | 1292 colon_plus_port = ":" + url.port(); |
1296 | 1293 |
1297 return GURL(scheme + "://" + url.host() + colon_plus_port); | 1294 return GURL(scheme + "://" + url.host() + colon_plus_port); |
1298 } | 1295 } |
1299 | 1296 |
1300 void SimplePredictor::InitNetworkPredictor( | 1297 void SimplePredictor::InitNetworkPredictor( |
1301 PrefService* user_prefs, | 1298 PrefService* user_prefs, |
1302 PrefService* local_state, | |
1303 IOThread* io_thread, | 1299 IOThread* io_thread, |
1304 net::URLRequestContextGetter* getter, | 1300 net::URLRequestContextGetter* getter, |
1305 ProfileIOData* profile_io_data) { | 1301 ProfileIOData* profile_io_data) { |
1306 // Empty function for unittests. | 1302 // Empty function for unittests. |
1307 } | 1303 } |
1308 | 1304 |
1309 void SimplePredictor::ShutdownOnUIThread() { | 1305 void SimplePredictor::ShutdownOnUIThread() { |
1310 SetShutdown(true); | 1306 SetShutdown(true); |
1311 } | 1307 } |
1312 | 1308 |
1313 bool SimplePredictor::CanPrefetchAndPrerender() const { return true; } | 1309 bool SimplePredictor::CanPrefetchAndPrerender() const { return true; } |
1314 bool SimplePredictor::CanPreresolveAndPreconnect() const { return true; } | 1310 bool SimplePredictor::CanPreresolveAndPreconnect() const { return true; } |
1315 | 1311 |
1316 } // namespace chrome_browser_net | 1312 } // namespace chrome_browser_net |
OLD | NEW |