Loading src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.kt +10 −21 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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<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 /** Loading @@ -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<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 Loading @@ -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) { Loading tests/spa_unit/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceControllerTest.kt +8 −10 Original line number Diff line number Diff line Loading @@ -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 Loading Loading
src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.kt +10 −21 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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<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 /** Loading @@ -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<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 Loading @@ -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) { Loading
tests/spa_unit/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceControllerTest.kt +8 −10 Original line number Diff line number Diff line Loading @@ -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 Loading