Enhance global settings for carrier-specific "avoid bad WiFi" behavior
Previously, the "avoid bad WiFi" global setting was limited to a single boolean value (0 or 1), preventing granular control for multiple carriers. This commit introduces support for carrier-aware "avoid bad WiFi" configurations using a new, extensible format: "subId1,value1;subId2,value2;...". This allows different `subId`s (carriers) to have their own specific "avoid bad WiFi" settings. Flag: EXEMPT mainline Bug: 410976315 Test: atest ConnectivityCoverageTests:android.net.connectivity.com.android.server.connectivity.MultinetworkPolicyTrackerTest Change-Id: I118cff67c0c632778f73649999ee63e6f0e6fb17
This commit is contained in:
parent
92e23acebb
commit
cbdfd9f54b
1 changed files with 99 additions and 13 deletions
|
|
@ -23,6 +23,7 @@ import android.net.ConnectivityManager.MULTIPATH_PREFERENCE_HANDOVER
|
|||
import android.net.ConnectivityManager.MULTIPATH_PREFERENCE_PERFORMANCE
|
||||
import android.net.ConnectivityManager.MULTIPATH_PREFERENCE_RELIABILITY
|
||||
import android.net.ConnectivitySettingsManager.NETWORK_AVOID_BAD_WIFI
|
||||
import android.net.ConnectivitySettingsManager.NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI
|
||||
import android.net.ConnectivitySettingsManager.NETWORK_METERED_MULTIPATH_PREFERENCE
|
||||
import android.net.platform.flags.Flags.FLAG_AVOID_BAD_WIFI_FROM_CARRIER_CONFIG
|
||||
import android.os.Build
|
||||
|
|
@ -310,8 +311,8 @@ class MultinetworkPolicyTrackerTest(private val supportCarrierConfigManager: Boo
|
|||
@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.BAKLAVA)
|
||||
fun testAvoidBadWifiWithGlobalSetting() {
|
||||
val activeSubId = 1000
|
||||
// Mock the initial global setting to false
|
||||
Settings.Global.putString(resolver, NETWORK_AVOID_BAD_WIFI, "0")
|
||||
// Mock the initial NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI setting to false
|
||||
Settings.Global.putString(resolver, NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI, "$activeSubId,0")
|
||||
// Mock the initial carrier configuration to return true
|
||||
trackerDependencies.setAvoidBadWifiCarrierConfigForSubId(activeSubId, true)
|
||||
|
||||
|
|
@ -330,12 +331,51 @@ class MultinetworkPolicyTrackerTest(private val supportCarrierConfigManager: Boo
|
|||
assertFalse(tracker.avoidBadWifi)
|
||||
assertTrue(tracker.activelyPreferBadWifi)
|
||||
|
||||
// Mock the initial global setting to true
|
||||
Settings.Global.putString(resolver, NETWORK_AVOID_BAD_WIFI, "1")
|
||||
// Mock the NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI setting to true
|
||||
Settings.Global.putString(resolver, NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI, "$activeSubId,1")
|
||||
// Mock the initial carrier configuration to return false
|
||||
trackerDependencies.setAvoidBadWifiCarrierConfigForSubId(activeSubId, false)
|
||||
|
||||
// Assert that the tracker's avoidBadWifi flag is true based on global setting
|
||||
// Assert that the tracker's avoidBadWifi flag is true based on carrier aware setting
|
||||
assertTrue(tracker.updateAvoidBadWifi())
|
||||
assertTrue(tracker.avoidBadWifi)
|
||||
assertTrue(tracker.activelyPreferBadWifi)
|
||||
|
||||
val testSubId = 1001
|
||||
// Mock the NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI setting to multiple carrier setting
|
||||
Settings.Global.putString(
|
||||
resolver,
|
||||
NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI,
|
||||
"$activeSubId, 0;$testSubId, 1"
|
||||
)
|
||||
|
||||
// Assert that the tracker's avoidBadWifi flag is false based on carrier aware setting
|
||||
assertTrue(tracker.updateAvoidBadWifi())
|
||||
assertFalse(tracker.avoidBadWifi)
|
||||
assertTrue(tracker.activelyPreferBadWifi)
|
||||
|
||||
// Simulate a change in the active data subscription ID to testSubId.
|
||||
listener.onActiveDataSubscriptionIdChanged(testSubId)
|
||||
|
||||
// Assert that the tracker's avoidBadWifi flag is true based on carrier aware setting
|
||||
assertTrue(tracker.avoidBadWifi)
|
||||
assertTrue(tracker.activelyPreferBadWifi)
|
||||
|
||||
// Unset NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI setting,
|
||||
// it check NETWORK_AVOID_BAD_WIFI setting for backward compatible
|
||||
Settings.Global.putString(resolver, NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI, null)
|
||||
// Mock the NETWORK_AVOID_BAD_WIFI setting to setting
|
||||
Settings.Global.putString(resolver, NETWORK_AVOID_BAD_WIFI, "0")
|
||||
|
||||
// Assert that the tracker's avoidBadWifi flag is true based on setting
|
||||
assertTrue(tracker.updateAvoidBadWifi())
|
||||
assertFalse(tracker.avoidBadWifi)
|
||||
assertTrue(tracker.activelyPreferBadWifi)
|
||||
|
||||
// Mock the NETWORK_AVOID_BAD_WIFI setting to setting
|
||||
Settings.Global.putString(resolver, NETWORK_AVOID_BAD_WIFI, "1")
|
||||
|
||||
// Assert that the tracker's avoidBadWifi flag is true based on setting
|
||||
assertTrue(tracker.updateAvoidBadWifi())
|
||||
assertTrue(tracker.avoidBadWifi)
|
||||
assertTrue(tracker.activelyPreferBadWifi)
|
||||
|
|
|
|||
Loading…
Reference in a new issue