From 83853143e2ff44ff37b83f7bd025eb1e74411295 Mon Sep 17 00:00:00 2001 From: Caitlin Shkuratov Date: Wed, 19 Apr 2023 14:26:14 +0000 Subject: [PATCH] [SB Refactor] Update wifi network to inactive if carrier merged is lost. Bug: 278618530 Test: atest WifiRepositoryImplTest Change-Id: I949028cee84ff3eb4dbc3ef30888c5e4766d4782 --- .../repository/prod/WifiRepositoryImpl.kt | 6 ++-- .../repository/prod/WifiRepositoryImplTest.kt | 29 ++++++++++++++++++- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImpl.kt index b37c44a2f8cd3..4e52be91f0af5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImpl.kt @@ -160,8 +160,10 @@ constructor( val wifi = currentWifi if ( - wifi is WifiNetworkModel.Active && - wifi.networkId == network.getNetId() + (wifi is WifiNetworkModel.Active && + wifi.networkId == network.getNetId()) || + (wifi is WifiNetworkModel.CarrierMerged && + wifi.networkId == network.getNetId()) ) { val newNetworkModel = WifiNetworkModel.Inactive currentWifi = newNetworkModel diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImplTest.kt index d30e0246c2dd7..dc68180d962d9 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImplTest.kt @@ -994,7 +994,7 @@ class WifiRepositoryImplTest : SysuiTestCase() { } @Test - fun wifiNetwork_currentNetworkLost_flowHasNoNetwork() = + fun wifiNetwork_currentActiveNetworkLost_flowHasNoNetwork() = testScope.runTest { var latest: WifiNetworkModel? = null val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this) @@ -1012,6 +1012,33 @@ class WifiRepositoryImplTest : SysuiTestCase() { job.cancel() } + /** Possible regression test for b/278618530. */ + @Test + fun wifiNetwork_currentCarrierMergedNetworkLost_flowHasNoNetwork() = + testScope.runTest { + var latest: WifiNetworkModel? = null + val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this) + + val wifiInfo = + mock().apply { + whenever(this.isPrimary).thenReturn(true) + whenever(this.isCarrierMerged).thenReturn(true) + } + + getNetworkCallback() + .onCapabilitiesChanged(NETWORK, createWifiNetworkCapabilities(wifiInfo)) + assertThat(latest is WifiNetworkModel.CarrierMerged).isTrue() + assertThat((latest as WifiNetworkModel.CarrierMerged).networkId).isEqualTo(NETWORK_ID) + + // WHEN we lose our current network + getNetworkCallback().onLost(NETWORK) + + // THEN we update to no network + assertThat(latest is WifiNetworkModel.Inactive).isTrue() + + job.cancel() + } + @Test fun wifiNetwork_unknownNetworkLost_flowHasPreviousNetwork() = testScope.runTest {