Merge "Fix lateinit property allowedNetworkTypesFlow" into main
diff --git a/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.kt b/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.kt
index 1d2b73f..84cdec4 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.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 @@
/**
* 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<Long> =
+ context::allowedNetworkTypesFlow,
+ private val serviceStateFlowFactory: (subId: Int) -> Flow<ServiceState> =
+ context::serviceStateFlow,
+) : TelephonyBasePreferenceController(context, key),
AutoSelectPreferenceController.OnNetworkSelectModeListener {
- private lateinit var allowedNetworkTypesFlow: Flow<Long>
- private lateinit var serviceStateFlow: Flow<ServiceState>
-
private var preference: Preference? = null
/**
@@ -53,22 +55,9 @@
*/
fun init(subId: Int): OpenNetworkSelectPagePreferenceController {
mSubId = subId
- allowedNetworkTypesFlow = mContext.allowedNetworkTypesFlow(subId)
- serviceStateFlow = mContext.serviceStateFlow(subId)
return this
}
- @VisibleForTesting
- fun init(
- subId: Int,
- allowedNetworkTypesFlow: Flow<Long>,
- serviceStateFlow: Flow<ServiceState>,
- ) {
- 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 @@
}
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 b749a3a..0deeafb 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 @@
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