Loading src/com/android/settings/Utils.java +6 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,7 @@ import android.text.TextUtils; import android.text.format.DateUtils; import android.text.style.TtsSpan; import android.util.ArraySet; import android.util.FeatureFlagUtils; import android.util.IconDrawableFactory; import android.util.Log; import android.view.LayoutInflater; Loading Loading @@ -1146,4 +1147,9 @@ public final class Utils extends com.android.settingslib.Utils { drawable.draw(canvas); return roundedBitmap; } public static boolean isProviderModelEnabled(Context context) { return FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL); } } src/com/android/settings/network/SubscriptionsPreferenceController.java +1 −19 Original line number Diff line number Diff line Loading @@ -24,9 +24,6 @@ import static com.android.settings.network.telephony.MobileNetworkUtils.NO_CELL_ import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.provider.Settings; import android.telephony.SignalStrength; import android.telephony.SubscriptionInfo; Loading Loading @@ -71,7 +68,6 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl private String mPreferenceGroupKey; private PreferenceGroup mPreferenceGroup; private SubscriptionManager mManager; private ConnectivityManager mConnectivityManager; private SubscriptionsChangeListener mSubscriptionsListener; private MobileDataEnabledListener mDataEnabledListener; private DataConnectivityListener mConnectivityListener; Loading Loading @@ -112,7 +108,6 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl mPreferenceGroupKey = preferenceGroupKey; mStartOrder = startOrder; mManager = context.getSystemService(SubscriptionManager.class); mConnectivityManager = mContext.getSystemService(ConnectivityManager.class); mSubscriptionPreferences = new ArrayMap<>(); mSubscriptionsListener = new SubscriptionsChangeListener(context, this); mDataEnabledListener = new MobileDataEnabledListener(context, this); Loading Loading @@ -229,19 +224,6 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl NO_CELL_DATA_TYPE_ICON, cutOut); } private boolean activeNetworkIsCellular() { final Network activeNetwork = mConnectivityManager.getActiveNetwork(); if (activeNetwork == null) { return false; } final NetworkCapabilities networkCapabilities = mConnectivityManager.getNetworkCapabilities( activeNetwork); if (networkCapabilities == null) { return false; } return networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR); } /** * The summary can have either 1 or 2 lines depending on which services (calls, SMS, data) this * subscription is the default for. Loading Loading @@ -271,7 +253,7 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl final TelephonyManager telMgrForSub = mContext.getSystemService( TelephonyManager.class).createForSubscriptionId(subId); final boolean dataEnabled = telMgrForSub.isDataEnabled(); if (dataEnabled && activeNetworkIsCellular()) { if (dataEnabled && MobileNetworkUtils.activeNetworkIsCellular(mContext)) { line2 = mContext.getString(R.string.mobile_data_active); } else if (!dataEnabled) { line2 = mContext.getString(R.string.mobile_data_off); Loading src/com/android/settings/network/telephony/MobileNetworkUtils.java +47 −2 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import static com.android.settings.network.telephony.TelephonyConstants.Telephon import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO; import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA; import android.annotation.Nullable; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; Loading @@ -41,6 +42,9 @@ import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.os.PersistableBundle; import android.os.SystemClock; import android.os.SystemProperties; Loading Loading @@ -69,6 +73,7 @@ import com.android.internal.util.ArrayUtils; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants; import com.android.settingslib.development.DevelopmentSettingsEnabler; import com.android.settingslib.graph.SignalDrawable; Loading Loading @@ -202,8 +207,7 @@ public class MobileNetworkUtils { return bundle.getBoolean(CarrierConfigManager.KEY_USE_RCS_PRESENCE_BOOL, false /*default*/); } @VisibleForTesting static Intent buildPhoneAccountConfigureIntent( public static Intent buildPhoneAccountConfigureIntent( Context context, PhoneAccountHandle accountHandle) { Intent intent = buildConfigureIntent( context, accountHandle, TelecomManager.ACTION_CONFIGURE_PHONE_ACCOUNT); Loading Loading @@ -854,4 +858,45 @@ public class MobileNetworkUtils { raf = ((NR & raf) > 0) ? (NR | raf) : raf; return raf; } /** * Copied from SubscriptionsPreferenceController#activeNetworkIsCellular() */ public static boolean activeNetworkIsCellular(Context context) { final ConnectivityManager connectivityManager = context.getSystemService(ConnectivityManager.class); final Network activeNetwork = connectivityManager.getActiveNetwork(); if (activeNetwork == null) { return false; } final NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(activeNetwork); if (networkCapabilities == null) { return false; } return networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR); } /** * Copied from WifiCallingPreferenceController#isWifiCallingEnabled() */ public static boolean isWifiCallingEnabled(Context context, int subId, @Nullable WifiCallingQueryImsState queryImsState, @Nullable PhoneAccountHandle phoneAccountHandle) { if (phoneAccountHandle == null){ phoneAccountHandle = context.getSystemService(TelecomManager.class) .getSimCallManagerForSubscription(subId); } boolean isWifiCallingEnabled; if (phoneAccountHandle != null) { final Intent intent = buildPhoneAccountConfigureIntent(context, phoneAccountHandle); isWifiCallingEnabled = intent != null; } else { if (queryImsState == null) { queryImsState = new WifiCallingQueryImsState(context, subId); } isWifiCallingEnabled = queryImsState.isReadyToWifiCalling(); } return isWifiCallingEnabled; } } src/com/android/settings/network/telephony/WifiCallingPreferenceController.java +1 −20 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont @Override public int getAvailabilityStatus(int subId) { return SubscriptionManager.isValidSubscriptionId(subId) && isWifiCallingEnabled(mContext, subId) && MobileNetworkUtils.isWifiCallingEnabled(mContext, subId, null, null) ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } Loading Loading @@ -221,23 +221,4 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont mTelephonyManager.listen(this, PhoneStateListener.LISTEN_NONE); } } private boolean isWifiCallingEnabled(Context context, int subId) { final PhoneAccountHandle simCallManager = context.getSystemService(TelecomManager.class) .getSimCallManagerForSubscription(subId); final int phoneId = SubscriptionManager.getSlotIndex(subId); boolean isWifiCallingEnabled; if (simCallManager != null) { final Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent( context, simCallManager); isWifiCallingEnabled = intent != null; } else { isWifiCallingEnabled = queryImsState(subId).isReadyToWifiCalling(); } return isWifiCallingEnabled; } } tests/unit/src/com/android/settings/network/telephony/MobileNetworkUtilsTest.java +93 −7 Original line number Diff line number Diff line Loading @@ -17,10 +17,13 @@ package com.android.settings.network.telephony; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; Loading @@ -31,9 +34,13 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.os.PersistableBundle; import android.provider.Settings; import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; Loading @@ -42,6 +49,7 @@ import android.telephony.TelephonyManager; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.android.settings.network.ims.MockWfcQueryImsState; import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants; import org.junit.Before; Loading Loading @@ -79,11 +87,18 @@ public class MobileNetworkUtilsTest { private ResolveInfo mResolveInfo; @Mock private CarrierConfigManager mCarrierConfigManager; @Mock private ConnectivityManager mConnectivityManager; @Mock private TelecomManager mTelecomManager; private Context mContext; private PersistableBundle mCarrierConfig; private PhoneAccountHandle mPhoneAccountHandle; private ComponentName mComponentName; private NetworkCapabilities mNetworkCapabilities; private Network mNetwork; private MockWfcQueryImsState mMockQueryWfcState; @Before public void setUp() { Loading @@ -92,7 +107,6 @@ public class MobileNetworkUtilsTest { mContext = spy(ApplicationProvider.getApplicationContext()); when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager); when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager); when(mTelephonyManager.createForSubscriptionId(SUB_ID_1)).thenReturn(mTelephonyManager); when(mTelephonyManager.createForSubscriptionId(SUB_ID_2)).thenReturn(mTelephonyManager2); when(mContext.getPackageManager()).thenReturn(mPackageManager); Loading @@ -103,6 +117,10 @@ public class MobileNetworkUtilsTest { mCarrierConfig = new PersistableBundle(); when(mCarrierConfigManager.getConfigForSubId(SUB_ID_1)).thenReturn(mCarrierConfig); mNetwork = new Network(anyInt()); when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager); when(mConnectivityManager.getActiveNetwork()).thenReturn(mNetwork); when(mSubscriptionInfo1.getSubscriptionId()).thenReturn(SUB_ID_1); when(mSubscriptionInfo1.getCarrierName()).thenReturn(PLMN_FROM_SUB_ID_1); when(mSubscriptionInfo2.getSubscriptionId()).thenReturn(SUB_ID_2); Loading @@ -115,6 +133,11 @@ public class MobileNetworkUtilsTest { when(mTelephonyManager.getNetworkOperatorName()).thenReturn( PLMN_FROM_TELEPHONY_MANAGER_API); when(mContext.getSystemService(TelecomManager.class)).thenReturn(mTelecomManager); when(mTelecomManager.getSimCallManagerForSubscription(SUB_ID_1)) .thenReturn(mPhoneAccountHandle); mMockQueryWfcState = new MockWfcQueryImsState(mContext, SUB_ID_1); } @Test Loading Loading @@ -148,8 +171,7 @@ public class MobileNetworkUtilsTest { @Test public void buildConfigureIntent_noActivityHandleIntent_returnNull() { when(mPackageManager.queryIntentActivities(nullable(Intent.class), anyInt())) .thenReturn(new ArrayList<>()); buildPhoneAccountConfigureIntent(false); assertThat(MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext, mPhoneAccountHandle)).isNull(); Loading @@ -157,10 +179,7 @@ public class MobileNetworkUtilsTest { @Test public void buildConfigureIntent_hasActivityHandleIntent_returnIntent() { mComponentName = new ComponentName(PACKAGE_NAME, "testClass"); mPhoneAccountHandle = new PhoneAccountHandle(mComponentName, ""); when(mPackageManager.queryIntentActivities(nullable(Intent.class), anyInt())) .thenReturn(Arrays.asList(mResolveInfo)); buildPhoneAccountConfigureIntent(true); assertThat(MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext, mPhoneAccountHandle)).isNotNull(); Loading Loading @@ -333,4 +352,71 @@ public class MobileNetworkUtilsTest { assertThat(MobileNetworkUtils.getCurrentCarrierNameForDisplay( mContext)).isNotNull(); } @Test public void isCellularNetwork_withCellularNetwork_returnTrue() { addNetworkTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); assertTrue(MobileNetworkUtils.activeNetworkIsCellular(mContext)); } @Test public void isCellularNetwork_withWifiNetwork_returnFalse() { addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI); assertFalse(MobileNetworkUtils.activeNetworkIsCellular(mContext)); } private void addNetworkTransportType (int networkType) { mNetworkCapabilities = new NetworkCapabilities().addTransportType(networkType); when(mConnectivityManager.getNetworkCapabilities(mNetwork)).thenReturn( mNetworkCapabilities); } @Test public void isWifiCallingEnabled_hasPhoneAccountHandleAndHasActivityHandleIntent_returnTrue() { buildPhoneAccountConfigureIntent(true); assertTrue(MobileNetworkUtils.isWifiCallingEnabled(mContext, SUB_ID_1, null, mPhoneAccountHandle)); } @Test public void isWifiCallingEnabled_hasPhoneAccountHandleAndNoActivityHandleIntent_returnFalse() { buildPhoneAccountConfigureIntent(false); assertFalse(MobileNetworkUtils.isWifiCallingEnabled(mContext, SUB_ID_1, null, mPhoneAccountHandle)); } @Test public void isWifiCallingEnabled_noPhoneAccountHandleAndWifiCallingIsReady_returnTrue() { setWifiCallingEnabled(true); assertTrue(MobileNetworkUtils.isWifiCallingEnabled(mContext, SUB_ID_1, mMockQueryWfcState, null)); } @Test public void isWifiCallingEnabled_noPhoneAccountHandleAndWifiCallingNotReady_returnFalse() { setWifiCallingEnabled(false); assertFalse(MobileNetworkUtils.isWifiCallingEnabled(mContext, SUB_ID_1, mMockQueryWfcState, null)); } private void setWifiCallingEnabled(boolean enabled){ mMockQueryWfcState.setIsEnabledByUser(enabled); mMockQueryWfcState.setServiceStateReady(enabled); mMockQueryWfcState.setIsEnabledByPlatform(enabled); mMockQueryWfcState.setIsProvisionedOnDevice(enabled); } private void buildPhoneAccountConfigureIntent(boolean hasActivityHandleIntent) { mComponentName = new ComponentName(PACKAGE_NAME, "testClass"); mPhoneAccountHandle = new PhoneAccountHandle(mComponentName, ""); when(mPackageManager.queryIntentActivities(nullable(Intent.class), anyInt())) .thenReturn( hasActivityHandleIntent ? Arrays.asList(mResolveInfo) : new ArrayList<>()); } } Loading
src/com/android/settings/Utils.java +6 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,7 @@ import android.text.TextUtils; import android.text.format.DateUtils; import android.text.style.TtsSpan; import android.util.ArraySet; import android.util.FeatureFlagUtils; import android.util.IconDrawableFactory; import android.util.Log; import android.view.LayoutInflater; Loading Loading @@ -1146,4 +1147,9 @@ public final class Utils extends com.android.settingslib.Utils { drawable.draw(canvas); return roundedBitmap; } public static boolean isProviderModelEnabled(Context context) { return FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL); } }
src/com/android/settings/network/SubscriptionsPreferenceController.java +1 −19 Original line number Diff line number Diff line Loading @@ -24,9 +24,6 @@ import static com.android.settings.network.telephony.MobileNetworkUtils.NO_CELL_ import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.provider.Settings; import android.telephony.SignalStrength; import android.telephony.SubscriptionInfo; Loading Loading @@ -71,7 +68,6 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl private String mPreferenceGroupKey; private PreferenceGroup mPreferenceGroup; private SubscriptionManager mManager; private ConnectivityManager mConnectivityManager; private SubscriptionsChangeListener mSubscriptionsListener; private MobileDataEnabledListener mDataEnabledListener; private DataConnectivityListener mConnectivityListener; Loading Loading @@ -112,7 +108,6 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl mPreferenceGroupKey = preferenceGroupKey; mStartOrder = startOrder; mManager = context.getSystemService(SubscriptionManager.class); mConnectivityManager = mContext.getSystemService(ConnectivityManager.class); mSubscriptionPreferences = new ArrayMap<>(); mSubscriptionsListener = new SubscriptionsChangeListener(context, this); mDataEnabledListener = new MobileDataEnabledListener(context, this); Loading Loading @@ -229,19 +224,6 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl NO_CELL_DATA_TYPE_ICON, cutOut); } private boolean activeNetworkIsCellular() { final Network activeNetwork = mConnectivityManager.getActiveNetwork(); if (activeNetwork == null) { return false; } final NetworkCapabilities networkCapabilities = mConnectivityManager.getNetworkCapabilities( activeNetwork); if (networkCapabilities == null) { return false; } return networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR); } /** * The summary can have either 1 or 2 lines depending on which services (calls, SMS, data) this * subscription is the default for. Loading Loading @@ -271,7 +253,7 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl final TelephonyManager telMgrForSub = mContext.getSystemService( TelephonyManager.class).createForSubscriptionId(subId); final boolean dataEnabled = telMgrForSub.isDataEnabled(); if (dataEnabled && activeNetworkIsCellular()) { if (dataEnabled && MobileNetworkUtils.activeNetworkIsCellular(mContext)) { line2 = mContext.getString(R.string.mobile_data_active); } else if (!dataEnabled) { line2 = mContext.getString(R.string.mobile_data_off); Loading
src/com/android/settings/network/telephony/MobileNetworkUtils.java +47 −2 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import static com.android.settings.network.telephony.TelephonyConstants.Telephon import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO; import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA; import android.annotation.Nullable; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; Loading @@ -41,6 +42,9 @@ import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.os.PersistableBundle; import android.os.SystemClock; import android.os.SystemProperties; Loading Loading @@ -69,6 +73,7 @@ import com.android.internal.util.ArrayUtils; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants; import com.android.settingslib.development.DevelopmentSettingsEnabler; import com.android.settingslib.graph.SignalDrawable; Loading Loading @@ -202,8 +207,7 @@ public class MobileNetworkUtils { return bundle.getBoolean(CarrierConfigManager.KEY_USE_RCS_PRESENCE_BOOL, false /*default*/); } @VisibleForTesting static Intent buildPhoneAccountConfigureIntent( public static Intent buildPhoneAccountConfigureIntent( Context context, PhoneAccountHandle accountHandle) { Intent intent = buildConfigureIntent( context, accountHandle, TelecomManager.ACTION_CONFIGURE_PHONE_ACCOUNT); Loading Loading @@ -854,4 +858,45 @@ public class MobileNetworkUtils { raf = ((NR & raf) > 0) ? (NR | raf) : raf; return raf; } /** * Copied from SubscriptionsPreferenceController#activeNetworkIsCellular() */ public static boolean activeNetworkIsCellular(Context context) { final ConnectivityManager connectivityManager = context.getSystemService(ConnectivityManager.class); final Network activeNetwork = connectivityManager.getActiveNetwork(); if (activeNetwork == null) { return false; } final NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(activeNetwork); if (networkCapabilities == null) { return false; } return networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR); } /** * Copied from WifiCallingPreferenceController#isWifiCallingEnabled() */ public static boolean isWifiCallingEnabled(Context context, int subId, @Nullable WifiCallingQueryImsState queryImsState, @Nullable PhoneAccountHandle phoneAccountHandle) { if (phoneAccountHandle == null){ phoneAccountHandle = context.getSystemService(TelecomManager.class) .getSimCallManagerForSubscription(subId); } boolean isWifiCallingEnabled; if (phoneAccountHandle != null) { final Intent intent = buildPhoneAccountConfigureIntent(context, phoneAccountHandle); isWifiCallingEnabled = intent != null; } else { if (queryImsState == null) { queryImsState = new WifiCallingQueryImsState(context, subId); } isWifiCallingEnabled = queryImsState.isReadyToWifiCalling(); } return isWifiCallingEnabled; } }
src/com/android/settings/network/telephony/WifiCallingPreferenceController.java +1 −20 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont @Override public int getAvailabilityStatus(int subId) { return SubscriptionManager.isValidSubscriptionId(subId) && isWifiCallingEnabled(mContext, subId) && MobileNetworkUtils.isWifiCallingEnabled(mContext, subId, null, null) ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } Loading Loading @@ -221,23 +221,4 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont mTelephonyManager.listen(this, PhoneStateListener.LISTEN_NONE); } } private boolean isWifiCallingEnabled(Context context, int subId) { final PhoneAccountHandle simCallManager = context.getSystemService(TelecomManager.class) .getSimCallManagerForSubscription(subId); final int phoneId = SubscriptionManager.getSlotIndex(subId); boolean isWifiCallingEnabled; if (simCallManager != null) { final Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent( context, simCallManager); isWifiCallingEnabled = intent != null; } else { isWifiCallingEnabled = queryImsState(subId).isReadyToWifiCalling(); } return isWifiCallingEnabled; } }
tests/unit/src/com/android/settings/network/telephony/MobileNetworkUtilsTest.java +93 −7 Original line number Diff line number Diff line Loading @@ -17,10 +17,13 @@ package com.android.settings.network.telephony; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; Loading @@ -31,9 +34,13 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.os.PersistableBundle; import android.provider.Settings; import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; Loading @@ -42,6 +49,7 @@ import android.telephony.TelephonyManager; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.android.settings.network.ims.MockWfcQueryImsState; import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants; import org.junit.Before; Loading Loading @@ -79,11 +87,18 @@ public class MobileNetworkUtilsTest { private ResolveInfo mResolveInfo; @Mock private CarrierConfigManager mCarrierConfigManager; @Mock private ConnectivityManager mConnectivityManager; @Mock private TelecomManager mTelecomManager; private Context mContext; private PersistableBundle mCarrierConfig; private PhoneAccountHandle mPhoneAccountHandle; private ComponentName mComponentName; private NetworkCapabilities mNetworkCapabilities; private Network mNetwork; private MockWfcQueryImsState mMockQueryWfcState; @Before public void setUp() { Loading @@ -92,7 +107,6 @@ public class MobileNetworkUtilsTest { mContext = spy(ApplicationProvider.getApplicationContext()); when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager); when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager); when(mTelephonyManager.createForSubscriptionId(SUB_ID_1)).thenReturn(mTelephonyManager); when(mTelephonyManager.createForSubscriptionId(SUB_ID_2)).thenReturn(mTelephonyManager2); when(mContext.getPackageManager()).thenReturn(mPackageManager); Loading @@ -103,6 +117,10 @@ public class MobileNetworkUtilsTest { mCarrierConfig = new PersistableBundle(); when(mCarrierConfigManager.getConfigForSubId(SUB_ID_1)).thenReturn(mCarrierConfig); mNetwork = new Network(anyInt()); when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager); when(mConnectivityManager.getActiveNetwork()).thenReturn(mNetwork); when(mSubscriptionInfo1.getSubscriptionId()).thenReturn(SUB_ID_1); when(mSubscriptionInfo1.getCarrierName()).thenReturn(PLMN_FROM_SUB_ID_1); when(mSubscriptionInfo2.getSubscriptionId()).thenReturn(SUB_ID_2); Loading @@ -115,6 +133,11 @@ public class MobileNetworkUtilsTest { when(mTelephonyManager.getNetworkOperatorName()).thenReturn( PLMN_FROM_TELEPHONY_MANAGER_API); when(mContext.getSystemService(TelecomManager.class)).thenReturn(mTelecomManager); when(mTelecomManager.getSimCallManagerForSubscription(SUB_ID_1)) .thenReturn(mPhoneAccountHandle); mMockQueryWfcState = new MockWfcQueryImsState(mContext, SUB_ID_1); } @Test Loading Loading @@ -148,8 +171,7 @@ public class MobileNetworkUtilsTest { @Test public void buildConfigureIntent_noActivityHandleIntent_returnNull() { when(mPackageManager.queryIntentActivities(nullable(Intent.class), anyInt())) .thenReturn(new ArrayList<>()); buildPhoneAccountConfigureIntent(false); assertThat(MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext, mPhoneAccountHandle)).isNull(); Loading @@ -157,10 +179,7 @@ public class MobileNetworkUtilsTest { @Test public void buildConfigureIntent_hasActivityHandleIntent_returnIntent() { mComponentName = new ComponentName(PACKAGE_NAME, "testClass"); mPhoneAccountHandle = new PhoneAccountHandle(mComponentName, ""); when(mPackageManager.queryIntentActivities(nullable(Intent.class), anyInt())) .thenReturn(Arrays.asList(mResolveInfo)); buildPhoneAccountConfigureIntent(true); assertThat(MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext, mPhoneAccountHandle)).isNotNull(); Loading Loading @@ -333,4 +352,71 @@ public class MobileNetworkUtilsTest { assertThat(MobileNetworkUtils.getCurrentCarrierNameForDisplay( mContext)).isNotNull(); } @Test public void isCellularNetwork_withCellularNetwork_returnTrue() { addNetworkTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); assertTrue(MobileNetworkUtils.activeNetworkIsCellular(mContext)); } @Test public void isCellularNetwork_withWifiNetwork_returnFalse() { addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI); assertFalse(MobileNetworkUtils.activeNetworkIsCellular(mContext)); } private void addNetworkTransportType (int networkType) { mNetworkCapabilities = new NetworkCapabilities().addTransportType(networkType); when(mConnectivityManager.getNetworkCapabilities(mNetwork)).thenReturn( mNetworkCapabilities); } @Test public void isWifiCallingEnabled_hasPhoneAccountHandleAndHasActivityHandleIntent_returnTrue() { buildPhoneAccountConfigureIntent(true); assertTrue(MobileNetworkUtils.isWifiCallingEnabled(mContext, SUB_ID_1, null, mPhoneAccountHandle)); } @Test public void isWifiCallingEnabled_hasPhoneAccountHandleAndNoActivityHandleIntent_returnFalse() { buildPhoneAccountConfigureIntent(false); assertFalse(MobileNetworkUtils.isWifiCallingEnabled(mContext, SUB_ID_1, null, mPhoneAccountHandle)); } @Test public void isWifiCallingEnabled_noPhoneAccountHandleAndWifiCallingIsReady_returnTrue() { setWifiCallingEnabled(true); assertTrue(MobileNetworkUtils.isWifiCallingEnabled(mContext, SUB_ID_1, mMockQueryWfcState, null)); } @Test public void isWifiCallingEnabled_noPhoneAccountHandleAndWifiCallingNotReady_returnFalse() { setWifiCallingEnabled(false); assertFalse(MobileNetworkUtils.isWifiCallingEnabled(mContext, SUB_ID_1, mMockQueryWfcState, null)); } private void setWifiCallingEnabled(boolean enabled){ mMockQueryWfcState.setIsEnabledByUser(enabled); mMockQueryWfcState.setServiceStateReady(enabled); mMockQueryWfcState.setIsEnabledByPlatform(enabled); mMockQueryWfcState.setIsProvisionedOnDevice(enabled); } private void buildPhoneAccountConfigureIntent(boolean hasActivityHandleIntent) { mComponentName = new ComponentName(PACKAGE_NAME, "testClass"); mPhoneAccountHandle = new PhoneAccountHandle(mComponentName, ""); when(mPackageManager.queryIntentActivities(nullable(Intent.class), anyInt())) .thenReturn( hasActivityHandleIntent ? Arrays.asList(mResolveInfo) : new ArrayList<>()); } }