Loading src/android/net/util/NetworkStackUtils.java +15 −0 Original line number Diff line number Diff line Loading @@ -18,10 +18,12 @@ package android.net.util; import android.content.Context; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.provider.DeviceConfig; import android.util.Log; import android.util.SparseArray; import androidx.annotation.BoolRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; Loading Loading @@ -454,4 +456,17 @@ public class NetworkStackUtils { } return (int) value; } /** * Gets boolean config from resources. */ public static boolean getResBooleanConfig(@NonNull final Context context, @BoolRes int configResource, final boolean defaultValue) { final Resources res = context.getResources(); try { return res.getBoolean(configResource); } catch (Resources.NotFoundException e) { return defaultValue; } } } src/com/android/server/NetworkStackService.java +7 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server; import static android.net.dhcp.IDhcpServer.STATUS_INVALID_ARGUMENT; import static android.net.dhcp.IDhcpServer.STATUS_SUCCESS; import static android.net.dhcp.IDhcpServer.STATUS_UNKNOWN_ERROR; import static android.net.util.NetworkStackUtils.getResBooleanConfig; import static com.android.server.util.PermissionUtil.checkDumpPermission; Loading Loading @@ -58,6 +59,7 @@ import androidx.annotation.VisibleForTesting; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.IndentingPrintWriter; import com.android.networkstack.NetworkStackNotifier; import com.android.networkstack.R; import com.android.networkstack.apishim.common.ShimUtils; import com.android.server.connectivity.NetworkMonitor; import com.android.server.connectivity.ipmemorystore.IpMemoryStoreService; Loading Loading @@ -462,6 +464,11 @@ public class NetworkStackService extends Service { pw.decreaseIndent(); } } pw.println(); pw.print("useNeighborResource: "); pw.println(getResBooleanConfig(mContext, R.bool.config_no_sim_card_uses_neighbor_mcc, false)); } /** Loading src/com/android/server/connectivity/NetworkMonitor.java +8 −13 Original line number Diff line number Diff line Loading @@ -77,6 +77,7 @@ import static android.net.util.NetworkStackUtils.DNS_PROBE_PRIVATE_IP_NO_INTERNE import static android.net.util.NetworkStackUtils.TEST_CAPTIVE_PORTAL_HTTPS_URL; import static android.net.util.NetworkStackUtils.TEST_CAPTIVE_PORTAL_HTTP_URL; import static android.net.util.NetworkStackUtils.TEST_URL_EXPIRATION_TIME; import static android.net.util.NetworkStackUtils.getResBooleanConfig; import static android.net.util.NetworkStackUtils.isEmpty; import static android.net.util.NetworkStackUtils.isIPv6ULA; import static android.provider.DeviceConfig.NAMESPACE_CONNECTIVITY; Loading Loading @@ -150,7 +151,6 @@ import android.util.Pair; import android.util.SparseArray; import androidx.annotation.ArrayRes; import androidx.annotation.BoolRes; import androidx.annotation.IntegerRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; Loading Loading @@ -1787,7 +1787,10 @@ public class NetworkMonitor extends StateMachine { } try { final List<CellInfo> cells = mTelephonyManager.getAllCellInfo(); if (cells == null) return null; if (cells == null) { log("CellInfo is null"); return null; } final Map<String, Integer> countryCodeMap = new HashMap<>(); int maxCount = 0; for (final CellInfo cell : cells) { Loading Loading @@ -1830,6 +1833,7 @@ public class NetworkMonitor extends StateMachine { // Return customized context if carrier id can match a record in sCarrierIdToMccMnc. final MccMncOverrideInfo overrideInfo = getMccMncOverrideInfo(); if (overrideInfo != null) { log("Return customized context by MccMncOverrideInfo."); return getContextByMccMnc(overrideInfo.mcc, overrideInfo.mnc); } Loading @@ -1839,11 +1843,13 @@ public class NetworkMonitor extends StateMachine { getResBooleanConfig(mContext, R.bool.config_no_sim_card_uses_neighbor_mcc, false); if (!useNeighborResource || TelephonyManager.SIM_STATE_READY == mTelephonyManager.getSimState()) { if (useNeighborResource) log("Sim state is ready, return original context."); return mContext; } final String mcc = getLocationMcc(); if (TextUtils.isEmpty(mcc)) { log("Return original context due to getting mcc failed."); return mContext; } Loading Loading @@ -1918,17 +1924,6 @@ public class NetworkMonitor extends StateMachine { } } @VisibleForTesting boolean getResBooleanConfig(@NonNull final Context context, @BoolRes int configResource, final boolean defaultValue) { final Resources res = context.getResources(); try { return res.getBoolean(configResource); } catch (Resources.NotFoundException e) { return defaultValue; } } /** * Gets integer config from resources. */ Loading tests/unit/src/android/net/util/NetworkStackUtilsTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -34,11 +34,14 @@ import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.provider.DeviceConfig; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.networkstack.R; import org.junit.After; import org.junit.Before; import org.junit.Test; Loading Loading @@ -69,6 +72,7 @@ public class NetworkStackUtilsTest { @Mock private Context mContext; @Mock private PackageManager mPm; @Mock private PackageInfo mPi; @Mock private Resources mResources; @Before public void setUp() throws Exception { Loading @@ -81,6 +85,7 @@ public class NetworkStackUtilsTest { doReturn(mPm).when(mContext).getPackageManager(); doReturn(TEST_PACKAGE_NAME).when(mContext).getPackageName(); doReturn(pi).when(mPm).getPackageInfo(anyString(), anyInt()); doReturn(mResources).when(mContext).getResources(); } @After Loading Loading @@ -199,4 +204,18 @@ public class NetworkStackUtilsTest { assertFalse(isIPv6ULA(parseNumericAddress("fe00::"))); assertFalse(isIPv6ULA(parseNumericAddress("2480:1248::123:456"))); } @Test public void testGetResBooleanConfig() { doReturn(true).when(mResources).getBoolean(R.bool.config_no_sim_card_uses_neighbor_mcc); assertTrue(NetworkStackUtils.getResBooleanConfig(mContext, R.bool.config_no_sim_card_uses_neighbor_mcc, false)); doReturn(false).when(mResources).getBoolean(R.bool.config_no_sim_card_uses_neighbor_mcc); assertFalse(NetworkStackUtils.getResBooleanConfig(mContext, R.bool.config_no_sim_card_uses_neighbor_mcc, false)); doThrow(new Resources.NotFoundException()) .when(mResources).getBoolean(eq(R.bool.config_no_sim_card_uses_neighbor_mcc)); assertFalse(NetworkStackUtils.getResBooleanConfig(mContext, R.bool.config_no_sim_card_uses_neighbor_mcc, false)); } } No newline at end of file Loading
src/android/net/util/NetworkStackUtils.java +15 −0 Original line number Diff line number Diff line Loading @@ -18,10 +18,12 @@ package android.net.util; import android.content.Context; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.provider.DeviceConfig; import android.util.Log; import android.util.SparseArray; import androidx.annotation.BoolRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; Loading Loading @@ -454,4 +456,17 @@ public class NetworkStackUtils { } return (int) value; } /** * Gets boolean config from resources. */ public static boolean getResBooleanConfig(@NonNull final Context context, @BoolRes int configResource, final boolean defaultValue) { final Resources res = context.getResources(); try { return res.getBoolean(configResource); } catch (Resources.NotFoundException e) { return defaultValue; } } }
src/com/android/server/NetworkStackService.java +7 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server; import static android.net.dhcp.IDhcpServer.STATUS_INVALID_ARGUMENT; import static android.net.dhcp.IDhcpServer.STATUS_SUCCESS; import static android.net.dhcp.IDhcpServer.STATUS_UNKNOWN_ERROR; import static android.net.util.NetworkStackUtils.getResBooleanConfig; import static com.android.server.util.PermissionUtil.checkDumpPermission; Loading Loading @@ -58,6 +59,7 @@ import androidx.annotation.VisibleForTesting; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.IndentingPrintWriter; import com.android.networkstack.NetworkStackNotifier; import com.android.networkstack.R; import com.android.networkstack.apishim.common.ShimUtils; import com.android.server.connectivity.NetworkMonitor; import com.android.server.connectivity.ipmemorystore.IpMemoryStoreService; Loading Loading @@ -462,6 +464,11 @@ public class NetworkStackService extends Service { pw.decreaseIndent(); } } pw.println(); pw.print("useNeighborResource: "); pw.println(getResBooleanConfig(mContext, R.bool.config_no_sim_card_uses_neighbor_mcc, false)); } /** Loading
src/com/android/server/connectivity/NetworkMonitor.java +8 −13 Original line number Diff line number Diff line Loading @@ -77,6 +77,7 @@ import static android.net.util.NetworkStackUtils.DNS_PROBE_PRIVATE_IP_NO_INTERNE import static android.net.util.NetworkStackUtils.TEST_CAPTIVE_PORTAL_HTTPS_URL; import static android.net.util.NetworkStackUtils.TEST_CAPTIVE_PORTAL_HTTP_URL; import static android.net.util.NetworkStackUtils.TEST_URL_EXPIRATION_TIME; import static android.net.util.NetworkStackUtils.getResBooleanConfig; import static android.net.util.NetworkStackUtils.isEmpty; import static android.net.util.NetworkStackUtils.isIPv6ULA; import static android.provider.DeviceConfig.NAMESPACE_CONNECTIVITY; Loading Loading @@ -150,7 +151,6 @@ import android.util.Pair; import android.util.SparseArray; import androidx.annotation.ArrayRes; import androidx.annotation.BoolRes; import androidx.annotation.IntegerRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; Loading Loading @@ -1787,7 +1787,10 @@ public class NetworkMonitor extends StateMachine { } try { final List<CellInfo> cells = mTelephonyManager.getAllCellInfo(); if (cells == null) return null; if (cells == null) { log("CellInfo is null"); return null; } final Map<String, Integer> countryCodeMap = new HashMap<>(); int maxCount = 0; for (final CellInfo cell : cells) { Loading Loading @@ -1830,6 +1833,7 @@ public class NetworkMonitor extends StateMachine { // Return customized context if carrier id can match a record in sCarrierIdToMccMnc. final MccMncOverrideInfo overrideInfo = getMccMncOverrideInfo(); if (overrideInfo != null) { log("Return customized context by MccMncOverrideInfo."); return getContextByMccMnc(overrideInfo.mcc, overrideInfo.mnc); } Loading @@ -1839,11 +1843,13 @@ public class NetworkMonitor extends StateMachine { getResBooleanConfig(mContext, R.bool.config_no_sim_card_uses_neighbor_mcc, false); if (!useNeighborResource || TelephonyManager.SIM_STATE_READY == mTelephonyManager.getSimState()) { if (useNeighborResource) log("Sim state is ready, return original context."); return mContext; } final String mcc = getLocationMcc(); if (TextUtils.isEmpty(mcc)) { log("Return original context due to getting mcc failed."); return mContext; } Loading Loading @@ -1918,17 +1924,6 @@ public class NetworkMonitor extends StateMachine { } } @VisibleForTesting boolean getResBooleanConfig(@NonNull final Context context, @BoolRes int configResource, final boolean defaultValue) { final Resources res = context.getResources(); try { return res.getBoolean(configResource); } catch (Resources.NotFoundException e) { return defaultValue; } } /** * Gets integer config from resources. */ Loading
tests/unit/src/android/net/util/NetworkStackUtilsTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -34,11 +34,14 @@ import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.provider.DeviceConfig; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.networkstack.R; import org.junit.After; import org.junit.Before; import org.junit.Test; Loading Loading @@ -69,6 +72,7 @@ public class NetworkStackUtilsTest { @Mock private Context mContext; @Mock private PackageManager mPm; @Mock private PackageInfo mPi; @Mock private Resources mResources; @Before public void setUp() throws Exception { Loading @@ -81,6 +85,7 @@ public class NetworkStackUtilsTest { doReturn(mPm).when(mContext).getPackageManager(); doReturn(TEST_PACKAGE_NAME).when(mContext).getPackageName(); doReturn(pi).when(mPm).getPackageInfo(anyString(), anyInt()); doReturn(mResources).when(mContext).getResources(); } @After Loading Loading @@ -199,4 +204,18 @@ public class NetworkStackUtilsTest { assertFalse(isIPv6ULA(parseNumericAddress("fe00::"))); assertFalse(isIPv6ULA(parseNumericAddress("2480:1248::123:456"))); } @Test public void testGetResBooleanConfig() { doReturn(true).when(mResources).getBoolean(R.bool.config_no_sim_card_uses_neighbor_mcc); assertTrue(NetworkStackUtils.getResBooleanConfig(mContext, R.bool.config_no_sim_card_uses_neighbor_mcc, false)); doReturn(false).when(mResources).getBoolean(R.bool.config_no_sim_card_uses_neighbor_mcc); assertFalse(NetworkStackUtils.getResBooleanConfig(mContext, R.bool.config_no_sim_card_uses_neighbor_mcc, false)); doThrow(new Resources.NotFoundException()) .when(mResources).getBoolean(eq(R.bool.config_no_sim_card_uses_neighbor_mcc)); assertFalse(NetworkStackUtils.getResBooleanConfig(mContext, R.bool.config_no_sim_card_uses_neighbor_mcc, false)); } } No newline at end of file