From 956894caff12bbd004009e43664ddab762fee1e2 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Mon, 25 Dec 2023 12:27:36 +0800 Subject: [PATCH 1/3] Fix lateinit property allowedNetworkTypesFlow Which has not been initialized. Convert it to factory to fix. Fix: 317353030 Test: manual - on Mobile Settings Test: unit test Change-Id: Ie5f22d47cb3f3fe036c706ba77ed3bdaad0b54a2 --- ...enNetworkSelectPagePreferenceController.kt | 31 ++++++------------- ...tworkSelectPagePreferenceControllerTest.kt | 18 +++++------ 2 files changed, 18 insertions(+), 31 deletions(-) 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 From be1538671fe85752aabf0e1f3b42bf897a7f3565 Mon Sep 17 00:00:00 2001 From: Jun Lan Date: Mon, 25 Dec 2023 13:06:50 +0800 Subject: [PATCH 2/3] Fix test failure with package user id Context: https://android-build.corp.google.com/test_investigate/?invocationId=I73600010230800138&testResultId=TR57529105387126666 Bug: 315477872 Test: manual Change-Id: I8d0bd970bb43cc27b7f280c50cfcf4e3ea01f321 --- .../fuelgauge/batteryusage/BatteryDiffEntryTest.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java index 6f1dce64cb6..4567bc398d5 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java @@ -59,6 +59,7 @@ import java.util.Locale; public final class BatteryDiffEntryTest { private static final int UID = 100; + private static final int USER_ID = 0; private static final int UNINSTALLED_UID = 101; private static final String PACKAGE_NAME = "com.android.testing"; private static final String UNINSTALLED_PACKAGE_NAME = "com.android.testing.uninstalled"; @@ -87,13 +88,14 @@ public final class BatteryDiffEntryTest { doReturn(mMockPackageManager).when(mContext).getPackageManager(); doReturn(UID) .when(mMockPackageManager) - .getPackageUid(PACKAGE_NAME, PackageManager.GET_META_DATA); + .getPackageUidAsUser(PACKAGE_NAME, PackageManager.GET_META_DATA, USER_ID); doReturn(BatteryUtils.UID_NULL) .when(mMockPackageManager) - .getPackageUid(UNINSTALLED_PACKAGE_NAME, PackageManager.GET_META_DATA); + .getPackageUidAsUser( + UNINSTALLED_PACKAGE_NAME, PackageManager.GET_META_DATA, USER_ID); doReturn(BatteryUtils.UID_ZERO) .when(mMockPackageManager) - .getPackageUid(UID_ZERO_PACKAGE_NAME, PackageManager.GET_META_DATA); + .getPackageUidAsUser(UID_ZERO_PACKAGE_NAME, PackageManager.GET_META_DATA, USER_ID); BatteryDiffEntry.clearCache(); } From 2ff71edc1cdbcbf044a1ca721e78cbe3cefa4419 Mon Sep 17 00:00:00 2001 From: sunnyshao Date: Thu, 21 Dec 2023 12:05:35 +0800 Subject: [PATCH 3/3] Disabled the "Double-tap to activate" - disabled the listview in the createVerifiedLinksDialog Fixes: 242822432 Test: manual test Change-Id: Iee884691d5900ff016f41a9ca120604d52dfc362 --- .../settings/applications/intentpicker/AppLaunchSettings.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java b/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java index 72f754379aa..676c35a3226 100644 --- a/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java +++ b/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java @@ -288,6 +288,7 @@ public class AppLaunchSettings extends AppInfoBase implements .create(); if (dialog.getListView() != null) { dialog.getListView().setTextDirection(View.TEXT_DIRECTION_LOCALE); + dialog.getListView().setEnabled(false); } else { Log.w(TAG, "createVerifiedLinksDialog: dialog.getListView() is null, please check it."); }