diff --git a/res/xml/mobile_network_settings.xml b/res/xml/mobile_network_settings.xml index 539c145e4e2..eb80ac84162 100644 --- a/res/xml/mobile_network_settings.xml +++ b/res/xml/mobile_network_settings.xml @@ -152,6 +152,7 @@ android:summary="@string/contact_discovery_opt_in_summary" settings:controller="com.android.settings.network.telephony.ContactDiscoveryPreferenceController"/> + + NetworkModePreferenceType.None + config.worldPhone -> NetworkModePreferenceType.PreferredNetworkMode + else -> NetworkModePreferenceType.EnabledNetworkMode + } +} + +class PreferredNetworkModeSearchItem(private val context: Context) : + MobileNetworkSettingsSearchItem { + private val title: String = context.getString(R.string.preferred_network_mode_title) + + override fun getSearchResult(subId: Int): MobileNetworkSettingsSearchResult? = + when (getNetworkModePreferenceType(context, subId)) { + NetworkModePreferenceType.PreferredNetworkMode -> + MobileNetworkSettingsSearchResult( + key = "preferred_network_mode_key", + title = title, + ) + + NetworkModePreferenceType.EnabledNetworkMode -> + MobileNetworkSettingsSearchResult( + key = "enabled_networks_key", + title = title, + ) + + else -> null + } +} diff --git a/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt b/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt index c929d5ca897..220218c9473 100644 --- a/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt +++ b/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt @@ -20,11 +20,13 @@ import android.content.Context import android.telephony.SubscriptionManager import android.telephony.TelephonyManager import android.telephony.data.ApnSetting +import androidx.annotation.VisibleForTesting import androidx.lifecycle.LifecycleOwner import androidx.preference.PreferenceScreen import com.android.settings.R import com.android.settings.Settings.MobileNetworkActivity.EXTRA_MMS_MESSAGE import com.android.settings.core.TogglePreferenceController +import com.android.settings.network.telephony.MobileNetworkSettingsSearchIndex.MobileNetworkSettingsSearchResult import com.android.settings.network.telephony.MobileNetworkSettingsSearchIndex.MobileNetworkSettingsSearchItem import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle import kotlinx.coroutines.flow.combine @@ -109,7 +111,7 @@ constructor( } class MmsMessageSearchItem( - context: Context, + private val context: Context, private val getDefaultDataSubId: () -> Int = { SubscriptionManager.getDefaultDataSubscriptionId() }, @@ -117,12 +119,18 @@ constructor( private var telephonyManager: TelephonyManager = context.getSystemService(TelephonyManager::class.java)!! - override val key: String = EXTRA_MMS_MESSAGE - override val title: String = context.getString(R.string.mms_message_title) - - override fun isAvailable(subId: Int): Boolean = + @VisibleForTesting + fun isAvailable(subId: Int): Boolean = getAvailabilityStatus( telephonyManager.createForSubscriptionId(subId), subId, getDefaultDataSubId) + + override fun getSearchResult(subId: Int): MobileNetworkSettingsSearchResult? { + if (!isAvailable(subId)) return null + return MobileNetworkSettingsSearchResult( + key = EXTRA_MMS_MESSAGE, + title = context.getString(R.string.mms_message_title), + ) + } } } } diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettingsSearchIndex.kt b/src/com/android/settings/network/telephony/MobileNetworkSettingsSearchIndex.kt index 4e97d318033..58661f0e4fb 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkSettingsSearchIndex.kt +++ b/src/com/android/settings/network/telephony/MobileNetworkSettingsSearchIndex.kt @@ -39,15 +39,14 @@ class MobileNetworkSettingsSearchIndex( private val searchItemsFactory: (context: Context) -> List = ::createSearchItems, ) { + data class MobileNetworkSettingsSearchResult( + val key: String, + val title: String, + val keywords: String? = null, + ) + interface MobileNetworkSettingsSearchItem { - val key: String - - val title: String - - val keywords: String? - get() = null - - fun isAvailable(subId: Int): Boolean + fun getSearchResult(subId: Int): MobileNetworkSettingsSearchResult? } fun createSearchIndexableData(): SearchIndexableData { @@ -71,13 +70,15 @@ class MobileNetworkSettingsSearchIndex( searchItem: MobileNetworkSettingsSearchItem, subInfos: List ): List = - subInfos - .filter { searchItem.isAvailable(it.subscriptionId) } - .map { subInfo -> searchIndexableRaw(context, searchItem, subInfo) } + subInfos.mapNotNull { subInfo -> + searchItem.getSearchResult(subInfo.subscriptionId)?.let { searchResult -> + searchIndexableRaw(context, searchResult, subInfo) + } + } private fun searchIndexableRaw( context: Context, - searchItem: MobileNetworkSettingsSearchItem, + searchResult: MobileNetworkSettingsSearchResult, subInfo: SubscriptionInfo, ): SearchIndexableRaw { val key = @@ -85,7 +86,7 @@ class MobileNetworkSettingsSearchIndex( .setFragment( SpaSearchLandingFragment.newBuilder() .setFragmentName(MobileNetworkSettings::class.java.name) - .setPreferenceKey(searchItem.key) + .setPreferenceKey(searchResult.key) .putArguments( Settings.EXTRA_SUB_ID, BundleValue.newBuilder().setIntValue(subInfo.subscriptionId).build())) @@ -94,8 +95,8 @@ class MobileNetworkSettingsSearchIndex( return createSearchIndexableRaw( context = context, spaSearchLandingKey = key, - itemTitle = searchItem.title, - keywords = searchItem.keywords, + itemTitle = searchResult.title, + keywords = searchResult.keywords, indexableClass = MobileNetworkSettings::class.java, pageTitle = "$simsTitle > ${subInfo.displayName}", ) @@ -115,6 +116,7 @@ class MobileNetworkSettingsSearchIndex( listOf( MmsMessageSearchItem(context), NrAdvancedCallingSearchItem(context), + PreferredNetworkModeSearchItem(context), RoamingSearchItem(context), WifiCallingSearchItem(context), ) diff --git a/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceController.kt b/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceController.kt index 5c94e848270..0d8766e4df0 100644 --- a/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceController.kt +++ b/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceController.kt @@ -25,6 +25,7 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.res.stringResource import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.android.settings.R +import com.android.settings.network.telephony.MobileNetworkSettingsSearchIndex.MobileNetworkSettingsSearchResult import com.android.settings.network.telephony.MobileNetworkSettingsSearchIndex.MobileNetworkSettingsSearchItem import com.android.settings.spa.preference.ComposePreferenceController import com.android.settingslib.spa.widget.preference.SwitchPreference @@ -79,12 +80,17 @@ class NrAdvancedCallingPreferenceController @JvmOverloads constructor( companion object { class NrAdvancedCallingSearchItem(private val context: Context) : MobileNetworkSettingsSearchItem { - override val key = "nr_advanced_calling" - override val title: String = context.getString(R.string.nr_advanced_calling_title) - override val keywords: String = context.getString(R.string.keywords_nr_advanced_calling) - override fun isAvailable(subId: Int): Boolean = - VoNrRepository(context, subId).isVoNrAvailable() + fun isAvailable(subId: Int): Boolean = VoNrRepository(context, subId).isVoNrAvailable() + + override fun getSearchResult(subId: Int): MobileNetworkSettingsSearchResult? { + if (!isAvailable(subId)) return null + return MobileNetworkSettingsSearchResult( + key = "nr_advanced_calling", + title = context.getString(R.string.nr_advanced_calling_title), + keywords = context.getString(R.string.keywords_nr_advanced_calling), + ) + } } } } diff --git a/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java index bdfeace1be6..210cd879966 100644 --- a/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java @@ -16,6 +16,8 @@ package com.android.settings.network.telephony; +import static com.android.settings.network.telephony.EnabledNetworkModePreferenceControllerHelperKt.getNetworkModePreferenceType; + import android.content.Context; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; @@ -27,16 +29,18 @@ import androidx.preference.ListPreference; import androidx.preference.Preference; import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; import com.android.settings.network.CarrierConfigCache; import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants; /** * Preference controller for "Preferred network mode" */ -public class PreferredNetworkModePreferenceController extends TelephonyBasePreferenceController +public class PreferredNetworkModePreferenceController extends BasePreferenceController implements ListPreference.OnPreferenceChangeListener { private static final String TAG = "PrefNetworkModeCtrl"; + private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private CarrierConfigCache mCarrierConfigCache; private TelephonyManager mTelephonyManager; private boolean mIsGlobalCdma; @@ -47,25 +51,10 @@ public class PreferredNetworkModePreferenceController extends TelephonyBasePrefe } @Override - public int getAvailabilityStatus(int subId) { - final PersistableBundle carrierConfig = mCarrierConfigCache.getConfigForSubId(subId); - boolean visible; - if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { - visible = false; - } else if (carrierConfig == null) { - visible = false; - } else if (carrierConfig.getBoolean( - CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL) - || carrierConfig.getBoolean( - CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL)) { - visible = false; - } else if (carrierConfig.getBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL)) { - visible = true; - } else { - visible = false; - } - - return visible ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + public int getAvailabilityStatus() { + return getNetworkModePreferenceType(mContext, mSubId) + == NetworkModePreferenceType.PreferredNetworkMode + ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } @Override diff --git a/src/com/android/settings/network/telephony/RoamingPreferenceController.kt b/src/com/android/settings/network/telephony/RoamingPreferenceController.kt index 7633677dcb4..a5ac7d66640 100644 --- a/src/com/android/settings/network/telephony/RoamingPreferenceController.kt +++ b/src/com/android/settings/network/telephony/RoamingPreferenceController.kt @@ -29,6 +29,7 @@ import androidx.compose.ui.res.stringResource import androidx.fragment.app.FragmentManager import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.android.settings.R +import com.android.settings.network.telephony.MobileNetworkSettingsSearchIndex.MobileNetworkSettingsSearchResult import com.android.settings.network.telephony.MobileNetworkSettingsSearchIndex.MobileNetworkSettingsSearchItem import com.android.settings.spa.preference.ComposePreferenceController import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel @@ -98,16 +99,21 @@ constructor( companion object { private const val DIALOG_TAG = "MobileDataDialog" - class RoamingSearchItem(context: Context) : MobileNetworkSettingsSearchItem { - override val key = "button_roaming_key" - override val title: String = context.getString(R.string.roaming) - + class RoamingSearchItem(private val context: Context) : MobileNetworkSettingsSearchItem { private val carrierConfigRepository = CarrierConfigRepository(context) - override fun isAvailable(subId: Int): Boolean = + fun isAvailable(subId: Int): Boolean = SubscriptionManager.isValidSubscriptionId(subId) && !carrierConfigRepository.getBoolean( subId, CarrierConfigManager.KEY_FORCE_HOME_NETWORK_BOOL) + + override fun getSearchResult(subId: Int): MobileNetworkSettingsSearchResult? { + if (!isAvailable(subId)) return null + return MobileNetworkSettingsSearchResult( + key = "button_roaming_key", + title = context.getString(R.string.roaming), + ) + } } } } diff --git a/src/com/android/settings/network/telephony/TelephonyBasePreferenceController.java b/src/com/android/settings/network/telephony/TelephonyBasePreferenceController.java index 3972f3900f3..ee1552083ea 100644 --- a/src/com/android/settings/network/telephony/TelephonyBasePreferenceController.java +++ b/src/com/android/settings/network/telephony/TelephonyBasePreferenceController.java @@ -17,9 +17,6 @@ package com.android.settings.network.telephony; import android.content.Context; -import android.content.res.Resources; -import android.os.PersistableBundle; -import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; import com.android.settings.core.BasePreferenceController; @@ -59,29 +56,4 @@ public abstract class TelephonyBasePreferenceController extends BasePreferenceCo public void unsetAvailabilityStatus() { mSetSessionCount.getAndDecrement(); } - - /** - * Get carrier config based on specific subscription id. - * - * @param subId is the subscription id - * @return {@link PersistableBundle} of carrier config, or {@code null} when carrier config - * is not available. - */ - public PersistableBundle getCarrierConfigForSubId(int subId) { - if (!SubscriptionManager.isValidSubscriptionId(subId)) { - return null; - } - final CarrierConfigManager carrierConfigMgr = - mContext.getSystemService(CarrierConfigManager.class); - return carrierConfigMgr.getConfigForSubId(subId); - } - - /** - * Returns the resources associated with Subscription. - * - * @return Resources associated with Subscription. - */ - public Resources getResourcesForSubId() { - return SubscriptionManager.getResourcesForSubId(mContext, mSubId); - } } diff --git a/src/com/android/settings/network/telephony/WifiCallingPreferenceController.kt b/src/com/android/settings/network/telephony/WifiCallingPreferenceController.kt index 7e8e58cceb5..e04763a88c1 100644 --- a/src/com/android/settings/network/telephony/WifiCallingPreferenceController.kt +++ b/src/com/android/settings/network/telephony/WifiCallingPreferenceController.kt @@ -27,6 +27,7 @@ import androidx.preference.Preference import androidx.preference.PreferenceScreen import com.android.settings.R import com.android.settings.core.BasePreferenceController +import com.android.settings.network.telephony.MobileNetworkSettingsSearchIndex.MobileNetworkSettingsSearchResult import com.android.settings.network.telephony.MobileNetworkSettingsSearchIndex.MobileNetworkSettingsSearchItem import com.android.settings.network.telephony.wificalling.WifiCallingRepository import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle @@ -132,12 +133,17 @@ open class WifiCallingPreferenceController @JvmOverloads constructor( class WifiCallingSearchItem( private val context: Context, ) : MobileNetworkSettingsSearchItem { - override val key: String = "wifi_calling" - override val title: String = context.getString(R.string.wifi_calling_settings_title) - - override fun isAvailable(subId: Int): Boolean = runBlocking { + private fun isAvailable(subId: Int): Boolean = runBlocking { WifiCallingRepository(context, subId).wifiCallingReadyFlow().first() } + + override fun getSearchResult(subId: Int): MobileNetworkSettingsSearchResult? { + if (!isAvailable(subId)) return null + return MobileNetworkSettingsSearchResult( + key = "wifi_calling", + title = context.getString(R.string.wifi_calling_settings_title), + ) + } } } } diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerHelperTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerHelperTest.kt new file mode 100644 index 00000000000..8edc90fa24c --- /dev/null +++ b/tests/spa_unit/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerHelperTest.kt @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.network.telephony + +import android.content.Context +import android.telephony.CarrierConfigManager +import androidx.test.core.app.ApplicationProvider +import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.google.common.truth.Truth.assertThat +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.kotlin.spy + +@RunWith(AndroidJUnit4::class) +class EnabledNetworkModePreferenceControllerHelperTest { + + private var context: Context = spy(ApplicationProvider.getApplicationContext()) {} + + @Before + fun setUp() { + CarrierConfigRepository.resetForTest() + CarrierConfigRepository.setBooleanForTest( + SUB_ID, CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL, true) + } + + @Test + fun getNetworkModePreferenceType_hideCarrierNetworkSettings_returnNone() { + CarrierConfigRepository.setBooleanForTest( + SUB_ID, CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL, true) + + val networkModePreferenceType = getNetworkModePreferenceType(context, SUB_ID) + + assertThat(networkModePreferenceType).isEqualTo(NetworkModePreferenceType.None) + } + + @Test + fun getNetworkModePreferenceType_hidePreferredNetworkType_returnNone() { + CarrierConfigRepository.setBooleanForTest( + SUB_ID, CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL, true) + + val networkModePreferenceType = getNetworkModePreferenceType(context, SUB_ID) + + assertThat(networkModePreferenceType).isEqualTo(NetworkModePreferenceType.None) + } + + @Test + fun getNetworkModePreferenceType_carrierConfigNotReady_returnNone() { + CarrierConfigRepository.setBooleanForTest( + SUB_ID, CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL, false) + + val networkModePreferenceType = getNetworkModePreferenceType(context, SUB_ID) + + assertThat(networkModePreferenceType).isEqualTo(NetworkModePreferenceType.None) + } + + @Test + fun getNetworkModePreferenceType_isWorldPhone_returnPreferredNetworkMode() { + CarrierConfigRepository.setBooleanForTest( + SUB_ID, CarrierConfigManager.KEY_WORLD_PHONE_BOOL, true) + + val networkModePreferenceType = getNetworkModePreferenceType(context, SUB_ID) + + assertThat(networkModePreferenceType) + .isEqualTo(NetworkModePreferenceType.PreferredNetworkMode) + } + + @Test + fun getNetworkModePreferenceType_notWorldPhone_returnEnabledNetworkMode() { + CarrierConfigRepository.setBooleanForTest( + SUB_ID, CarrierConfigManager.KEY_WORLD_PHONE_BOOL, false) + + val networkModePreferenceType = getNetworkModePreferenceType(context, SUB_ID) + + assertThat(networkModePreferenceType) + .isEqualTo(NetworkModePreferenceType.EnabledNetworkMode) + } + + private companion object { + const val SUB_ID = 10 + } +} diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/MobileNetworkSettingsSearchIndexTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/MobileNetworkSettingsSearchIndexTest.kt index 5e7e83c9f43..bf5120817c1 100644 --- a/tests/spa_unit/src/com/android/settings/network/telephony/MobileNetworkSettingsSearchIndexTest.kt +++ b/tests/spa_unit/src/com/android/settings/network/telephony/MobileNetworkSettingsSearchIndexTest.kt @@ -25,6 +25,7 @@ import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.settings.R import com.android.settings.network.telephony.MobileNetworkSettingsSearchIndex.Companion.isMobileNetworkSettingsSearchable +import com.android.settings.network.telephony.MobileNetworkSettingsSearchIndex.MobileNetworkSettingsSearchResult import com.android.settings.spa.SpaSearchLanding.BundleValue import com.android.settings.spa.SpaSearchLanding.SpaSearchLandingFragment import com.android.settings.spa.SpaSearchLanding.SpaSearchLandingKey @@ -62,10 +63,12 @@ class MobileNetworkSettingsSearchIndexTest { private val mobileNetworkSettingsSearchIndex = MobileNetworkSettingsSearchIndex { listOf( object : MobileNetworkSettingsSearchIndex.MobileNetworkSettingsSearchItem { - override val key = KEY - override val title = TITLE - - override fun isAvailable(subId: Int) = subId == SUB_ID_1 + override fun getSearchResult(subId: Int): MobileNetworkSettingsSearchResult? = + if (subId == SUB_ID_1) { + MobileNetworkSettingsSearchResult(key = KEY, title = TITLE) + } else { + null + } }) } diff --git a/tests/unit/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java index b3d095e5453..adc8dc0cdc4 100644 --- a/tests/unit/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java @@ -18,9 +18,6 @@ package com.android.settings.network.telephony; import static androidx.lifecycle.Lifecycle.Event.ON_START; -import static com.android.settings.core.BasePreferenceController.AVAILABLE; -import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE; -import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; import static com.android.settings.network.telephony.MobileNetworkUtils.getRafFromNetworkType; import static com.android.settings.network.telephony.TelephonyConstants.RadioAccessFamily.CDMA; import static com.android.settings.network.telephony.TelephonyConstants.RadioAccessFamily.EVDO; @@ -33,8 +30,6 @@ import static com.android.settings.network.telephony.TelephonyConstants.RadioAcc import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; @@ -123,79 +118,6 @@ public class EnabledNetworkModePreferenceControllerTest { mPreference.setKey(mController.getPreferenceKey()); } - @UiThreadTest - @Test - public void getAvailabilityStatus_hideCarrierNetworkSettings_returnUnavailable() { - mPersistableBundle.putBoolean( - CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL, - true); - - assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); - } - - @UiThreadTest - @Test - public void getAvailabilityStatus_hidePreferredNetworkType_returnUnavailable() { - mPersistableBundle.putBoolean(CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL, - true); - - when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE); - when(mServiceState.getDataRegistrationState()).thenReturn( - ServiceState.STATE_OUT_OF_SERVICE); - assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); - - when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); - when(mServiceState.getDataRegistrationState()).thenReturn(ServiceState.STATE_IN_SERVICE); - - when(mServiceState.getRoaming()).thenReturn(false); - assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); - - when(mServiceState.getRoaming()).thenReturn(true); - assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); - } - - @UiThreadTest - @Test - public void getAvailabilityStatus_carrierConfigNotReady_returnUnavailable() { - mPersistableBundle.putBoolean(CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL, false); - - assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); - } - - @UiThreadTest - @Test - public void getAvailabilityStatus_notWorldPhone_returnAvailable() { - mPersistableBundle.putBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL, - false); - mPersistableBundle.putBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL, false); - - assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); - } - - @UiThreadTest - @Test - public void getAvailabilityStatus_callStateIsIdle_returnAvailable() { - mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA); - mController.getTelephonyCallback().onCallStateChanged(TelephonyManager.CALL_STATE_IDLE); - - mController.updateState(mPreference); - - assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); - assertTrue(mPreference.isEnabled()); - } - - @UiThreadTest - @Test - public void getAvailabilityStatus_duringCalling_returnAvailable() { - mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA); - mController.getTelephonyCallback().onCallStateChanged(TelephonyManager.CALL_STATE_OFFHOOK); - - mController.updateState(mPreference); - - assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE_UNSEARCHABLE); - assertFalse(mPreference.isEnabled()); - } - @UiThreadTest @Test public void updateState_LteWorldPhone_GlobalHasLte() { diff --git a/tests/unit/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java index 9dbfdde3d3b..f22ad3bce8d 100644 --- a/tests/unit/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java @@ -16,8 +16,6 @@ package com.android.settings.network.telephony; -import static com.android.settings.core.BasePreferenceController.AVAILABLE; -import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; import static com.android.settings.network.telephony.TelephonyConstants.RadioAccessFamily.GSM; import static com.android.settings.network.telephony.TelephonyConstants.RadioAccessFamily.RAF_TD_SCDMA; import static com.android.settings.network.telephony.TelephonyConstants.RadioAccessFamily.WCDMA; @@ -32,7 +30,6 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.os.PersistableBundle; -import android.telephony.CarrierConfigManager; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; @@ -91,43 +88,6 @@ public class PreferredNetworkModePreferenceControllerTest { mPreference.setKey(mController.getPreferenceKey()); } - @Test - public void getAvailabilityStatus_hideCarrierNetworkSettings_returnUnavailable() { - mPersistableBundle.putBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL, - true); - - assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); - } - - @Test - public void getAvailabilityStatus_worldPhone_returnAvailable() { - mPersistableBundle.putBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL, - false); - mPersistableBundle.putBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL, true); - - assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); - } - - @Test - public void getAvailabilityStatus_hidePreferredNetworkType_returnUnavailable() { - mPersistableBundle.putBoolean(CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL, - true); - - when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE); - when(mServiceState.getDataRegistrationState()).thenReturn( - ServiceState.STATE_OUT_OF_SERVICE); - assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); - - when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); - when(mServiceState.getDataRegistrationState()).thenReturn(ServiceState.STATE_IN_SERVICE); - - when(mServiceState.getRoaming()).thenReturn(false); - assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); - - when(mServiceState.getRoaming()).thenReturn(true); - assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); - } - @Test public void updateState_updateByNetworkMode() { // NETWORK_MODE_TDSCDMA_GSM_WCDMA = RAF_TD_SCDMA | GSM | WCDMA