From e5e9b8cfaff0cbfdcfc5b461841b30861eb1a5f6 Mon Sep 17 00:00:00 2001 From: Evan Laird Date: Mon, 6 Mar 2023 17:05:49 -0500 Subject: [PATCH] [Sb refactor] Use MobileMappings key for Unknown net types ResolvedNetworkType.UnknownNetworkType was using "unknown" as the key, but MobileMappings actually can potentially have some embedded information about which network type icon to display in the case of unknown. This would also always cause a lookup failure, causing the G network indicator to show in cases where it should not be. Test: MobileConnectionRepositoryTest Bug: 269040632 Change-Id: I61f450faa756487983f300ff9dfefdcb74424e43 --- .../mobile/data/model/ResolvedNetworkType.kt | 4 +++- .../prod/MobileConnectionRepositoryTest.kt | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/ResolvedNetworkType.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/ResolvedNetworkType.kt index bacf34fa2d606..cf7a313a4cb1c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/ResolvedNetworkType.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/ResolvedNetworkType.kt @@ -17,7 +17,9 @@ package com.android.systemui.statusbar.pipeline.mobile.data.model import android.telephony.Annotation.NetworkType +import android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN import com.android.settingslib.SignalIcon +import com.android.settingslib.mobile.MobileMappings import com.android.settingslib.mobile.TelephonyIcons import com.android.systemui.log.table.Diffable import com.android.systemui.log.table.TableRowLogger @@ -38,7 +40,7 @@ sealed interface ResolvedNetworkType : Diffable { } object UnknownNetworkType : ResolvedNetworkType { - override val lookupKey: String = "unknown" + override val lookupKey: String = MobileMappings.toIconKey(NETWORK_TYPE_UNKNOWN) override fun toString(): String = "Unknown" } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt index abc722a94c852..f6e595924f586 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt @@ -50,7 +50,9 @@ import android.telephony.TelephonyManager.EXTRA_SHOW_SPN import android.telephony.TelephonyManager.EXTRA_SPN import android.telephony.TelephonyManager.EXTRA_SUBSCRIPTION_ID import android.telephony.TelephonyManager.NETWORK_TYPE_LTE +import android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN import androidx.test.filters.SmallTest +import com.android.settingslib.mobile.MobileMappings import com.android.systemui.SysuiTestCase import com.android.systemui.log.table.TableLogBuffer import com.android.systemui.statusbar.pipeline.mobile.data.MobileInputLogger @@ -391,6 +393,24 @@ class MobileConnectionRepositoryTest : SysuiTestCase() { job.cancel() } + @Test + fun networkType_unknown_hasCorrectKey() = + runBlocking(IMMEDIATE) { + var latest: ResolvedNetworkType? = null + val job = underTest.resolvedNetworkType.onEach { latest = it }.launchIn(this) + + val callback = getTelephonyCallbackForType() + val type = NETWORK_TYPE_UNKNOWN + val expected = UnknownNetworkType + val ti = mock().also { whenever(it.networkType).thenReturn(type) } + callback.onDisplayInfoChanged(ti) + + assertThat(latest).isEqualTo(expected) + assertThat(latest!!.lookupKey).isEqualTo(MobileMappings.toIconKey(type)) + + job.cancel() + } + @Test fun networkType_updatesUsingDefault() = runBlocking(IMMEDIATE) {