Replace hidden CM#isNetworkSupported() usage

It's a refactor work for connectivity mainline module. The
hidden methods access is no longer allowed, so the usage for
isNetworkSupported() should be replaced. Settings use it to
check if device support telephony, wifi or ethernet service.
There are alternative methods to check if device supports such
features. Replace as it is.

Bug: 172183305
Test: m ; make RunSettingsRoboTests
Change-Id: I8f1d11558b1be575a0777ed195abe027e838cb74
This commit is contained in:
Chiachang Wang
2021-03-16 17:03:31 +08:00
parent 8105206432
commit ffbe4e9b1e
8 changed files with 45 additions and 61 deletions

View File

@@ -14,13 +14,15 @@
package com.android.settings;
import static android.content.pm.PackageManager.FEATURE_ETHERNET;
import static android.content.pm.PackageManager.FEATURE_WIFI;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.ConnectivityManager;
import android.net.NetworkTemplate;
import android.net.Uri;
import android.os.IBinder;
@@ -101,10 +103,10 @@ public class SettingsDumpService extends Service {
private JSONObject dumpDataUsage() throws JSONException {
JSONObject obj = new JSONObject();
DataUsageController controller = new DataUsageController(this);
ConnectivityManager connectivityManager = getSystemService(ConnectivityManager.class);
SubscriptionManager manager = this.getSystemService(SubscriptionManager.class);
TelephonyManager telephonyManager = this.getSystemService(TelephonyManager.class);
if (connectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) {
final PackageManager packageManager = this.getPackageManager();
if (telephonyManager.isDataCapable()) {
JSONArray array = new JSONArray();
for (SubscriptionInfo info : manager.getAvailableSubscriptionInfoList()) {
telephonyManager = telephonyManager
@@ -117,10 +119,11 @@ public class SettingsDumpService extends Service {
}
obj.put("cell", array);
}
if (connectivityManager.isNetworkSupported(ConnectivityManager.TYPE_WIFI)) {
if (packageManager.hasSystemFeature(FEATURE_WIFI)) {
obj.put("wifi", dumpDataUsage(NetworkTemplate.buildTemplateWifiWildcard(), controller));
}
if (connectivityManager.isNetworkSupported(ConnectivityManager.TYPE_ETHERNET)) {
if (packageManager.hasSystemFeature(FEATURE_ETHERNET)) {
obj.put("ethernet", dumpDataUsage(NetworkTemplate.buildTemplateEthernet(), controller));
}
return obj;

View File

@@ -14,13 +14,14 @@
package com.android.settings.datausage;
import static android.net.ConnectivityManager.TYPE_MOBILE;
import static android.net.ConnectivityManager.TYPE_WIFI;
import static android.content.pm.PackageManager.FEATURE_ETHERNET;
import static android.content.pm.PackageManager.FEATURE_WIFI;
import static android.telephony.TelephonyManager.SIM_STATE_READY;
import android.app.usage.NetworkStats.Bucket;
import android.app.usage.NetworkStatsManager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.NetworkTemplate;
import android.os.RemoteException;
@@ -69,8 +70,7 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU
return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains(ETHERNET);
}
final ConnectivityManager conn = context.getSystemService(ConnectivityManager.class);
if (!conn.isNetworkSupported(ConnectivityManager.TYPE_ETHERNET)) {
if (!context.getPackageManager().hasSystemFeature(FEATURE_ETHERNET)) {
return false;
}
@@ -96,10 +96,8 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU
* TODO: This is the opposite to Utils.isWifiOnly(), it should be refactored into 1 method.
*/
public static boolean hasMobileData(Context context) {
final ConnectivityManager connectivityManager =
context.getSystemService(ConnectivityManager.class);
return connectivityManager != null && connectivityManager
.isNetworkSupported(ConnectivityManager.TYPE_MOBILE);
final TelephonyManager tele = context.getSystemService(TelephonyManager.class);
return tele.isDataCapable();
}
/**
@@ -128,12 +126,13 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU
Log.d(TAG, "hasReadyMobileRadio: subInfo=" + subInfo);
}
}
final ConnectivityManager conn = context.getSystemService(ConnectivityManager.class);
final boolean retVal = conn.isNetworkSupported(TYPE_MOBILE) && isReady;
final boolean isDataCapable = tele.isDataCapable();
final boolean retVal = isDataCapable && isReady;
if (LOGD) {
Log.d(TAG, "hasReadyMobileRadio:"
+ " conn.isNetworkSupported(TYPE_MOBILE)="
+ conn.isNetworkSupported(TYPE_MOBILE)
+ " telephonManager.isDataCapable()="
+ isDataCapable
+ " isReady=" + isReady);
}
return retVal;
@@ -147,9 +146,8 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU
return SystemProperties.get(TEST_RADIOS_PROP).contains("wifi");
}
final ConnectivityManager connectivityManager =
context.getSystemService(ConnectivityManager.class);
return connectivityManager != null && connectivityManager.isNetworkSupported(TYPE_WIFI);
final PackageManager packageManager = context.getPackageManager();
return packageManager != null && packageManager.hasSystemFeature(FEATURE_WIFI);
}
/**

View File

@@ -19,7 +19,6 @@ package com.android.settings.homepage.contextualcards.conditional;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.telephony.PhoneStateListener;
import android.telephony.PreciseDataConnectionState;
import android.telephony.SubscriptionManager;
@@ -39,7 +38,6 @@ public class CellularDataConditionController implements ConditionalCardControlle
private final Context mAppContext;
private final ConditionManager mConditionManager;
private final GlobalSettingsChangeListener mDefaultDataSubscriptionIdListener;
private final ConnectivityManager mConnectivityManager;
private int mSubId;
private TelephonyManager mTelephonyManager;
@@ -63,8 +61,6 @@ public class CellularDataConditionController implements ConditionalCardControlle
}
}
};
mConnectivityManager = appContext.getSystemService(
ConnectivityManager.class);
}
@Override
@@ -74,7 +70,7 @@ public class CellularDataConditionController implements ConditionalCardControlle
@Override
public boolean isDisplayable() {
if (!mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)
if (!mTelephonyManager.isDataCapable()
|| mTelephonyManager.getSimState() != TelephonyManager.SIM_STATE_READY) {
return false;
}

View File

@@ -36,8 +36,8 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.net.NetworkPolicyManager;
import android.os.Bundle;
@@ -72,9 +72,9 @@ public class BillingCycleSettingsTest {
@Mock
private NetworkPolicyEditor mNetworkPolicyEditor;
@Mock
private ConnectivityManager mConnectivityManager;
@Mock
private NetworkPolicyManager mNetworkPolicyManager;
@Mock
private PackageManager mMockPackageManager;
private Context mContext;
@Mock
@@ -157,9 +157,8 @@ public class BillingCycleSettingsTest {
.onCreatePreferences(any(Bundle.class), nullable(String.class));
when(mContext.getSystemService(Context.NETWORK_POLICY_SERVICE))
.thenReturn(mNetworkPolicyManager);
when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE))
.thenReturn(mConnectivityManager);
when(mConnectivityManager.isNetworkSupported(anyInt())).thenReturn(true);
when(mContext.getPackageManager()).thenReturn(mMockPackageManager);
when(mMockPackageManager.hasSystemFeature(any())).thenReturn(true);
final SwitchPreference preference = mock(SwitchPreference.class);
when(billingCycleSettings.findPreference(anyString())).thenReturn(preference);

View File

@@ -16,13 +16,14 @@
package com.android.settings.datausage;
import static android.net.ConnectivityManager.TYPE_WIFI;
import static android.content.pm.PackageManager.FEATURE_WIFI;
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -31,7 +32,7 @@ import static org.mockito.Mockito.when;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.content.pm.PackageManager;
import android.net.NetworkTemplate;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
@@ -104,7 +105,7 @@ public class DataUsageSummaryPreferenceControllerTest {
@Mock
private TelephonyManager mTelephonyManager;
@Mock
private ConnectivityManager mConnectivityManager;
private PackageManager mPm;
private DataUsageInfoController mDataInfoController;
@@ -138,10 +139,9 @@ public class DataUsageSummaryPreferenceControllerTest {
doReturn(mTelephonyManager).when(mActivity).getSystemService(TelephonyManager.class);
doReturn(mTelephonyManager).when(mTelephonyManager)
.createForSubscriptionId(mDefaultSubscriptionId);
when(mActivity.getSystemService(Context.CONNECTIVITY_SERVICE))
.thenReturn(mConnectivityManager);
doReturn(mPm).when(mActivity).getPackageManager();
doReturn(false).when(mPm).hasSystemFeature(eq(FEATURE_WIFI));
doReturn(TelephonyManager.SIM_STATE_READY).when(mTelephonyManager).getSimState();
when(mConnectivityManager.isNetworkSupported(TYPE_WIFI)).thenReturn(false);
mController = spy(new DataUsageSummaryPreferenceController(
mDataUsageController,
@@ -363,7 +363,7 @@ public class DataUsageSummaryPreferenceControllerTest {
final int subscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
mController.init(subscriptionId);
mController.mDataUsageController = mDataUsageController;
when(mConnectivityManager.isNetworkSupported(TYPE_WIFI)).thenReturn(true);
doReturn(true).when(mPm).hasSystemFeature(eq(FEATURE_WIFI));
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
}

View File

@@ -18,14 +18,15 @@ package com.android.settings.datausage;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;
import android.app.usage.NetworkStatsManager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.telephony.TelephonyManager;
import android.util.DataUnit;
@@ -38,12 +39,11 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.shadows.ShadowApplication;
import org.robolectric.shadows.ShadowPackageManager;
@RunWith(RobolectricTestRunner.class)
public final class DataUsageUtilsTest {
@Mock
private ConnectivityManager mManager;
@Mock
private TelephonyManager mTelephonyManager;
@Mock
@@ -56,21 +56,20 @@ public final class DataUsageUtilsTest {
MockitoAnnotations.initMocks(this);
final ShadowApplication shadowContext = ShadowApplication.getInstance();
mContext = RuntimeEnvironment.application;
shadowContext.setSystemService(Context.CONNECTIVITY_SERVICE, mManager);
shadowContext.setSystemService(Context.TELEPHONY_SERVICE, mTelephonyManager);
shadowContext.setSystemService(Context.NETWORK_STATS_SERVICE, mNetworkStatsManager);
}
@Test
public void mobileDataStatus_whenNetworkIsSupported() {
when(mManager.isNetworkSupported(anyInt())).thenReturn(true);
when(mTelephonyManager.isDataCapable()).thenReturn(true);
final boolean hasMobileData = DataUsageUtils.hasMobileData(mContext);
assertThat(hasMobileData).isTrue();
}
@Test
public void mobileDataStatus_whenNetworkIsNotSupported() {
when(mManager.isNetworkSupported(anyInt())).thenReturn(false);
when(mTelephonyManager.isDataCapable()).thenReturn(false);
final boolean hasMobileData = DataUsageUtils.hasMobileData(mContext);
assertThat(hasMobileData).isFalse();
}
@@ -85,7 +84,8 @@ public final class DataUsageUtilsTest {
@Test
public void hasEthernet_shouldQueryEthernetSummaryForUser() throws Exception {
when(mManager.isNetworkSupported(anyInt())).thenReturn(true);
ShadowPackageManager pm = shadowOf(RuntimeEnvironment.application.getPackageManager());
pm.setSystemFeature(PackageManager.FEATURE_ETHERNET, true);
final String subscriber = "TestSub";
when(mTelephonyManager.getSubscriberId()).thenReturn(subscriber);

View File

@@ -32,7 +32,6 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.os.UserManager;
import android.provider.Settings;
import android.telephony.SubscriptionInfo;
@@ -110,9 +109,7 @@ public class MobileNetworkSummaryControllerTest {
@Test
public void isAvailable_wifiOnlyMode_notAvailable() {
final ConnectivityManager cm = mock(ConnectivityManager.class);
when(cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false);
when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(cm);
when(mTelephonyManager.isDataCapable()).thenReturn(false);
when(mUserManager.isAdminUser()).thenReturn(true);
assertThat(mController.isAvailable()).isFalse();
@@ -120,11 +117,8 @@ public class MobileNetworkSummaryControllerTest {
@Test
public void isAvailable_secondaryUser_notAvailable() {
final ConnectivityManager cm = mock(ConnectivityManager.class);
when(cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(true);
when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(cm);
when(mTelephonyManager.isDataCapable()).thenReturn(true);
when(mUserManager.isAdminUser()).thenReturn(false);
assertThat(mController.isAvailable()).isFalse();
}

View File

@@ -25,7 +25,6 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.net.ConnectivityManager;
import android.os.Looper;
import android.os.UserManager;
import android.provider.Settings;
@@ -63,8 +62,6 @@ public class MobileNetworkPreferenceControllerTest {
@Mock
private UserManager mUserManager;
@Mock
private ConnectivityManager mConnectivityManager;
private PreferenceManager mPreferenceManager;
private PreferenceScreen mScreen;
@@ -82,7 +79,6 @@ public class MobileNetworkPreferenceControllerTest {
when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager);
if (Looper.myLooper() == null) {
Looper.prepare();
}
@@ -98,8 +94,7 @@ public class MobileNetworkPreferenceControllerTest {
@Test
public void secondaryUser_prefIsNotAvailable() {
when(mUserManager.isAdminUser()).thenReturn(false);
when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE))
.thenReturn(true);
when(mTelephonyManager.isDataCapable()).thenReturn(true);
mController = new MobileNetworkPreferenceController(mContext);
assertThat(mController.isAvailable()).isFalse();
@@ -108,8 +103,7 @@ public class MobileNetworkPreferenceControllerTest {
@Test
public void wifiOnly_prefIsNotAvailable() {
when(mUserManager.isAdminUser()).thenReturn(true);
when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE))
.thenReturn(false);
when(mTelephonyManager.isDataCapable()).thenReturn(false);
mController = new MobileNetworkPreferenceController(mContext);
assertThat(mController.isAvailable()).isFalse();