diff --git a/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.kt b/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.kt index 1d2b73f3daf..84cdec44a64 100644 --- a/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.kt +++ b/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.kt @@ -21,7 +21,6 @@ import android.content.Intent import android.provider.Settings import android.telephony.ServiceState import android.telephony.TelephonyManager -import androidx.annotation.VisibleForTesting import androidx.lifecycle.LifecycleOwner import androidx.preference.Preference import androidx.preference.PreferenceScreen @@ -39,13 +38,16 @@ import kotlinx.coroutines.withContext /** * Preference controller for "Open network select" */ -class OpenNetworkSelectPagePreferenceController(context: Context, key: String) : - TelephonyBasePreferenceController(context, key), +class OpenNetworkSelectPagePreferenceController @JvmOverloads constructor( + context: Context, + key: String, + private val allowedNetworkTypesFlowFactory: (subId: Int) -> Flow = + context::allowedNetworkTypesFlow, + private val serviceStateFlowFactory: (subId: Int) -> Flow = + context::serviceStateFlow, +) : TelephonyBasePreferenceController(context, key), AutoSelectPreferenceController.OnNetworkSelectModeListener { - private lateinit var allowedNetworkTypesFlow: Flow - private lateinit var serviceStateFlow: Flow - private var preference: Preference? = null /** @@ -53,22 +55,9 @@ class OpenNetworkSelectPagePreferenceController(context: Context, key: String) : */ fun init(subId: Int): OpenNetworkSelectPagePreferenceController { mSubId = subId - allowedNetworkTypesFlow = mContext.allowedNetworkTypesFlow(subId) - serviceStateFlow = mContext.serviceStateFlow(subId) return this } - @VisibleForTesting - fun init( - subId: Int, - allowedNetworkTypesFlow: Flow, - serviceStateFlow: Flow, - ) { - mSubId = subId - this.allowedNetworkTypesFlow = allowedNetworkTypesFlow - this.serviceStateFlow = serviceStateFlow - } - override fun getAvailabilityStatus(subId: Int) = if (MobileNetworkUtils.shouldDisplayNetworkSelectOptions(mContext, subId)) AVAILABLE else CONDITIONALLY_UNAVAILABLE @@ -83,13 +72,13 @@ class OpenNetworkSelectPagePreferenceController(context: Context, key: String) : } override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) { - allowedNetworkTypesFlow.collectLatestWithLifecycle(viewLifecycleOwner) { + allowedNetworkTypesFlowFactory(mSubId).collectLatestWithLifecycle(viewLifecycleOwner) { preference?.isVisible = withContext(Dispatchers.Default) { MobileNetworkUtils.shouldDisplayNetworkSelectOptions(mContext, mSubId) } } - serviceStateFlow + serviceStateFlowFactory(mSubId) .collectLatestWithLifecycle(viewLifecycleOwner) { serviceState -> preference?.summary = if (serviceState.state == ServiceState.STATE_IN_SERVICE) { withContext(Dispatchers.Default) { diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceControllerTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceControllerTest.kt index b749a3afff0..0deeafbf9da 100644 --- a/tests/spa_unit/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceControllerTest.kt +++ b/tests/spa_unit/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceControllerTest.kt @@ -59,21 +59,19 @@ class OpenNetworkSelectPagePreferenceControllerTest { private val preference = Preference(context).apply { key = TEST_KEY } private val preferenceScreen = PreferenceManager(context).createPreferenceScreen(context) - private val controller = OpenNetworkSelectPagePreferenceController(context, TEST_KEY) - private val serviceState = ServiceState() + private val controller = OpenNetworkSelectPagePreferenceController( + context = context, + key = TEST_KEY, + allowedNetworkTypesFlowFactory = { emptyFlow() }, + serviceStateFlowFactory = { flowOf(serviceState) }, + ).init(subId = SUB_ID) + @Before fun setUp() { preferenceScreen.addPreference(preference) - controller.apply { - init( - subId = SUB_ID, - allowedNetworkTypesFlow = emptyFlow(), - serviceStateFlow = flowOf(serviceState), - ) - displayPreference(preferenceScreen) - } + controller.displayPreference(preferenceScreen) } @Test