From 9329684c8603b9c751652eef74628d1d5652c7f2 Mon Sep 17 00:00:00 2001 From: tomhsu Date: Tue, 3 Dec 2024 08:51:54 +0000 Subject: [PATCH] Fix crash due to no Satellite - AutoSelectPreferenceController get null pointer exception Flag: EXEMPT bug fix Fix: b/381995900 Test: atest pass Change-Id: Iadbd83825cdfbc0aabd85b79e9ad7043f172a8a1 --- .../gsm/AutoSelectPreferenceController.kt | 4 ++-- .../gsm/AutoSelectPreferenceControllerTest.kt | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.kt b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.kt index 4bd91b2b5e6..18426ab3f28 100644 --- a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.kt +++ b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.kt @@ -82,7 +82,8 @@ class AutoSelectPreferenceController @JvmOverloads constructor( private var isSelectedSubIdForSatellite = false private lateinit var telephonyManager: TelephonyManager - private lateinit var satelliteManager: SatelliteManager + private val satelliteManager: SatelliteManager? = + context.getSystemService(SatelliteManager::class.java) private val listeners = mutableListOf() @VisibleForTesting @@ -112,7 +113,6 @@ class AutoSelectPreferenceController @JvmOverloads constructor( this.subId = subId telephonyManager = mContext.getSystemService(TelephonyManager::class.java)!! .createForSubscriptionId(subId) - satelliteManager = mContext.getSystemService(SatelliteManager::class.java)!! return this } diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceControllerTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceControllerTest.kt index 641866d7862..6044389e8d6 100644 --- a/tests/spa_unit/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceControllerTest.kt +++ b/tests/spa_unit/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceControllerTest.kt @@ -217,6 +217,20 @@ class AutoSelectPreferenceControllerTest { .assertIsEnabled() } + @Test + @EnableFlags(Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION) + fun initialization_noSatellite_noCrash() { + `when`(context.getSystemService(SatelliteManager::class.java)).thenReturn(null) + + AutoSelectPreferenceController( + context = context, + key = TEST_KEY, + allowedNetworkTypesFlowFactory = { emptyFlow() }, + serviceStateFlowFactory = { flowOf(serviceState) }, + getConfigForSubId = { carrierConfig }, + ).init(subId = SUB_ID) + } + @Test fun onClick_turnOff_startNetworkSelectActivity() { serviceState.isManualSelection = false