Enable TCP preconnect and DNS preresolve on cellular.
Previously the default setting was to perform TCP preconnect and DNS
preresolution on all networks, and do prefetch and prerender on non cellular
network only. Changing to kNetworkPredictionOptions has modified this default
behavior, disabling preconnect and preresolve on cellular networks by default
(the default setting is NETWORK_PREDICTION_WIFI_ONLY). This CL reverts this
change, allowing preconnect and preresolve (but not prefetch and prerender) on
any network if kNetworkPredicitonOptions == NETWORK_PREDICTION_WIFI_ONLY. In
order to do so, the helper functions CanPredictNetworkActions*() are split up
into new helper functions, one set for preconnect and preresolve, the other
for prefetch and prerender.
BUG=334602
Review URL: https://codereview.chromium.org/443413002
Cr-Commit-Position: refs/heads/master@{#289302}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@289302 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/net/prediction_options.cc b/chrome/browser/net/prediction_options.cc
index 509d2592..a01f5ee11 100644
--- a/chrome/browser/net/prediction_options.cc
+++ b/chrome/browser/net/prediction_options.cc
@@ -16,9 +16,9 @@
// Since looking up preferences and current network connection are presumably
// both cheap, we do not cache them here.
-bool CanPredictNetworkActions(int NetworkPredictionOptions,
- bool NetworkPredictionEnabled) {
- switch (NetworkPredictionOptions) {
+bool CanPrefetchAndPrerender(int network_prediction_options,
+ bool network_prediction_enabled) {
+ switch (network_prediction_options) {
case chrome_browser_net::NETWORK_PREDICTION_ALWAYS:
return true;
case chrome_browser_net::NETWORK_PREDICTION_WIFI_ONLY:
@@ -27,7 +27,26 @@
case chrome_browser_net::NETWORK_PREDICTION_NEVER:
return false;
case chrome_browser_net::NETWORK_PREDICTION_UNSET:
- return NetworkPredictionEnabled;
+ return network_prediction_enabled;
+ default:
+ NOTREACHED() << "Unknown kNetworkPredictionOptions value.";
+ return false;
+ }
+}
+
+bool CanPreresolveAndPreconnect(int network_prediction_options,
+ bool network_prediction_enabled) {
+ switch (network_prediction_options) {
+ case chrome_browser_net::NETWORK_PREDICTION_ALWAYS:
+ return true;
+ // DNS preresolution and TCP preconnect are performed even on cellular
+ // networks if the user setting is WIFI_ONLY.
+ case chrome_browser_net::NETWORK_PREDICTION_WIFI_ONLY:
+ return true;
+ case chrome_browser_net::NETWORK_PREDICTION_NEVER:
+ return false;
+ case chrome_browser_net::NETWORK_PREDICTION_UNSET:
+ return network_prediction_enabled;
default:
NOTREACHED() << "Unknown kNetworkPredictionOptions value.";
return false;
@@ -67,19 +86,38 @@
}
}
-bool CanPredictNetworkActionsIO(ProfileIOData* profile_io_data) {
+bool CanPrefetchAndPrerenderIO(ProfileIOData* profile_io_data) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
DCHECK(profile_io_data);
-
- return CanPredictNetworkActions(
+ return CanPrefetchAndPrerender(
profile_io_data->network_prediction_options()->GetValue(),
profile_io_data->network_prediction_enabled()->GetValue());
}
-bool CanPredictNetworkActionsUI(PrefService* prefs) {
+bool CanPrefetchAndPrerenderUI(PrefService* prefs) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
DCHECK(prefs);
- return CanPredictNetworkActions(
+ return CanPrefetchAndPrerender(
+ prefs->GetInteger(prefs::kNetworkPredictionOptions),
+ prefs->GetBoolean(prefs::kNetworkPredictionEnabled));
+}
+
+bool CanPredictNetworkActionsUI(PrefService* prefs) {
+ return CanPrefetchAndPrerenderUI(prefs);
+}
+
+bool CanPreresolveAndPreconnectIO(ProfileIOData* profile_io_data) {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
+ DCHECK(profile_io_data);
+ return CanPreresolveAndPreconnect(
+ profile_io_data->network_prediction_options()->GetValue(),
+ profile_io_data->network_prediction_enabled()->GetValue());
+}
+
+bool CanPreresolveAndPreconnectUI(PrefService* prefs) {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+ DCHECK(prefs);
+ return CanPreresolveAndPreconnect(
prefs->GetInteger(prefs::kNetworkPredictionOptions),
prefs->GetBoolean(prefs::kNetworkPredictionEnabled));
}