From f9027a5955112c1162be3da5bff66d6fefcae3f2 Mon Sep 17 00:00:00 2001 From: Evan Laird Date: Wed, 20 Dec 2023 12:14:27 -0500 Subject: [Mobile] Don't return StateFlow from method MobileConnectionsRepositoryImpl#subscriptionModelForSubId was creating a StateFlow for each subscription that it returned. This is an incorrect usage since that `stateIn` call starts a new job to collect from the underlying flow, and it is never canceled until the scope is canceled. The scope being used is the @Application scope, so it's effectively never canceled. It seems that this was not a load bearing StateFlow, so this CL just removes the `stateIn` call to fix that issue. Test: tests in statusbar/pipeline/mobile Bug: 317205264 Flag: NONE Change-Id: I82ddc7576e2b8d45574be6f0c3f0176da9457bb9 --- .../mobile/data/repository/prod/FullMobileConnectionRepository.kt | 5 +++-- .../mobile/data/repository/prod/MobileConnectionRepositoryImpl.kt | 4 ++-- .../data/repository/prod/MobileConnectionsRepositoryImpl.kt | 8 ++++---- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/FullMobileConnectionRepository.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/FullMobileConnectionRepository.kt index 425da5fc30ba..48bf7ac60ba7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/FullMobileConnectionRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/FullMobileConnectionRepository.kt @@ -27,6 +27,7 @@ import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConn import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow @@ -48,7 +49,7 @@ class FullMobileConnectionRepository( override val subId: Int, startingIsCarrierMerged: Boolean, override val tableLogBuffer: TableLogBuffer, - subscriptionModel: StateFlow, + subscriptionModel: Flow, private val defaultNetworkName: NetworkNameModel, private val networkNameSeparator: String, @Application scope: CoroutineScope, @@ -331,7 +332,7 @@ class FullMobileConnectionRepository( fun build( subId: Int, startingIsCarrierMerged: Boolean, - subscriptionModel: StateFlow, + subscriptionModel: Flow, defaultNetworkName: NetworkNameModel, networkNameSeparator: String, ): FullMobileConnectionRepository { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryImpl.kt index 4fb99c24c8ca..be2c21be816d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryImpl.kt @@ -96,7 +96,7 @@ import kotlinx.coroutines.withContext class MobileConnectionRepositoryImpl( override val subId: Int, private val context: Context, - subscriptionModel: StateFlow, + subscriptionModel: Flow, defaultNetworkName: NetworkNameModel, networkNameSeparator: String, connectivityManager: ConnectivityManager, @@ -448,7 +448,7 @@ class MobileConnectionRepositoryImpl( fun build( subId: Int, mobileLogger: TableLogBuffer, - subscriptionModel: StateFlow, + subscriptionModel: Flow, defaultNetworkName: NetworkNameModel, networkNameSeparator: String, ): MobileConnectionRepository { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt index 2a510e41ec9c..a455db2e67ce 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt @@ -357,10 +357,10 @@ constructor( @VisibleForTesting fun getSubIdRepoCache() = subIdRepositoryCache - private fun subscriptionModelForSubId(subId: Int): StateFlow { - return subscriptions - .map { list -> list.firstOrNull { model -> model.subscriptionId == subId } } - .stateIn(scope, SharingStarted.WhileSubscribed(), null) + private fun subscriptionModelForSubId(subId: Int): Flow { + return subscriptions.map { list -> + list.firstOrNull { model -> model.subscriptionId == subId } + } } private fun createRepositoryForSubId(subId: Int): FullMobileConnectionRepository { -- cgit v1.2.3-59-g8ed1b