diff options
| author | 2023-12-20 12:14:27 -0500 | |
|---|---|---|
| committer | 2023-12-20 12:38:47 -0500 | |
| commit | f9027a5955112c1162be3da5bff66d6fefcae3f2 (patch) | |
| tree | 0a88ada1d13f530fa9e7b129adcfacd1cabe7b8f | |
| parent | ff50b586a4b987d30f11922032cd113811189ccc (diff) | |
[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
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?>, + subscriptionModel: Flow<SubscriptionModel?>, 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?>, + subscriptionModel: Flow<SubscriptionModel?>, 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?>, + subscriptionModel: Flow<SubscriptionModel?>, defaultNetworkName: NetworkNameModel, networkNameSeparator: String, connectivityManager: ConnectivityManager, @@ -448,7 +448,7 @@ class MobileConnectionRepositoryImpl( fun build( subId: Int, mobileLogger: TableLogBuffer, - subscriptionModel: StateFlow<SubscriptionModel?>, + subscriptionModel: Flow<SubscriptionModel?>, 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<SubscriptionModel?> { - return subscriptions - .map { list -> list.firstOrNull { model -> model.subscriptionId == subId } } - .stateIn(scope, SharingStarted.WhileSubscribed(), null) + private fun subscriptionModelForSubId(subId: Int): Flow<SubscriptionModel?> { + return subscriptions.map { list -> + list.firstOrNull { model -> model.subscriptionId == subId } + } } private fun createRepositoryForSubId(subId: Int): FullMobileConnectionRepository { |