Merge changes Ib9dde023,I917506fc,I8576cc36 into udc-dev

* changes:
  [SB Refactor] Only use carrier merged sub ID if wifi or CM are default.
  [SB Refactor] Use a real WifiRepo in MobileConnectionsRepositoryTest.
  [SB Refactor] Convert MobileConnectionsRepositoryTest to testScope etc.
This commit is contained in:
Caitlin Shkuratov
2023-05-08 15:57:34 +00:00
committed by Android (Google) Code Review
4 changed files with 304 additions and 302 deletions

View File

@@ -160,7 +160,7 @@ abstract class StatusBarPipelineModule {
@SysUISingleton
@SharedConnectivityInputLog
fun provideSharedConnectivityTableLogBuffer(factory: LogBufferFactory): LogBuffer {
return factory.create("SharedConnectivityInputLog", 30)
return factory.create("SharedConnectivityInputLog", 60)
}
@Provides

View File

@@ -38,6 +38,7 @@ import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.log.table.logDiffsForTable
import com.android.systemui.statusbar.pipeline.airplane.data.repository.AirplaneModeRepository
import com.android.systemui.statusbar.pipeline.dagger.MobileSummaryLog
import com.android.systemui.statusbar.pipeline.mobile.data.MobileInputLogger
import com.android.systemui.statusbar.pipeline.mobile.data.model.NetworkNameModel
@@ -88,6 +89,7 @@ constructor(
private val context: Context,
@Background private val bgDispatcher: CoroutineDispatcher,
@Application private val scope: CoroutineScope,
airplaneModeRepository: AirplaneModeRepository,
// Some "wifi networks" should be rendered as a mobile connection, which is why the wifi
// repository is an input to the mobile repository.
// See [CarrierMergedConnectionRepository] for details.
@@ -106,10 +108,20 @@ constructor(
context.getString(R.string.status_bar_network_name_separator)
private val carrierMergedSubId: StateFlow<Int?> =
wifiRepository.wifiNetwork
.mapLatest {
if (it is WifiNetworkModel.CarrierMerged) {
it.subscriptionId
combine(
wifiRepository.wifiNetwork,
connectivityRepository.defaultConnections,
airplaneModeRepository.isAirplaneMode,
) { wifiNetwork, defaultConnections, isAirplaneMode ->
// The carrier merged connection should only be used if it's also the default
// connection or mobile connections aren't available because of airplane mode.
val defaultConnectionIsNonMobile =
defaultConnections.carrierMerged.isDefault ||
defaultConnections.wifi.isDefault ||
isAirplaneMode
if (wifiNetwork is WifiNetworkModel.CarrierMerged && defaultConnectionIsNonMobile) {
wifiNetwork.subscriptionId
} else {
null
}
@@ -269,12 +281,8 @@ constructor(
.stateIn(scope, SharingStarted.WhileSubscribed(), false)
override val hasCarrierMergedConnection: StateFlow<Boolean> =
combine(
connectivityRepository.defaultConnections,
carrierMergedSubId,
) { defaultConnections, carrierMergedSubId ->
defaultConnections.carrierMerged.isDefault || carrierMergedSubId != null
}
carrierMergedSubId
.map { it != null }
.distinctUntilChanged()
.logDiffsForTable(
tableLogger,

View File

@@ -26,6 +26,7 @@ import com.android.systemui.demomode.DemoModeController
import com.android.systemui.dump.DumpManager
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.log.table.TableLogBufferFactory
import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository
import com.android.systemui.statusbar.pipeline.mobile.data.MobileInputLogger
import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
import com.android.systemui.statusbar.pipeline.mobile.data.repository.demo.DemoMobileConnectionsRepository
@@ -131,6 +132,7 @@ class MobileRepositorySwitcherTest : SysuiTestCase() {
context,
IMMEDIATE,
scope,
FakeAirplaneModeRepository(),
wifiRepository,
mock(),
)