Merge "Replace hidden CM#isNetworkSupported() usage" am: 959325e88a

Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/1639940

Change-Id: I7aa0702f04c1f876851661ea54ba289b5eb9234d
This commit is contained in:
Treehugger Robot
2021-03-18 03:25:20 +00:00
committed by Automerger Merge Worker
8 changed files with 45 additions and 61 deletions

View File

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

View File

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

View File

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

View File

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

View File

@@ -16,13 +16,14 @@
package com.android.settings.datausage; 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.android.settings.core.BasePreferenceController.AVAILABLE;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
@@ -31,7 +32,7 @@ import static org.mockito.Mockito.when;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.ConnectivityManager; import android.content.pm.PackageManager;
import android.net.NetworkTemplate; import android.net.NetworkTemplate;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
@@ -104,7 +105,7 @@ public class DataUsageSummaryPreferenceControllerTest {
@Mock @Mock
private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager;
@Mock @Mock
private ConnectivityManager mConnectivityManager; private PackageManager mPm;
private DataUsageInfoController mDataInfoController; private DataUsageInfoController mDataInfoController;
@@ -138,10 +139,9 @@ public class DataUsageSummaryPreferenceControllerTest {
doReturn(mTelephonyManager).when(mActivity).getSystemService(TelephonyManager.class); doReturn(mTelephonyManager).when(mActivity).getSystemService(TelephonyManager.class);
doReturn(mTelephonyManager).when(mTelephonyManager) doReturn(mTelephonyManager).when(mTelephonyManager)
.createForSubscriptionId(mDefaultSubscriptionId); .createForSubscriptionId(mDefaultSubscriptionId);
when(mActivity.getSystemService(Context.CONNECTIVITY_SERVICE)) doReturn(mPm).when(mActivity).getPackageManager();
.thenReturn(mConnectivityManager); doReturn(false).when(mPm).hasSystemFeature(eq(FEATURE_WIFI));
doReturn(TelephonyManager.SIM_STATE_READY).when(mTelephonyManager).getSimState(); doReturn(TelephonyManager.SIM_STATE_READY).when(mTelephonyManager).getSimState();
when(mConnectivityManager.isNetworkSupported(TYPE_WIFI)).thenReturn(false);
mController = spy(new DataUsageSummaryPreferenceController( mController = spy(new DataUsageSummaryPreferenceController(
mDataUsageController, mDataUsageController,
@@ -363,7 +363,7 @@ public class DataUsageSummaryPreferenceControllerTest {
final int subscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; final int subscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
mController.init(subscriptionId); mController.init(subscriptionId);
mController.mDataUsageController = mDataUsageController; mController.mDataUsageController = mDataUsageController;
when(mConnectivityManager.isNetworkSupported(TYPE_WIFI)).thenReturn(true); doReturn(true).when(mPm).hasSystemFeature(eq(FEATURE_WIFI));
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); 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 com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;
import android.app.usage.NetworkStatsManager; import android.app.usage.NetworkStatsManager;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.util.DataUnit; import android.util.DataUnit;
@@ -38,12 +39,11 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.shadows.ShadowApplication; import org.robolectric.shadows.ShadowApplication;
import org.robolectric.shadows.ShadowPackageManager;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public final class DataUsageUtilsTest { public final class DataUsageUtilsTest {
@Mock
private ConnectivityManager mManager;
@Mock @Mock
private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager;
@Mock @Mock
@@ -56,21 +56,20 @@ public final class DataUsageUtilsTest {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
final ShadowApplication shadowContext = ShadowApplication.getInstance(); final ShadowApplication shadowContext = ShadowApplication.getInstance();
mContext = RuntimeEnvironment.application; mContext = RuntimeEnvironment.application;
shadowContext.setSystemService(Context.CONNECTIVITY_SERVICE, mManager);
shadowContext.setSystemService(Context.TELEPHONY_SERVICE, mTelephonyManager); shadowContext.setSystemService(Context.TELEPHONY_SERVICE, mTelephonyManager);
shadowContext.setSystemService(Context.NETWORK_STATS_SERVICE, mNetworkStatsManager); shadowContext.setSystemService(Context.NETWORK_STATS_SERVICE, mNetworkStatsManager);
} }
@Test @Test
public void mobileDataStatus_whenNetworkIsSupported() { public void mobileDataStatus_whenNetworkIsSupported() {
when(mManager.isNetworkSupported(anyInt())).thenReturn(true); when(mTelephonyManager.isDataCapable()).thenReturn(true);
final boolean hasMobileData = DataUsageUtils.hasMobileData(mContext); final boolean hasMobileData = DataUsageUtils.hasMobileData(mContext);
assertThat(hasMobileData).isTrue(); assertThat(hasMobileData).isTrue();
} }
@Test @Test
public void mobileDataStatus_whenNetworkIsNotSupported() { public void mobileDataStatus_whenNetworkIsNotSupported() {
when(mManager.isNetworkSupported(anyInt())).thenReturn(false); when(mTelephonyManager.isDataCapable()).thenReturn(false);
final boolean hasMobileData = DataUsageUtils.hasMobileData(mContext); final boolean hasMobileData = DataUsageUtils.hasMobileData(mContext);
assertThat(hasMobileData).isFalse(); assertThat(hasMobileData).isFalse();
} }
@@ -85,7 +84,8 @@ public final class DataUsageUtilsTest {
@Test @Test
public void hasEthernet_shouldQueryEthernetSummaryForUser() throws Exception { 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"; final String subscriber = "TestSub";
when(mTelephonyManager.getSubscriberId()).thenReturn(subscriber); when(mTelephonyManager.getSubscriberId()).thenReturn(subscriber);

View File

@@ -28,7 +28,6 @@ import static org.mockito.Mockito.when;
import static org.robolectric.shadow.api.Shadow.extract; import static org.robolectric.shadow.api.Shadow.extract;
import android.content.Context; import android.content.Context;
import android.net.ConnectivityManager;
import android.os.UserManager; import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
import android.provider.Settings.Global; import android.provider.Settings.Global;
@@ -88,9 +87,7 @@ public class MobileNetworkPreferenceControllerTest {
public void secondaryUser_prefIsNotAvailable() { public void secondaryUser_prefIsNotAvailable() {
ShadowUserManager userManager = extract(mContext.getSystemService(UserManager.class)); ShadowUserManager userManager = extract(mContext.getSystemService(UserManager.class));
userManager.setIsAdminUser(false); userManager.setIsAdminUser(false);
ShadowConnectivityManager connectivityManager = when(mTelephonyManager.isDataCapable()).thenReturn(true);
extract(mContext.getSystemService(ConnectivityManager.class));
connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, true);
mController = new MobileNetworkPreferenceController(mContext); mController = new MobileNetworkPreferenceController(mContext);
assertThat(mController.isAvailable()).isFalse(); assertThat(mController.isAvailable()).isFalse();
@@ -100,10 +97,7 @@ public class MobileNetworkPreferenceControllerTest {
public void wifiOnly_prefIsNotAvailable() { public void wifiOnly_prefIsNotAvailable() {
ShadowUserManager userManager = extract(mContext.getSystemService(UserManager.class)); ShadowUserManager userManager = extract(mContext.getSystemService(UserManager.class));
userManager.setIsAdminUser(true); userManager.setIsAdminUser(true);
ShadowConnectivityManager connectivityManager = when(mTelephonyManager.isDataCapable()).thenReturn(false);
extract(mContext.getSystemService(ConnectivityManager.class));
connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, false);
mController = new MobileNetworkPreferenceController(mContext); mController = new MobileNetworkPreferenceController(mContext);
assertThat(mController.isAvailable()).isFalse(); assertThat(mController.isAvailable()).isFalse();
} }

View File

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