Support ignoring penalty for bad wifi networks
am: c8e9e1229a
Change-Id: I6666ee45e9a08c02444c6268b2232bbe8aa2adec
This commit is contained in:
@@ -7450,6 +7450,12 @@ public final class Settings {
|
||||
public static final String NETWORK_SWITCH_NOTIFICATION_RATE_LIMIT_MILLIS =
|
||||
"network_switch_notification_rate_limit_millis";
|
||||
|
||||
/**
|
||||
* Whether to automatically switch away from wifi networks that lose Internet access.
|
||||
* @hide
|
||||
*/
|
||||
public static final String NETWORK_AVOID_BAD_WIFI = "network_avoid_bad_wifi";
|
||||
|
||||
/**
|
||||
* Whether Wifi display is enabled/disabled
|
||||
* 0=disabled. 1=enabled.
|
||||
|
||||
@@ -275,6 +275,11 @@
|
||||
<string-array translatable="false" name="config_networkNotifySwitches">
|
||||
</string-array>
|
||||
|
||||
<!-- Whether the device should automatically switch away from Wi-Fi networks that lose
|
||||
Internet access. Actual device behaviour is controlled by
|
||||
Settings.Global.NETWORK_AVOID_BAD_WIFI. This is the default value of that setting. -->
|
||||
<integer translatable="false" name="config_networkAvoidBadWifi">1</integer>
|
||||
|
||||
<!-- List of regexpressions describing the interface (if any) that represent tetherable
|
||||
USB interfaces. If the device doesn't want to support tethering over USB this should
|
||||
be empty. An example would be "usb.*" -->
|
||||
|
||||
@@ -1747,6 +1747,7 @@
|
||||
<java-symbol type="integer" name="config_networkTransitionTimeout" />
|
||||
<java-symbol type="integer" name="config_networkNotifySwitchType" />
|
||||
<java-symbol type="array" name="config_networkNotifySwitches" />
|
||||
<java-symbol type="integer" name="config_networkAvoidBadWifi" />
|
||||
<java-symbol type="integer" name="config_notificationsBatteryFullARGB" />
|
||||
<java-symbol type="integer" name="config_notificationsBatteryLedOff" />
|
||||
<java-symbol type="integer" name="config_notificationsBatteryLedOn" />
|
||||
|
||||
@@ -2735,6 +2735,15 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
PROMPT_UNVALIDATED_DELAY_MS);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
public boolean avoidBadWifi() {
|
||||
int defaultAvoidBadWifi =
|
||||
mContext.getResources().getInteger(R.integer.config_networkAvoidBadWifi);
|
||||
int avoid = Settings.Global.getInt(mContext.getContentResolver(),
|
||||
Settings.Global.NETWORK_AVOID_BAD_WIFI, defaultAvoidBadWifi);
|
||||
return avoid == 1;
|
||||
}
|
||||
|
||||
private void handlePromptUnvalidated(Network network) {
|
||||
if (VDBG) log("handlePromptUnvalidated " + network);
|
||||
NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(network);
|
||||
|
||||
@@ -115,6 +115,7 @@ import java.util.TreeSet;
|
||||
// is satisfying one or more background NetworkRequests it is kept up in the background. If it is
|
||||
// not, ConnectivityService disconnects the NetworkAgent's AsyncChannel.
|
||||
public class NetworkAgentInfo implements Comparable<NetworkAgentInfo> {
|
||||
|
||||
public NetworkInfo networkInfo;
|
||||
// This Network object should always be used if possible, so as to encourage reuse of the
|
||||
// enclosed socket factory and connection pool. Avoid creating other Network objects.
|
||||
@@ -415,13 +416,20 @@ public class NetworkAgentInfo implements Comparable<NetworkAgentInfo> {
|
||||
}
|
||||
|
||||
int score = currentScore;
|
||||
if (!lastValidated && !pretendValidated) {
|
||||
if (!lastValidated && !pretendValidated && !ignoreWifiUnvalidationPenalty()) {
|
||||
score -= UNVALIDATED_SCORE_PENALTY;
|
||||
}
|
||||
if (score < 0) score = 0;
|
||||
return score;
|
||||
}
|
||||
|
||||
// Return true on devices configured to ignore score penalty for wifi networks
|
||||
// that become unvalidated (b/31075769).
|
||||
private boolean ignoreWifiUnvalidationPenalty() {
|
||||
boolean isWifi = networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI);
|
||||
return isWifi && !mConnService.avoidBadWifi() && everValidated;
|
||||
}
|
||||
|
||||
// Get the current score for this Network. This may be modified from what the
|
||||
// NetworkAgent sent, as it has modifiers applied to it.
|
||||
public int getCurrentScore() {
|
||||
|
||||
Reference in New Issue
Block a user