From 1bfe0862998c1cfaf2f99cb98ae2007adea54df2 Mon Sep 17 00:00:00 2001 From: Jimi Chen Date: Fri, 13 Jun 2025 13:51:56 +0000 Subject: [PATCH] Enable per-subId 'avoid bad Wi-Fi' setting storage Breaks out the `network_carrier_aware_avoid_bad_wifi` setting from a single string key into individual `Global.Settings` entries per subscription ID. Flag: EXEMPT mainline Bug: 424330991 Test: atest ConnectivityCoverageTests:android.net.connectivity.android.net.ConnectivitySettingsManagerTest Change-Id: Ida673c1b8b915719b8e64ea85a66c2b98862e5f5 --- .../net/ConnectivitySettingsManager.java | 79 ++++-------- .../util/ConnectivitySettingsUtils.java | 109 ++++------------- .../net/ConnectivitySettingsManagerTest.kt | 115 ++++++++---------- 3 files changed, 107 insertions(+), 196 deletions(-) diff --git a/framework/src/android/net/ConnectivitySettingsManager.java b/framework/src/android/net/ConnectivitySettingsManager.java index 502c55d83b..db0b66c452 100644 --- a/framework/src/android/net/ConnectivitySettingsManager.java +++ b/framework/src/android/net/ConnectivitySettingsManager.java @@ -22,11 +22,9 @@ import static android.net.ConnectivityManager.MULTIPATH_PREFERENCE_RELIABILITY; import static com.android.net.module.util.ConnectivitySettingsUtils.getNetworkLegacyGlobalAvoidBadWifiSetting; import static com.android.net.module.util.ConnectivitySettingsUtils.getNetworkAvoidBadWifiSetting; -import static com.android.net.module.util.ConnectivitySettingsUtils.convertCarrierAwareSettingsStringToMap; import static com.android.net.module.util.ConnectivitySettingsUtils.getPrivateDnsModeAsString; import static com.android.net.module.util.ConnectivitySettingsUtils.setNetworkLegacyGlobalAvoidBadWifiSetting; import static com.android.net.module.util.ConnectivitySettingsUtils.setNetworkAvoidBadWifiSetting; -import static com.android.net.module.util.ConnectivitySettingsUtils.convertCarrierAwareSettingsMapToString; import android.annotation.FlaggedApi; import android.annotation.IntDef; @@ -57,7 +55,6 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.time.Duration; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.StringJoiner; @@ -384,6 +381,9 @@ public class ConnectivitySettingsManager { public static final String NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI = "network_carrier_aware_avoid_bad_wifi"; + private static final boolean DEFAULT_AVOID_BAD_WIFI = true; + private static final boolean DEFAULT_SHOULD_SHOW_AVOID_BAD_WIFI = false; + /** @hide */ @Retention(RetentionPolicy.SOURCE) @IntDef(value = { @@ -1043,35 +1043,21 @@ public class ConnectivitySettingsManager { @FlaggedApi(Flags.FLAG_CARRIER_AWARE_AVOID_BAD_WIFI) public static void setNetworkAvoidBadWifi(@NonNull Context context, int subId, @NetworkAvoidBadWifi int value) { - final String setting = getNetworkAvoidBadWifiSetting(context); - final Map settingMap = - convertCarrierAwareSettingsStringToMap(setting); + final String config; if (value == NETWORK_AVOID_BAD_WIFI_IGNORE) { - settingMap.put(subId, false); + config = "0"; } else if (value == NETWORK_AVOID_BAD_WIFI_AVOID) { - settingMap.put(subId, true); + config = "1"; } else if (value == NETWORK_AVOID_BAD_WIFI_PROMPT) { - settingMap.remove(subId); + config = null; } else { throw new IllegalArgumentException("Invalid avoid bad wifi setting"); } - if (settingMap.isEmpty()) { - setNetworkAvoidBadWifiSetting(context, null); - } else { - setNetworkAvoidBadWifiSetting( - context, - convertCarrierAwareSettingsMapToString(context, settingMap) - ); - } - // for backward compatibility, write to the old avoid bad wifi settings as well. - if (settingMap.containsKey(subId)) { - setNetworkLegacyGlobalAvoidBadWifiSetting(context, settingMap.get(subId) ? "1" : "0"); - } else { - setNetworkLegacyGlobalAvoidBadWifiSetting(context, null); - } + setNetworkAvoidBadWifiSetting(context, subId, config); + setNetworkLegacyGlobalAvoidBadWifiSetting(context, config); } /** @@ -1084,36 +1070,25 @@ public class ConnectivitySettingsManager { */ @FlaggedApi(Flags.FLAG_CARRIER_AWARE_AVOID_BAD_WIFI) public static boolean getNetworkAvoidBadWifi(@NonNull Context context, int subId) { - final String setting = - getNetworkAvoidBadWifiSetting(context); - final boolean defaultConfig = true; + final String setting = getNetworkAvoidBadWifiSetting(context, subId); // check new avoid bad wifi setting first if it's set - if (setting != null) { - final Map settingMap = - convertCarrierAwareSettingsStringToMap(setting); - if (settingMap.containsKey(subId)) { - return settingMap.get(subId); - } - } + if (setting != null) return !setting.equals("0"); // for backward compatibility, read the old avoid bad wifi settings if new key is not set. final String oldSetting = getNetworkLegacyGlobalAvoidBadWifiSetting(context); - if (oldSetting != null) { - if (oldSetting.equals("1")) { - return true; - } else if (oldSetting.equals("0")) { - return false; - } - } + if (oldSetting != null) return !oldSetting.equals("0"); // read carrier config if both new and old settings is not set. final CarrierConfigManager ccm = context.getSystemService(CarrierConfigManager.class); - if (ccm == null) return defaultConfig; + if (ccm == null) return DEFAULT_AVOID_BAD_WIFI; final PersistableBundle config = getConfigForSubId(ccm, subId, CarrierConfigManager.KEY_AVOID_BAD_WIFI_BOOL); - return config.getBoolean(CarrierConfigManager.KEY_AVOID_BAD_WIFI_BOOL, defaultConfig); + return config.getBoolean( + CarrierConfigManager.KEY_AVOID_BAD_WIFI_BOOL, + DEFAULT_AVOID_BAD_WIFI + ); } /** @@ -1130,21 +1105,18 @@ public class ConnectivitySettingsManager { */ @FlaggedApi(Flags.FLAG_CARRIER_AWARE_AVOID_BAD_WIFI) public static boolean shouldShowAvoidBadWifiToggle(@NonNull Context context, int subId) { - final String setting = - getNetworkAvoidBadWifiSetting(context); - final CarrierConfigManager ccm = context.getSystemService(CarrierConfigManager.class); - final boolean defaultConfig = true; - final boolean defaultDisplay = false; + final String setting = getNetworkAvoidBadWifiSetting(context, subId); // check new avoid bad wifi setting first if it's set if (setting != null) return true; // for backward compatibility, read the old avoid bad wifi if new setting is not set. - final String oldSetting = getNetworkLegacyGlobalAvoidBadWifiSetting(context); - if (oldSetting != null) return true; + final String legacySetting = getNetworkLegacyGlobalAvoidBadWifiSetting(context); + if (legacySetting != null) return true; // default to false if system does not support CarrierConfigManager - if (ccm == null) return defaultDisplay; + final CarrierConfigManager ccm = context.getSystemService(CarrierConfigManager.class); + if (ccm == null) return DEFAULT_SHOULD_SHOW_AVOID_BAD_WIFI; final PersistableBundle config = getConfigForSubId( ccm, @@ -1153,7 +1125,8 @@ public class ConnectivitySettingsManager { CarrierConfigManager.KEY_SHOW_AVOID_BAD_WIFI_TOGGLE_BOOL ); - if (!config.getBoolean(CarrierConfigManager.KEY_AVOID_BAD_WIFI_BOOL, defaultConfig)) { + if (!config.getBoolean( + CarrierConfigManager.KEY_AVOID_BAD_WIFI_BOOL, DEFAULT_AVOID_BAD_WIFI)) { // It should not be possible to force a device to be stuck on bad wifi // and not give the user an option to change this, so if the device doesn't // avoid bad wifi, show the toggle even if KEY_SHOW_AVOID_BAD_WIFI_TOGGLE_BOOL @@ -1162,7 +1135,9 @@ public class ConnectivitySettingsManager { } return config.getBoolean( - CarrierConfigManager.KEY_SHOW_AVOID_BAD_WIFI_TOGGLE_BOOL, defaultDisplay); + CarrierConfigManager.KEY_SHOW_AVOID_BAD_WIFI_TOGGLE_BOOL, + DEFAULT_SHOULD_SHOW_AVOID_BAD_WIFI + ); } diff --git a/staticlibs/framework/com/android/net/module/util/ConnectivitySettingsUtils.java b/staticlibs/framework/com/android/net/module/util/ConnectivitySettingsUtils.java index 48b6438e5b..9f2eef19db 100644 --- a/staticlibs/framework/com/android/net/module/util/ConnectivitySettingsUtils.java +++ b/staticlibs/framework/com/android/net/module/util/ConnectivitySettingsUtils.java @@ -22,10 +22,6 @@ import android.content.ContentResolver; import android.content.Context; import android.provider.Settings; import android.text.TextUtils; -import android.util.ArrayMap; -import android.util.Log; - -import java.util.Map; /** * Collection of connectivity settings utilities. @@ -88,6 +84,23 @@ public class ConnectivitySettingsUtils { } } + /** + * Generates a unique setting key for the "avoid bad Wi-Fi" feature, + * specific to a given cellular subscription ID. + * This key is typically used to store and retrieve a preference + * that controls how the device manages Wi-Fi connectivity + * in the context of a particular cellular carrier. + * + * @param subId The unique identifier of the cellular subscription. + * @return A {@code String} representing the unique setting key. + * The key is constructed by appending the {@code subId} to a + * base constant string for carrier-aware "avoid bad Wi-Fi" settings, + * separated by a forward slash. + */ + public static String getAvoidBadWifiSettingKey(int subId) { + return NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI + "/" + subId; + } + /** * Get private DNS mode from settings. * @@ -172,15 +185,16 @@ public class ConnectivitySettingsUtils { * Set the carrier-aware avoid bad wifi to {@link Settings}. * * @param context The {@link Context} to set the setting. - * @param setting The desired setting string, formatted as "subId1,value1;subId2,value2". + * @param subId The subscription ID + * @param setting The desired setting string. * subId: The carrier subscription ID (integer). * value: "0" to not avoid bad Wi-Fi for this subscription, or "1" to avoid. * {@code null}: Ask the user whether to switch away from bad Wi-Fi. */ public static void setNetworkAvoidBadWifiSetting( - @NonNull Context context, @Nullable String setting) { + @NonNull Context context, int subId, @Nullable String setting) { Settings.Global.putString( - context.getContentResolver(), NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI, setting); + context.getContentResolver(), getAvoidBadWifiSettingKey(subId), setting); } /** @@ -188,84 +202,13 @@ public class ConnectivitySettingsUtils { * @see #convertCarrierAwareSettingsStringToMap(String) * * @param context The {@link Context} to set the setting. - * @return The current setting string, formatted as "subId1,value1;subId2,value2", - * or {@code null} if the setting is not set. + * @param subId The subscription ID. + * @return The current setting string, formatted as + * "network_carrier_aware_avoid_bad_wifi/{subId}" or {@code null} if the setting is not set. */ @Nullable - public static String getNetworkAvoidBadWifiSetting(@NonNull Context context) { + public static String getNetworkAvoidBadWifiSetting(@NonNull Context context, int subId) { return Settings.Global.getString( - context.getContentResolver(), NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI); - } - - /** - * Parses the carrier-aware Wi-Fi avoid bad wifi setting string into a map. - * - * @param setting The setting string, typically retrieved from - * {@link #getNetworkAvoidBadWifiSetting(Context)}. - * Expected format is "subId1,value1;subId2,value2". - * @return A {@link Map} where keys are carrier subscription IDs ({@link Integer}) - * and values are booleans indicating whether to avoid bad Wi-Fi ({@code true} for avoid, - * {@code false} for not avoid). - * Returns an empty map if the input setting is null or invalid. - */ - @NonNull - public static Map convertCarrierAwareSettingsStringToMap( - @Nullable String setting) { - final ArrayMap settingMap = new ArrayMap<>(); - if (setting == null) { - return settingMap; - } - - for (String entry: setting.split(";")) { - final String[] parts = entry.split(","); - if (parts.length != 2) { - Log.e(TAG, "invalid setting string: " + entry); - continue; - } - - try { - int subId = Integer.parseInt(parts[0].trim()); - boolean value = Integer.parseInt(parts[1].trim()) != 0; - settingMap.put(subId, value); - } catch (NumberFormatException e) { - Log.e(TAG, "invalid setting string " + entry); - } - } - - return settingMap; - } - - /** - * Converts a map of carrier subscription IDs to Wi-Fi avoidance preferences into a string. - * - * @param context The application context. - * @param settingMap A {@link Map} where keys are carrier subscription IDs ({@link Integer}) - * and values are booleans indicating whether to avoid bad Wi-Fi ({@code true} for avoid, - * {@code false} for not avoid). - * This map will be converted into a "subId,value;subId2,value2" string format. - * @return A string representing the carrier-aware Wi-Fi avoidance settings, - * or {@code null} if the provided {@code settingMap} is empty. - * The format is "subId1,value1;subId2,value2". - */ - @Nullable - public static String convertCarrierAwareSettingsMapToString( - @NonNull Context context, @NonNull Map settingMap) { - if (settingMap.isEmpty()) return null; - - final StringBuilder sb = new StringBuilder(); - int index = 0; - - for (Map.Entry entry: settingMap.entrySet()) { - final String valueStr = entry.getValue() ? "1" : "0"; - sb.append(entry.getKey()) - .append(",") - .append(valueStr); - if (index < settingMap.size() - 1) { - sb.append(";"); - } - index++; - } - - return sb.toString(); + context.getContentResolver(), getAvoidBadWifiSettingKey(subId)); } } diff --git a/tests/common/java/android/net/ConnectivitySettingsManagerTest.kt b/tests/common/java/android/net/ConnectivitySettingsManagerTest.kt index c7ba27e7f4..24e5c5ea4c 100644 --- a/tests/common/java/android/net/ConnectivitySettingsManagerTest.kt +++ b/tests/common/java/android/net/ConnectivitySettingsManagerTest.kt @@ -74,7 +74,7 @@ import android.telephony.SubscriptionManager import android.util.Range import androidx.test.InstrumentationRegistry import androidx.test.filters.SmallTest -import com.android.net.module.util.ConnectivitySettingsUtils.convertCarrierAwareSettingsStringToMap +import com.android.net.module.util.ConnectivitySettingsUtils.getAvoidBadWifiSettingKey import com.android.net.module.util.ConnectivitySettingsUtils.getNetworkAvoidBadWifiSetting import com.android.net.module.util.ConnectivitySettingsUtils.getNetworkLegacyGlobalAvoidBadWifiSetting import com.android.net.module.util.ConnectivitySettingsUtils.getPrivateDnsModeAsString @@ -135,16 +135,10 @@ class ConnectivitySettingsManagerTest { } } - private fun assertAvoidBadWifiSettingEquals(expected: String?, setting: String?) { - // The conversion is necessary because the strings may not be in the same order. - assertEquals( - convertCarrierAwareSettingsStringToMap( - expected - ), - convertCarrierAwareSettingsStringToMap( - setting - ) - ) + private fun assertAvoidBadWifiSettingEquals(expect: Array>) { + for ((subId, value) in expect) { + assertEquals(value, getNetworkAvoidBadWifiSetting(context, subId)) + } } fun testIntSetting( @@ -418,16 +412,18 @@ class ConnectivitySettingsManagerTest { @Test @IgnoreUpTo(Build.VERSION_CODES.BAKLAVA) fun testSetNetworkAvoidBadWifiWithSettings() { - val orgCarrierAwareSetting = getNetworkAvoidBadWifiSetting(context) - val orgSetting = getNetworkLegacyGlobalAvoidBadWifiSetting(context) + val testSubId = 1000 + val orgDefaultSubIdSetting = getNetworkAvoidBadWifiSetting(context, defaultSubId) + val orgTestSubIdSetting = getNetworkAvoidBadWifiSetting(context, testSubId) + val orgLegacySetting = getNetworkLegacyGlobalAvoidBadWifiSetting(context) try { // initialize NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI and NETWORK_AVOID_BAD_WIFI to null - setNetworkAvoidBadWifiSetting(context, null) + setNetworkAvoidBadWifiSetting(context, defaultSubId, null) setNetworkLegacyGlobalAvoidBadWifiSetting(context, null) - val testSubId = 1000 // test with if new key NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI is set. - // format: "subId1,value1;subId2,value2;..." + // format: key: "network_carrier_aware_avoid_bad_wifi/{subId}" + // value: "value" // and if old key NETWORK_AVOID_BAD_WIFI is set as well. // format: "value" setNetworkAvoidBadWifi( @@ -436,8 +432,7 @@ class ConnectivitySettingsManagerTest { ConnectivitySettingsManager.NETWORK_AVOID_BAD_WIFI_AVOID ) assertAvoidBadWifiSettingEquals( - "$defaultSubId,1", - getNetworkAvoidBadWifiSetting(context) + arrayOf(Pair(defaultSubId, "1")) ) assertEquals( "1", @@ -450,8 +445,7 @@ class ConnectivitySettingsManagerTest { ConnectivitySettingsManager.NETWORK_AVOID_BAD_WIFI_IGNORE ) assertAvoidBadWifiSettingEquals( - "$defaultSubId,0", - getNetworkAvoidBadWifiSetting(context) + arrayOf(Pair(defaultSubId, "0")) ) assertEquals( "0", @@ -464,8 +458,10 @@ class ConnectivitySettingsManagerTest { ConnectivitySettingsManager.NETWORK_AVOID_BAD_WIFI_AVOID ) assertAvoidBadWifiSettingEquals( - "$defaultSubId,0;$testSubId,1", - getNetworkAvoidBadWifiSetting(context) + arrayOf( + Pair(defaultSubId, "0"), + Pair(testSubId, "1") + ) ) assertEquals( "1", @@ -478,8 +474,10 @@ class ConnectivitySettingsManagerTest { ConnectivitySettingsManager.NETWORK_AVOID_BAD_WIFI_IGNORE ) assertAvoidBadWifiSettingEquals( - "$defaultSubId,0;$testSubId,0", - getNetworkAvoidBadWifiSetting(context) + arrayOf( + Pair(defaultSubId, "0"), + Pair(testSubId, "0") + ) ) assertEquals( "0", @@ -492,8 +490,10 @@ class ConnectivitySettingsManagerTest { ConnectivitySettingsManager.NETWORK_AVOID_BAD_WIFI_PROMPT ) assertAvoidBadWifiSettingEquals( - "$defaultSubId,0", - getNetworkAvoidBadWifiSetting(context) + arrayOf( + Pair(defaultSubId, "0"), + Pair(testSubId, null) + ) ) assertEquals( null, @@ -506,8 +506,10 @@ class ConnectivitySettingsManagerTest { ConnectivitySettingsManager.NETWORK_AVOID_BAD_WIFI_PROMPT ) assertAvoidBadWifiSettingEquals( - null, - getNetworkAvoidBadWifiSetting(context) + arrayOf( + Pair(defaultSubId, null), + Pair(testSubId, null) + ) ) assertEquals( null, @@ -515,9 +517,17 @@ class ConnectivitySettingsManagerTest { ) } finally { resetSettings( - names = arrayOf(NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI, NETWORK_AVOID_BAD_WIFI), + names = arrayOf( + getAvoidBadWifiSettingKey(defaultSubId), + getAvoidBadWifiSettingKey(testSubId), + NETWORK_AVOID_BAD_WIFI + ), type = settingsTypeGlobal, - values = arrayOf(orgCarrierAwareSetting, orgSetting) + values = arrayOf( + orgDefaultSubIdSetting, + orgTestSubIdSetting, + orgLegacySetting + ) ) } } @@ -525,30 +535,13 @@ class ConnectivitySettingsManagerTest { @Test @IgnoreUpTo(Build.VERSION_CODES.BAKLAVA) fun testGetNetworkAvoidBadWifiWithCarrierAwareSettings() { - val original = getNetworkAvoidBadWifiSetting(context) + val original = getNetworkAvoidBadWifiSetting(context, defaultSubId) try { - setNetworkAvoidBadWifiSetting(context, "$defaultSubId,1") - assertTrue(getNetworkAvoidBadWifi(context, defaultSubId)) - - setNetworkAvoidBadWifiSetting(context, "$defaultSubId,0") + setNetworkAvoidBadWifiSetting(context, defaultSubId, "0") assertFalse(getNetworkAvoidBadWifi(context, defaultSubId)) - val testSubId = 1000 - setNetworkAvoidBadWifiSetting(context, "$defaultSubId,0;$testSubId,1") - assertFalse(getNetworkAvoidBadWifi(context, defaultSubId)) - assertTrue(getNetworkAvoidBadWifi(context, testSubId)) - - setNetworkAvoidBadWifiSetting(context, "$defaultSubId,0;$testSubId,0") - assertFalse(getNetworkAvoidBadWifi(context, defaultSubId)) - assertFalse(getNetworkAvoidBadWifi(context, testSubId)) - - setNetworkAvoidBadWifiSetting(context, "$defaultSubId,1;$testSubId,0") + setNetworkAvoidBadWifiSetting(context, defaultSubId, "1") assertTrue(getNetworkAvoidBadWifi(context, defaultSubId)) - assertFalse(getNetworkAvoidBadWifi(context, testSubId)) - - setNetworkAvoidBadWifiSetting(context, "$defaultSubId,1;$testSubId,1") - assertTrue(getNetworkAvoidBadWifi(context, defaultSubId)) - assertTrue(getNetworkAvoidBadWifi(context, testSubId)) } finally { resetSettings( names = arrayOf(NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI), @@ -561,12 +554,12 @@ class ConnectivitySettingsManagerTest { @Test @IgnoreUpTo(Build.VERSION_CODES.BAKLAVA) fun testGetNetworkAvoidBadWifiWithSettings() { - val orgCarrierAwareSetting = getNetworkAvoidBadWifiSetting(context) + val orgCarrierAwareSetting = getNetworkAvoidBadWifiSetting(context, defaultSubId) val orgSetting = getNetworkLegacyGlobalAvoidBadWifiSetting(context) try { // test if NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI is not set, // then it check NETWORK_AVOID_BAD_WIFI for backward compatibility. - setNetworkAvoidBadWifiSetting(context, null) + setNetworkAvoidBadWifiSetting(context, defaultSubId, null) val testSubId = 1000 setNetworkLegacyGlobalAvoidBadWifiSetting(context, "0") @@ -588,12 +581,12 @@ class ConnectivitySettingsManagerTest { @Test @IgnoreUpTo(Build.VERSION_CODES.BAKLAVA) fun testGetNetworkAvoidBadWifiWithCarrierConfig() { - val orgCarrierAwareSetting = getNetworkAvoidBadWifiSetting(context) + val orgCarrierAwareSetting = getNetworkAvoidBadWifiSetting(context, defaultSubId) val orgSetting = getNetworkLegacyGlobalAvoidBadWifiSetting(context) try { // unset the global settings, then it depends on the carrier config mCarrierConfigRule.acquireCarrierPrivilege(defaultSubId) - setNetworkAvoidBadWifiSetting(context, null) + setNetworkAvoidBadWifiSetting(context, defaultSubId, null) setNetworkLegacyGlobalAvoidBadWifiSetting(context, null) // default should be true if no carrier config key is set @@ -616,25 +609,25 @@ class ConnectivitySettingsManagerTest { @Test @IgnoreUpTo(Build.VERSION_CODES.BAKLAVA) fun testShouldShowAvoidBadWifiToggleWithSettings() { - val orgCarrierAwareSetting = getNetworkAvoidBadWifiSetting(context) + val orgCarrierAwareSetting = getNetworkAvoidBadWifiSetting(context, defaultSubId) val orgSetting = getNetworkLegacyGlobalAvoidBadWifiSetting(context) try { // unset the NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI, and NETWORK_AVOID_BAD_WIFI, // it should be false since no carrier config is set - setNetworkAvoidBadWifiSetting(context, null) + setNetworkAvoidBadWifiSetting(context, defaultSubId, null) setNetworkLegacyGlobalAvoidBadWifiSetting(context, null) assertFalse(shouldShowAvoidBadWifiToggle(context, defaultSubId)) // if any global settings is set, it should display the toggle. - setNetworkAvoidBadWifiSetting(context, "$defaultSubId,1") + setNetworkAvoidBadWifiSetting(context, defaultSubId, "1") assertTrue(shouldShowAvoidBadWifiToggle(context, defaultSubId)) - setNetworkAvoidBadWifiSetting(context, "$defaultSubId,0") + setNetworkAvoidBadWifiSetting(context, defaultSubId, "0") assertTrue(shouldShowAvoidBadWifiToggle(context, defaultSubId)) // unset the NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI, // then it check NETWORK_AVOID_BAD_WIFI for backward compatibility. - setNetworkAvoidBadWifiSetting(context, null) + setNetworkAvoidBadWifiSetting(context, defaultSubId, null) setNetworkLegacyGlobalAvoidBadWifiSetting(context, "1") assertTrue(shouldShowAvoidBadWifiToggle(context, defaultSubId)) @@ -652,13 +645,13 @@ class ConnectivitySettingsManagerTest { @Test @IgnoreUpTo(Build.VERSION_CODES.BAKLAVA) fun testShouldShowAvoidBadWifiToggleWithCarrierConfig() { - val orgCarrierAwareSetting = getNetworkAvoidBadWifiSetting(context) + val orgCarrierAwareSetting = getNetworkAvoidBadWifiSetting(context, defaultSubId) val orgSetting = getNetworkLegacyGlobalAvoidBadWifiSetting(context) try { // unset both NETWORK_CARRIER_AWARE_AVOID_BAD_WIFI and KEY_AVOID_BAD_WIFI_BOOL settings, // then it depends on the carrier config mCarrierConfigRule.acquireCarrierPrivilege(defaultSubId) - setNetworkAvoidBadWifiSetting(context, null) + setNetworkAvoidBadWifiSetting(context, defaultSubId, null) setNetworkLegacyGlobalAvoidBadWifiSetting(context, null) // default should be false if KEY_AVOID_BAD_WIFI_BOOL is not set