Provide a way to override the avoid bad wifi configuration
ConnectivityManager.setAvoidUnvalidated only works if the config_networkAvoidBadWifi configuration is set to 0 and the NETWORK_AVOID_BAD_WIFI setting is unset. There is no easy way for a testing app to temporary set a test value to verify the behavior of the API. Thus, add a mechanism to allow test app to set a period of time to temporary unstrict the resource configuration, i.e. Temporary simulate config_networkAvoidBadWifi configured to 0. Bug: 186061922 Test: atest CtsNetTestCases FrameworksNetTests Change-Id: If772078c61a9b12926f104d5dfc9c9071e844732
This commit is contained in:
@@ -75,6 +75,7 @@ public class MultinetworkPolicyTracker {
|
||||
private volatile boolean mAvoidBadWifi = true;
|
||||
private volatile int mMeteredMultipathPreference;
|
||||
private int mActiveSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
private volatile long mTestAllowBadWifiUntilMs = 0;
|
||||
|
||||
// Mainline module can't use internal HandlerExecutor, so add an identical executor here.
|
||||
private static class HandlerExecutor implements Executor {
|
||||
@@ -162,14 +163,31 @@ public class MultinetworkPolicyTracker {
|
||||
* Whether the device or carrier configuration disables avoiding bad wifi by default.
|
||||
*/
|
||||
public boolean configRestrictsAvoidBadWifi() {
|
||||
final boolean allowBadWifi = mTestAllowBadWifiUntilMs > 0
|
||||
&& mTestAllowBadWifiUntilMs > System.currentTimeMillis();
|
||||
// If the config returns true, then avoid bad wifi design can be controlled by the
|
||||
// NETWORK_AVOID_BAD_WIFI setting.
|
||||
if (allowBadWifi) return true;
|
||||
|
||||
// TODO: use R.integer.config_networkAvoidBadWifi directly
|
||||
final int id = mResources.get().getIdentifier("config_networkAvoidBadWifi",
|
||||
"integer", mResources.getResourcesContext().getPackageName());
|
||||
return (getResourcesForActiveSubId().getInteger(id) == 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Temporarily allow bad wifi to override {@code config_networkAvoidBadWifi} configuration.
|
||||
* The value works when the time set is more than {@link System.currentTimeMillis()}.
|
||||
*/
|
||||
public void setTestAllowBadWifiUntil(long timeMs) {
|
||||
Log.d(TAG, "setTestAllowBadWifiUntil: " + mTestAllowBadWifiUntilMs);
|
||||
mTestAllowBadWifiUntilMs = timeMs;
|
||||
updateAvoidBadWifi();
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@NonNull
|
||||
private Resources getResourcesForActiveSubId() {
|
||||
protected Resources getResourcesForActiveSubId() {
|
||||
return SubscriptionManager.getResourcesForSubId(
|
||||
mResources.getResourcesContext(), mActiveSubId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user