Merge changes from topic "caitlinshk-wifi-logging-split" into tm-qpr-dev
* changes: [SB Refactor] Remove non-mobile usages of MobileInputLogger. [SB Refactor] Re-name ConnectivityPipelineLogger -> MobileInputLogger. [SB Refactor] Define a new buffer for the shared connectivity repo. [SB Refactor] Don't use ConnectivityPipelineLogger for the airplane VM. [SB Refactor] Split the wifi input logging into its own class.
This commit is contained in:
committed by
Android (Google) Code Review
commit
3800ea7c67
@@ -451,7 +451,6 @@
|
|||||||
-packages/SystemUI/src/com/android/systemui/statusbar/phone/userswitcher/StatusBarUserSwitcherController.kt
|
-packages/SystemUI/src/com/android/systemui/statusbar/phone/userswitcher/StatusBarUserSwitcherController.kt
|
||||||
-packages/SystemUI/src/com/android/systemui/statusbar/phone/userswitcher/StatusBarUserSwitcherFeatureController.kt
|
-packages/SystemUI/src/com/android/systemui/statusbar/phone/userswitcher/StatusBarUserSwitcherFeatureController.kt
|
||||||
-packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt
|
-packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt
|
||||||
-packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ConnectivityPipelineLogger.kt
|
|
||||||
-packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryStateNotifier.kt
|
-packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryStateNotifier.kt
|
||||||
-packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceControlsController.kt
|
-packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceControlsController.kt
|
||||||
-packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImpl.kt
|
-packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImpl.kt
|
||||||
@@ -736,7 +735,6 @@
|
|||||||
-packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallLoggerTest.kt
|
-packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallLoggerTest.kt
|
||||||
-packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/panelstate/ShadeExpansionStateManagerTest.kt
|
-packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/panelstate/ShadeExpansionStateManagerTest.kt
|
||||||
-packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/userswitcher/StatusBarUserSwitcherControllerOldImplTest.kt
|
-packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/userswitcher/StatusBarUserSwitcherControllerOldImplTest.kt
|
||||||
-packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ConnectivityPipelineLoggerTest.kt
|
|
||||||
-packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryStateNotifierTest.kt
|
-packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryStateNotifierTest.kt
|
||||||
-packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ClockTest.kt
|
-packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ClockTest.kt
|
||||||
-packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImplTest.kt
|
-packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImplTest.kt
|
||||||
|
|||||||
@@ -265,16 +265,6 @@ public class LogModule {
|
|||||||
return factory.create("MediaCarouselCtlrLog", 20);
|
return factory.create("MediaCarouselCtlrLog", 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides a {@link LogBuffer} for use in the status bar connectivity pipeline
|
|
||||||
*/
|
|
||||||
@Provides
|
|
||||||
@SysUISingleton
|
|
||||||
@StatusBarConnectivityLog
|
|
||||||
public static LogBuffer provideStatusBarConnectivityBuffer(LogBufferFactory factory) {
|
|
||||||
return factory.create("SbConnectivity", 64);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Allows logging buffers to be tweaked via adb on debug builds but not on prod builds. */
|
/** Allows logging buffers to be tweaked via adb on debug builds but not on prod builds. */
|
||||||
@Provides
|
@Provides
|
||||||
@SysUISingleton
|
@SysUISingleton
|
||||||
|
|||||||
@@ -18,9 +18,10 @@ package com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel
|
|||||||
|
|
||||||
import com.android.systemui.dagger.SysUISingleton
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
import com.android.systemui.dagger.qualifiers.Application
|
import com.android.systemui.dagger.qualifiers.Application
|
||||||
|
import com.android.systemui.log.table.TableLogBuffer
|
||||||
|
import com.android.systemui.log.table.logDiffsForTable
|
||||||
import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.AirplaneModeInteractor
|
import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.AirplaneModeInteractor
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
import com.android.systemui.statusbar.pipeline.dagger.AirplaneTableLog
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger.Companion.logOutputChange
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.flow.SharingStarted
|
import kotlinx.coroutines.flow.SharingStarted
|
||||||
@@ -46,7 +47,7 @@ class AirplaneModeViewModelImpl
|
|||||||
@Inject
|
@Inject
|
||||||
constructor(
|
constructor(
|
||||||
interactor: AirplaneModeInteractor,
|
interactor: AirplaneModeInteractor,
|
||||||
logger: ConnectivityPipelineLogger,
|
@AirplaneTableLog logger: TableLogBuffer,
|
||||||
@Application private val scope: CoroutineScope,
|
@Application private val scope: CoroutineScope,
|
||||||
) : AirplaneModeViewModel {
|
) : AirplaneModeViewModel {
|
||||||
override val isAirplaneModeIconVisible: StateFlow<Boolean> =
|
override val isAirplaneModeIconVisible: StateFlow<Boolean> =
|
||||||
@@ -56,6 +57,11 @@ constructor(
|
|||||||
isAirplaneMode && !isAirplaneIconForceHidden
|
isAirplaneMode && !isAirplaneIconForceHidden
|
||||||
}
|
}
|
||||||
.distinctUntilChanged()
|
.distinctUntilChanged()
|
||||||
.logOutputChange(logger, "isAirplaneModeIconVisible")
|
.logDiffsForTable(
|
||||||
|
logger,
|
||||||
|
columnPrefix = "",
|
||||||
|
columnName = "isAirplaneModeIconVisible",
|
||||||
|
initialValue = false,
|
||||||
|
)
|
||||||
.stateIn(scope, started = SharingStarted.WhileSubscribed(), initialValue = false)
|
.stateIn(scope, started = SharingStarted.WhileSubscribed(), initialValue = false)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2022 The Android Open Source Project
|
* Copyright (C) 2023 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -14,22 +14,12 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.android.systemui.log.dagger;
|
package com.android.systemui.statusbar.pipeline.dagger
|
||||||
|
|
||||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
import javax.inject.Qualifier
|
||||||
|
|
||||||
import com.android.systemui.plugins.log.LogBuffer;
|
/** Logs for inputs into the mobile pipeline. */
|
||||||
|
|
||||||
import java.lang.annotation.Documented;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
|
|
||||||
import javax.inject.Qualifier;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link LogBuffer} for status bar connectivity events.
|
|
||||||
*/
|
|
||||||
@Qualifier
|
@Qualifier
|
||||||
@Documented
|
@MustBeDocumented
|
||||||
@Retention(RUNTIME)
|
@kotlin.annotation.Retention(AnnotationRetention.RUNTIME)
|
||||||
public @interface StatusBarConnectivityLog {
|
annotation class MobileInputLog
|
||||||
}
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2023 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.systemui.statusbar.pipeline.dagger
|
||||||
|
|
||||||
|
import javax.inject.Qualifier
|
||||||
|
|
||||||
|
/** Logs for connectivity-related inputs that are shared across wifi, mobile, etc. */
|
||||||
|
@Qualifier
|
||||||
|
@MustBeDocumented
|
||||||
|
@kotlin.annotation.Retention(AnnotationRetention.RUNTIME)
|
||||||
|
annotation class SharedConnectivityInputLog
|
||||||
@@ -19,8 +19,10 @@ package com.android.systemui.statusbar.pipeline.dagger
|
|||||||
import android.net.wifi.WifiManager
|
import android.net.wifi.WifiManager
|
||||||
import com.android.systemui.CoreStartable
|
import com.android.systemui.CoreStartable
|
||||||
import com.android.systemui.dagger.SysUISingleton
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
|
import com.android.systemui.log.LogBufferFactory
|
||||||
import com.android.systemui.log.table.TableLogBuffer
|
import com.android.systemui.log.table.TableLogBuffer
|
||||||
import com.android.systemui.log.table.TableLogBufferFactory
|
import com.android.systemui.log.table.TableLogBufferFactory
|
||||||
|
import com.android.systemui.plugins.log.LogBuffer
|
||||||
import com.android.systemui.statusbar.pipeline.airplane.data.repository.AirplaneModeRepository
|
import com.android.systemui.statusbar.pipeline.airplane.data.repository.AirplaneModeRepository
|
||||||
import com.android.systemui.statusbar.pipeline.airplane.data.repository.AirplaneModeRepositoryImpl
|
import com.android.systemui.statusbar.pipeline.airplane.data.repository.AirplaneModeRepositoryImpl
|
||||||
import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModel
|
import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModel
|
||||||
@@ -105,6 +107,13 @@ abstract class StatusBarPipelineModule {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@SysUISingleton
|
||||||
|
@WifiInputLog
|
||||||
|
fun provideWifiInputLogBuffer(factory: LogBufferFactory): LogBuffer {
|
||||||
|
return factory.create("WifiInputLog", 50)
|
||||||
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@SysUISingleton
|
@SysUISingleton
|
||||||
@WifiTableLog
|
@WifiTableLog
|
||||||
@@ -119,11 +128,25 @@ abstract class StatusBarPipelineModule {
|
|||||||
return factory.create("AirplaneTableLog", 30)
|
return factory.create("AirplaneTableLog", 30)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@SysUISingleton
|
||||||
|
@SharedConnectivityInputLog
|
||||||
|
fun provideSharedConnectivityTableLogBuffer(factory: LogBufferFactory): LogBuffer {
|
||||||
|
return factory.create("SharedConnectivityInputLog", 30)
|
||||||
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@SysUISingleton
|
@SysUISingleton
|
||||||
@MobileSummaryLog
|
@MobileSummaryLog
|
||||||
fun provideMobileSummaryLogBuffer(factory: TableLogBufferFactory): TableLogBuffer {
|
fun provideMobileSummaryLogBuffer(factory: TableLogBufferFactory): TableLogBuffer {
|
||||||
return factory.create("MobileSummaryLog", 100)
|
return factory.create("MobileSummaryLog", 100)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@SysUISingleton
|
||||||
|
@MobileInputLog
|
||||||
|
fun provideMobileInputLogBuffer(factory: LogBufferFactory): LogBuffer {
|
||||||
|
return factory.create("MobileInputLog", 100)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2023 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.systemui.statusbar.pipeline.dagger
|
||||||
|
|
||||||
|
import javax.inject.Qualifier
|
||||||
|
|
||||||
|
/** Wifi logs for inputs into the wifi pipeline. */
|
||||||
|
@Qualifier
|
||||||
|
@MustBeDocumented
|
||||||
|
@kotlin.annotation.Retention(AnnotationRetention.RUNTIME)
|
||||||
|
annotation class WifiInputLog
|
||||||
@@ -31,7 +31,7 @@ import com.android.systemui.dagger.SysUISingleton
|
|||||||
import com.android.systemui.dagger.qualifiers.Application
|
import com.android.systemui.dagger.qualifiers.Application
|
||||||
import com.android.systemui.dump.DumpManager
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.data.model.SystemUiCarrierConfig
|
import com.android.systemui.statusbar.pipeline.mobile.data.model.SystemUiCarrierConfig
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
import com.android.systemui.statusbar.pipeline.mobile.shared.MobileInputLogger
|
||||||
import java.io.PrintWriter
|
import java.io.PrintWriter
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
@@ -57,7 +57,7 @@ constructor(
|
|||||||
broadcastDispatcher: BroadcastDispatcher,
|
broadcastDispatcher: BroadcastDispatcher,
|
||||||
private val carrierConfigManager: CarrierConfigManager,
|
private val carrierConfigManager: CarrierConfigManager,
|
||||||
dumpManager: DumpManager,
|
dumpManager: DumpManager,
|
||||||
logger: ConnectivityPipelineLogger,
|
logger: MobileInputLogger,
|
||||||
@Application scope: CoroutineScope,
|
@Application scope: CoroutineScope,
|
||||||
) : Dumpable {
|
) : Dumpable {
|
||||||
private var isListening = false
|
private var isListening = false
|
||||||
|
|||||||
@@ -47,8 +47,8 @@ import com.android.systemui.statusbar.pipeline.mobile.data.model.toNetworkNameMo
|
|||||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.CarrierConfigRepository
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.CarrierConfigRepository
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository.Companion.DEFAULT_NUM_LEVELS
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository.Companion.DEFAULT_NUM_LEVELS
|
||||||
|
import com.android.systemui.statusbar.pipeline.mobile.shared.MobileInputLogger
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.util.MobileMappingsProxy
|
import com.android.systemui.statusbar.pipeline.mobile.util.MobileMappingsProxy
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.model.toMobileDataActivityModel
|
import com.android.systemui.statusbar.pipeline.shared.data.model.toMobileDataActivityModel
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlinx.coroutines.CoroutineDispatcher
|
import kotlinx.coroutines.CoroutineDispatcher
|
||||||
@@ -85,7 +85,7 @@ class MobileConnectionRepositoryImpl(
|
|||||||
broadcastDispatcher: BroadcastDispatcher,
|
broadcastDispatcher: BroadcastDispatcher,
|
||||||
private val mobileMappingsProxy: MobileMappingsProxy,
|
private val mobileMappingsProxy: MobileMappingsProxy,
|
||||||
bgDispatcher: CoroutineDispatcher,
|
bgDispatcher: CoroutineDispatcher,
|
||||||
logger: ConnectivityPipelineLogger,
|
logger: MobileInputLogger,
|
||||||
override val tableLogBuffer: TableLogBuffer,
|
override val tableLogBuffer: TableLogBuffer,
|
||||||
scope: CoroutineScope,
|
scope: CoroutineScope,
|
||||||
) : MobileConnectionRepository {
|
) : MobileConnectionRepository {
|
||||||
@@ -291,7 +291,7 @@ class MobileConnectionRepositoryImpl(
|
|||||||
private val broadcastDispatcher: BroadcastDispatcher,
|
private val broadcastDispatcher: BroadcastDispatcher,
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
private val telephonyManager: TelephonyManager,
|
private val telephonyManager: TelephonyManager,
|
||||||
private val logger: ConnectivityPipelineLogger,
|
private val logger: MobileInputLogger,
|
||||||
private val carrierConfigRepository: CarrierConfigRepository,
|
private val carrierConfigRepository: CarrierConfigRepository,
|
||||||
private val mobileMappingsProxy: MobileMappingsProxy,
|
private val mobileMappingsProxy: MobileMappingsProxy,
|
||||||
@Background private val bgDispatcher: CoroutineDispatcher,
|
@Background private val bgDispatcher: CoroutineDispatcher,
|
||||||
|
|||||||
@@ -49,9 +49,8 @@ import com.android.systemui.statusbar.pipeline.mobile.data.model.MobileConnectiv
|
|||||||
import com.android.systemui.statusbar.pipeline.mobile.data.model.NetworkNameModel
|
import com.android.systemui.statusbar.pipeline.mobile.data.model.NetworkNameModel
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
|
import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionsRepository
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionsRepository
|
||||||
|
import com.android.systemui.statusbar.pipeline.mobile.shared.MobileInputLogger
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.util.MobileMappingsProxy
|
import com.android.systemui.statusbar.pipeline.mobile.util.MobileMappingsProxy
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger.Companion.logInputChange
|
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepository
|
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepository
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiNetworkModel
|
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiNetworkModel
|
||||||
import com.android.systemui.util.kotlin.pairwise
|
import com.android.systemui.util.kotlin.pairwise
|
||||||
@@ -84,7 +83,7 @@ constructor(
|
|||||||
private val connectivityManager: ConnectivityManager,
|
private val connectivityManager: ConnectivityManager,
|
||||||
private val subscriptionManager: SubscriptionManager,
|
private val subscriptionManager: SubscriptionManager,
|
||||||
private val telephonyManager: TelephonyManager,
|
private val telephonyManager: TelephonyManager,
|
||||||
private val logger: ConnectivityPipelineLogger,
|
private val logger: MobileInputLogger,
|
||||||
@MobileSummaryLog private val tableLogger: TableLogBuffer,
|
@MobileSummaryLog private val tableLogger: TableLogBuffer,
|
||||||
mobileMappingsProxy: MobileMappingsProxy,
|
mobileMappingsProxy: MobileMappingsProxy,
|
||||||
broadcastDispatcher: BroadcastDispatcher,
|
broadcastDispatcher: BroadcastDispatcher,
|
||||||
@@ -222,13 +221,13 @@ constructor(
|
|||||||
private val carrierConfigChangedEvent =
|
private val carrierConfigChangedEvent =
|
||||||
broadcastDispatcher
|
broadcastDispatcher
|
||||||
.broadcastFlow(IntentFilter(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED))
|
.broadcastFlow(IntentFilter(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED))
|
||||||
.logInputChange(logger, "ACTION_CARRIER_CONFIG_CHANGED")
|
.onEach { logger.logActionCarrierConfigChanged() }
|
||||||
|
|
||||||
override val defaultDataSubRatConfig: StateFlow<Config> =
|
override val defaultDataSubRatConfig: StateFlow<Config> =
|
||||||
merge(defaultDataSubIdChangeEvent, carrierConfigChangedEvent)
|
merge(defaultDataSubIdChangeEvent, carrierConfigChangedEvent)
|
||||||
.mapLatest { Config.readConfig(context) }
|
.mapLatest { Config.readConfig(context) }
|
||||||
.distinctUntilChanged()
|
.distinctUntilChanged()
|
||||||
.logInputChange(logger, "defaultDataSubRatConfig")
|
.onEach { logger.logDefaultDataSubRatConfig(it) }
|
||||||
.stateIn(
|
.stateIn(
|
||||||
scope,
|
scope,
|
||||||
SharingStarted.WhileSubscribed(),
|
SharingStarted.WhileSubscribed(),
|
||||||
@@ -239,13 +238,13 @@ constructor(
|
|||||||
defaultDataSubRatConfig
|
defaultDataSubRatConfig
|
||||||
.map { mobileMappingsProxy.mapIconSets(it) }
|
.map { mobileMappingsProxy.mapIconSets(it) }
|
||||||
.distinctUntilChanged()
|
.distinctUntilChanged()
|
||||||
.logInputChange(logger, "defaultMobileIconMapping")
|
.onEach { logger.logDefaultMobileIconMapping(it) }
|
||||||
|
|
||||||
override val defaultMobileIconGroup: Flow<MobileIconGroup> =
|
override val defaultMobileIconGroup: Flow<MobileIconGroup> =
|
||||||
defaultDataSubRatConfig
|
defaultDataSubRatConfig
|
||||||
.map { mobileMappingsProxy.getDefaultIcons(it) }
|
.map { mobileMappingsProxy.getDefaultIcons(it) }
|
||||||
.distinctUntilChanged()
|
.distinctUntilChanged()
|
||||||
.logInputChange(logger, "defaultMobileIconGroup")
|
.onEach { logger.logDefaultMobileIconGroup(it) }
|
||||||
|
|
||||||
override fun getRepoForSubId(subId: Int): FullMobileConnectionRepository {
|
override fun getRepoForSubId(subId: Int): FullMobileConnectionRepository {
|
||||||
if (!isValidSubId(subId)) {
|
if (!isValidSubId(subId)) {
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionMod
|
|||||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionsRepository
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionsRepository
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.UserSetupRepository
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.UserSetupRepository
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot
|
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.repository.ConnectivityRepository
|
import com.android.systemui.statusbar.pipeline.shared.data.repository.ConnectivityRepository
|
||||||
import com.android.systemui.util.CarrierConfigTracker
|
import com.android.systemui.util.CarrierConfigTracker
|
||||||
@@ -111,7 +110,6 @@ class MobileIconsInteractorImpl
|
|||||||
constructor(
|
constructor(
|
||||||
private val mobileConnectionsRepo: MobileConnectionsRepository,
|
private val mobileConnectionsRepo: MobileConnectionsRepository,
|
||||||
private val carrierConfigTracker: CarrierConfigTracker,
|
private val carrierConfigTracker: CarrierConfigTracker,
|
||||||
private val logger: ConnectivityPipelineLogger,
|
|
||||||
@MobileSummaryLog private val tableLogger: TableLogBuffer,
|
@MobileSummaryLog private val tableLogger: TableLogBuffer,
|
||||||
connectivityRepository: ConnectivityRepository,
|
connectivityRepository: ConnectivityRepository,
|
||||||
userSetupRepo: UserSetupRepository,
|
userSetupRepo: UserSetupRepository,
|
||||||
|
|||||||
@@ -0,0 +1,202 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2022 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.systemui.statusbar.pipeline.mobile.shared
|
||||||
|
|
||||||
|
import android.net.Network
|
||||||
|
import android.net.NetworkCapabilities
|
||||||
|
import android.telephony.ServiceState
|
||||||
|
import android.telephony.SignalStrength
|
||||||
|
import android.telephony.TelephonyDisplayInfo
|
||||||
|
import com.android.settingslib.SignalIcon
|
||||||
|
import com.android.settingslib.mobile.MobileMappings
|
||||||
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
|
import com.android.systemui.plugins.log.LogBuffer
|
||||||
|
import com.android.systemui.plugins.log.LogLevel
|
||||||
|
import com.android.systemui.statusbar.pipeline.dagger.MobileInputLog
|
||||||
|
import com.android.systemui.statusbar.pipeline.shared.LoggerHelper
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
/** Logs for inputs into the mobile pipeline. */
|
||||||
|
@SysUISingleton
|
||||||
|
class MobileInputLogger
|
||||||
|
@Inject
|
||||||
|
constructor(
|
||||||
|
@MobileInputLog private val buffer: LogBuffer,
|
||||||
|
) {
|
||||||
|
fun logOnCapabilitiesChanged(
|
||||||
|
network: Network,
|
||||||
|
networkCapabilities: NetworkCapabilities,
|
||||||
|
isDefaultNetworkCallback: Boolean,
|
||||||
|
) {
|
||||||
|
LoggerHelper.logOnCapabilitiesChanged(
|
||||||
|
buffer,
|
||||||
|
TAG,
|
||||||
|
network,
|
||||||
|
networkCapabilities,
|
||||||
|
isDefaultNetworkCallback,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logOnLost(network: Network) {
|
||||||
|
LoggerHelper.logOnLost(buffer, TAG, network)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logOnServiceStateChanged(serviceState: ServiceState, subId: Int) {
|
||||||
|
buffer.log(
|
||||||
|
TAG,
|
||||||
|
LogLevel.INFO,
|
||||||
|
{
|
||||||
|
int1 = subId
|
||||||
|
bool1 = serviceState.isEmergencyOnly
|
||||||
|
bool2 = serviceState.roaming
|
||||||
|
str1 = serviceState.operatorAlphaShort
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"onServiceStateChanged: subId=$int1 emergencyOnly=$bool1 roaming=$bool2" +
|
||||||
|
" operator=$str1"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logOnSignalStrengthsChanged(signalStrength: SignalStrength, subId: Int) {
|
||||||
|
buffer.log(
|
||||||
|
TAG,
|
||||||
|
LogLevel.INFO,
|
||||||
|
{
|
||||||
|
int1 = subId
|
||||||
|
str1 = signalStrength.toString()
|
||||||
|
},
|
||||||
|
{ "onSignalStrengthsChanged: subId=$int1 strengths=$str1" }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logOnDataConnectionStateChanged(dataState: Int, networkType: Int, subId: Int) {
|
||||||
|
buffer.log(
|
||||||
|
TAG,
|
||||||
|
LogLevel.INFO,
|
||||||
|
{
|
||||||
|
int1 = subId
|
||||||
|
int2 = dataState
|
||||||
|
str1 = networkType.toString()
|
||||||
|
},
|
||||||
|
{ "onDataConnectionStateChanged: subId=$int1 dataState=$int2 networkType=$str1" },
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logOnDataActivity(direction: Int, subId: Int) {
|
||||||
|
buffer.log(
|
||||||
|
TAG,
|
||||||
|
LogLevel.INFO,
|
||||||
|
{
|
||||||
|
int1 = subId
|
||||||
|
int2 = direction
|
||||||
|
},
|
||||||
|
{ "onDataActivity: subId=$int1 direction=$int2" },
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logOnCarrierNetworkChange(active: Boolean, subId: Int) {
|
||||||
|
buffer.log(
|
||||||
|
TAG,
|
||||||
|
LogLevel.INFO,
|
||||||
|
{
|
||||||
|
int1 = subId
|
||||||
|
bool1 = active
|
||||||
|
},
|
||||||
|
{ "onCarrierNetworkChange: subId=$int1 active=$bool1" },
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logOnDisplayInfoChanged(displayInfo: TelephonyDisplayInfo, subId: Int) {
|
||||||
|
buffer.log(
|
||||||
|
TAG,
|
||||||
|
LogLevel.INFO,
|
||||||
|
{
|
||||||
|
int1 = subId
|
||||||
|
str1 = displayInfo.toString()
|
||||||
|
},
|
||||||
|
{ "onDisplayInfoChanged: subId=$int1 displayInfo=$str1" },
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logUiAdapterSubIdsUpdated(subs: List<Int>) {
|
||||||
|
buffer.log(
|
||||||
|
TAG,
|
||||||
|
LogLevel.INFO,
|
||||||
|
{ str1 = subs.toString() },
|
||||||
|
{ "Sub IDs in MobileUiAdapter updated internally: $str1" },
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logUiAdapterSubIdsSentToIconController(subs: List<Int>) {
|
||||||
|
buffer.log(
|
||||||
|
TAG,
|
||||||
|
LogLevel.INFO,
|
||||||
|
{ str1 = subs.toString() },
|
||||||
|
{ "Sub IDs in MobileUiAdapter being sent to icon controller: $str1" },
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logCarrierConfigChanged(subId: Int) {
|
||||||
|
buffer.log(
|
||||||
|
TAG,
|
||||||
|
LogLevel.INFO,
|
||||||
|
{ int1 = subId },
|
||||||
|
{ "onCarrierConfigChanged: subId=$int1" },
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logOnDataEnabledChanged(enabled: Boolean, subId: Int) {
|
||||||
|
buffer.log(
|
||||||
|
TAG,
|
||||||
|
LogLevel.INFO,
|
||||||
|
{
|
||||||
|
int1 = subId
|
||||||
|
bool1 = enabled
|
||||||
|
},
|
||||||
|
{ "onDataEnabledChanged: subId=$int1 enabled=$bool1" },
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logActionCarrierConfigChanged() {
|
||||||
|
buffer.log(TAG, LogLevel.INFO, {}, { "Intent received: ACTION_CARRIER_CONFIG_CHANGED" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logDefaultDataSubRatConfig(config: MobileMappings.Config) {
|
||||||
|
buffer.log(
|
||||||
|
TAG,
|
||||||
|
LogLevel.INFO,
|
||||||
|
{ str1 = config.toString() },
|
||||||
|
{ "defaultDataSubRatConfig: $str1" }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logDefaultMobileIconMapping(mapping: Map<String, SignalIcon.MobileIconGroup>) {
|
||||||
|
buffer.log(
|
||||||
|
TAG,
|
||||||
|
LogLevel.INFO,
|
||||||
|
{ str1 = mapping.toString() },
|
||||||
|
{ "defaultMobileIconMapping: $str1" }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logDefaultMobileIconGroup(group: SignalIcon.MobileIconGroup) {
|
||||||
|
buffer.log(TAG, LogLevel.INFO, { str1 = group.name }, { "defaultMobileIconGroup: $str1" })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private const val TAG = "MobileInputLog"
|
||||||
@@ -22,8 +22,8 @@ import com.android.systemui.dagger.qualifiers.Application
|
|||||||
import com.android.systemui.statusbar.phone.StatusBarIconController
|
import com.android.systemui.statusbar.phone.StatusBarIconController
|
||||||
import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags
|
import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.MobileIconsInteractor
|
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.MobileIconsInteractor
|
||||||
|
import com.android.systemui.statusbar.pipeline.mobile.shared.MobileInputLogger
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconsViewModel
|
import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconsViewModel
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import java.io.PrintWriter
|
import java.io.PrintWriter
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
@@ -55,7 +55,7 @@ constructor(
|
|||||||
interactor: MobileIconsInteractor,
|
interactor: MobileIconsInteractor,
|
||||||
private val iconController: StatusBarIconController,
|
private val iconController: StatusBarIconController,
|
||||||
private val iconsViewModelFactory: MobileIconsViewModel.Factory,
|
private val iconsViewModelFactory: MobileIconsViewModel.Factory,
|
||||||
private val logger: ConnectivityPipelineLogger,
|
private val logger: MobileInputLogger,
|
||||||
@Application private val scope: CoroutineScope,
|
@Application private val scope: CoroutineScope,
|
||||||
private val statusBarPipelineFlags: StatusBarPipelineFlags,
|
private val statusBarPipelineFlags: StatusBarPipelineFlags,
|
||||||
) : CoreStartable {
|
) : CoreStartable {
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.Airpla
|
|||||||
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.MobileIconsInteractor
|
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.MobileIconsInteractor
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.ui.view.ModernStatusBarMobileView
|
import com.android.systemui.statusbar.pipeline.mobile.ui.view.ModernStatusBarMobileView
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants
|
import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
@@ -42,7 +41,6 @@ constructor(
|
|||||||
val subscriptionIdsFlow: StateFlow<List<Int>>,
|
val subscriptionIdsFlow: StateFlow<List<Int>>,
|
||||||
private val interactor: MobileIconsInteractor,
|
private val interactor: MobileIconsInteractor,
|
||||||
private val airplaneModeInteractor: AirplaneModeInteractor,
|
private val airplaneModeInteractor: AirplaneModeInteractor,
|
||||||
private val logger: ConnectivityPipelineLogger,
|
|
||||||
private val constants: ConnectivityConstants,
|
private val constants: ConnectivityConstants,
|
||||||
@Application private val scope: CoroutineScope,
|
@Application private val scope: CoroutineScope,
|
||||||
private val statusBarPipelineFlags: StatusBarPipelineFlags,
|
private val statusBarPipelineFlags: StatusBarPipelineFlags,
|
||||||
@@ -83,7 +81,6 @@ constructor(
|
|||||||
constructor(
|
constructor(
|
||||||
private val interactor: MobileIconsInteractor,
|
private val interactor: MobileIconsInteractor,
|
||||||
private val airplaneModeInteractor: AirplaneModeInteractor,
|
private val airplaneModeInteractor: AirplaneModeInteractor,
|
||||||
private val logger: ConnectivityPipelineLogger,
|
|
||||||
private val constants: ConnectivityConstants,
|
private val constants: ConnectivityConstants,
|
||||||
@Application private val scope: CoroutineScope,
|
@Application private val scope: CoroutineScope,
|
||||||
private val statusBarPipelineFlags: StatusBarPipelineFlags,
|
private val statusBarPipelineFlags: StatusBarPipelineFlags,
|
||||||
@@ -93,7 +90,6 @@ constructor(
|
|||||||
subscriptionIdsFlow,
|
subscriptionIdsFlow,
|
||||||
interactor,
|
interactor,
|
||||||
airplaneModeInteractor,
|
airplaneModeInteractor,
|
||||||
logger,
|
|
||||||
constants,
|
constants,
|
||||||
scope,
|
scope,
|
||||||
statusBarPipelineFlags,
|
statusBarPipelineFlags,
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import com.android.systemui.Dumpable
|
|||||||
import com.android.systemui.R
|
import com.android.systemui.R
|
||||||
import com.android.systemui.dagger.SysUISingleton
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
import com.android.systemui.dump.DumpManager
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger.Companion.SB_LOGGING_TAG
|
|
||||||
import java.io.PrintWriter
|
import java.io.PrintWriter
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@@ -40,7 +39,7 @@ constructor(
|
|||||||
telephonyManager: TelephonyManager,
|
telephonyManager: TelephonyManager,
|
||||||
) : Dumpable {
|
) : Dumpable {
|
||||||
init {
|
init {
|
||||||
dumpManager.registerNormalDumpable("${SB_LOGGING_TAG}Constants", this)
|
dumpManager.registerNormalDumpable("ConnectivityConstants", this)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** True if this device has the capability for data connections and false otherwise. */
|
/** True if this device has the capability for data connections and false otherwise. */
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2023 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.systemui.statusbar.pipeline.shared
|
||||||
|
|
||||||
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
|
import com.android.systemui.plugins.log.LogBuffer
|
||||||
|
import com.android.systemui.plugins.log.LogLevel
|
||||||
|
import com.android.systemui.statusbar.pipeline.dagger.SharedConnectivityInputLog
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
/** Logs for connectivity-related inputs that are shared across wifi, mobile, etc. */
|
||||||
|
@SysUISingleton
|
||||||
|
class ConnectivityInputLogger
|
||||||
|
@Inject
|
||||||
|
constructor(
|
||||||
|
@SharedConnectivityInputLog private val buffer: LogBuffer,
|
||||||
|
) {
|
||||||
|
fun logTuningChanged(tuningList: String?) {
|
||||||
|
buffer.log(TAG, LogLevel.DEBUG, { str1 = tuningList }, { "onTuningChanged: $str1" })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private const val TAG = "ConnectivityInputLogger"
|
||||||
@@ -1,285 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2022 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.android.systemui.statusbar.pipeline.shared
|
|
||||||
|
|
||||||
import android.net.Network
|
|
||||||
import android.net.NetworkCapabilities
|
|
||||||
import android.telephony.ServiceState
|
|
||||||
import android.telephony.SignalStrength
|
|
||||||
import android.telephony.TelephonyDisplayInfo
|
|
||||||
import com.android.systemui.dagger.SysUISingleton
|
|
||||||
import com.android.systemui.log.dagger.StatusBarConnectivityLog
|
|
||||||
import com.android.systemui.plugins.log.LogBuffer
|
|
||||||
import com.android.systemui.plugins.log.LogLevel
|
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger.Companion.toString
|
|
||||||
import javax.inject.Inject
|
|
||||||
import kotlinx.coroutines.flow.Flow
|
|
||||||
import kotlinx.coroutines.flow.onEach
|
|
||||||
|
|
||||||
@SysUISingleton
|
|
||||||
class ConnectivityPipelineLogger
|
|
||||||
@Inject
|
|
||||||
constructor(
|
|
||||||
@StatusBarConnectivityLog private val buffer: LogBuffer,
|
|
||||||
) {
|
|
||||||
/**
|
|
||||||
* Logs a change in one of the **raw inputs** to the connectivity pipeline.
|
|
||||||
*
|
|
||||||
* Use this method for inputs that don't have any extra information besides their callback name.
|
|
||||||
*/
|
|
||||||
fun logInputChange(callbackName: String) {
|
|
||||||
buffer.log(SB_LOGGING_TAG, LogLevel.INFO, { str1 = callbackName }, { "Input: $str1" })
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Logs a change in one of the **raw inputs** to the connectivity pipeline. */
|
|
||||||
fun logInputChange(callbackName: String, changeInfo: String?) {
|
|
||||||
buffer.log(
|
|
||||||
SB_LOGGING_TAG,
|
|
||||||
LogLevel.INFO,
|
|
||||||
{
|
|
||||||
str1 = callbackName
|
|
||||||
str2 = changeInfo
|
|
||||||
},
|
|
||||||
{ "Input: $str1: $str2" }
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Logs a **data transformation** that we performed within the connectivity pipeline. */
|
|
||||||
fun logTransformation(transformationName: String, oldValue: Any?, newValue: Any?) {
|
|
||||||
if (oldValue == newValue) {
|
|
||||||
buffer.log(
|
|
||||||
SB_LOGGING_TAG,
|
|
||||||
LogLevel.INFO,
|
|
||||||
{
|
|
||||||
str1 = transformationName
|
|
||||||
str2 = oldValue.toString()
|
|
||||||
},
|
|
||||||
{ "Transform: $str1: $str2 (transformation didn't change it)" }
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
buffer.log(
|
|
||||||
SB_LOGGING_TAG,
|
|
||||||
LogLevel.INFO,
|
|
||||||
{
|
|
||||||
str1 = transformationName
|
|
||||||
str2 = oldValue.toString()
|
|
||||||
str3 = newValue.toString()
|
|
||||||
},
|
|
||||||
{ "Transform: $str1: $str2 -> $str3" }
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Logs a change in one of the **outputs** to the connectivity pipeline. */
|
|
||||||
fun logOutputChange(outputParamName: String, changeInfo: String) {
|
|
||||||
buffer.log(
|
|
||||||
SB_LOGGING_TAG,
|
|
||||||
LogLevel.INFO,
|
|
||||||
{
|
|
||||||
str1 = outputParamName
|
|
||||||
str2 = changeInfo
|
|
||||||
},
|
|
||||||
{ "Output: $str1: $str2" }
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun logOnCapabilitiesChanged(
|
|
||||||
network: Network,
|
|
||||||
networkCapabilities: NetworkCapabilities,
|
|
||||||
isDefaultNetworkCallback: Boolean,
|
|
||||||
) {
|
|
||||||
buffer.log(
|
|
||||||
SB_LOGGING_TAG,
|
|
||||||
LogLevel.INFO,
|
|
||||||
{
|
|
||||||
bool1 = isDefaultNetworkCallback
|
|
||||||
int1 = network.getNetId()
|
|
||||||
str1 = networkCapabilities.toString()
|
|
||||||
},
|
|
||||||
{ "onCapabilitiesChanged[default=$bool1]: net=$int1 capabilities=$str1" }
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun logOnLost(network: Network) {
|
|
||||||
buffer.log(
|
|
||||||
SB_LOGGING_TAG,
|
|
||||||
LogLevel.INFO,
|
|
||||||
{ int1 = network.getNetId() },
|
|
||||||
{ "onLost: net=$int1" }
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun logOnServiceStateChanged(serviceState: ServiceState, subId: Int) {
|
|
||||||
buffer.log(
|
|
||||||
SB_LOGGING_TAG,
|
|
||||||
LogLevel.INFO,
|
|
||||||
{
|
|
||||||
int1 = subId
|
|
||||||
bool1 = serviceState.isEmergencyOnly
|
|
||||||
bool2 = serviceState.roaming
|
|
||||||
str1 = serviceState.operatorAlphaShort
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"onServiceStateChanged: subId=$int1 emergencyOnly=$bool1 roaming=$bool2" +
|
|
||||||
" operator=$str1"
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun logOnSignalStrengthsChanged(signalStrength: SignalStrength, subId: Int) {
|
|
||||||
buffer.log(
|
|
||||||
SB_LOGGING_TAG,
|
|
||||||
LogLevel.INFO,
|
|
||||||
{
|
|
||||||
int1 = subId
|
|
||||||
str1 = signalStrength.toString()
|
|
||||||
},
|
|
||||||
{ "onSignalStrengthsChanged: subId=$int1 strengths=$str1" }
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun logOnDataConnectionStateChanged(dataState: Int, networkType: Int, subId: Int) {
|
|
||||||
buffer.log(
|
|
||||||
SB_LOGGING_TAG,
|
|
||||||
LogLevel.INFO,
|
|
||||||
{
|
|
||||||
int1 = subId
|
|
||||||
int2 = dataState
|
|
||||||
str1 = networkType.toString()
|
|
||||||
},
|
|
||||||
{ "onDataConnectionStateChanged: subId=$int1 dataState=$int2 networkType=$str1" },
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun logOnDataActivity(direction: Int, subId: Int) {
|
|
||||||
buffer.log(
|
|
||||||
SB_LOGGING_TAG,
|
|
||||||
LogLevel.INFO,
|
|
||||||
{
|
|
||||||
int1 = subId
|
|
||||||
int2 = direction
|
|
||||||
},
|
|
||||||
{ "onDataActivity: subId=$int1 direction=$int2" },
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun logOnCarrierNetworkChange(active: Boolean, subId: Int) {
|
|
||||||
buffer.log(
|
|
||||||
SB_LOGGING_TAG,
|
|
||||||
LogLevel.INFO,
|
|
||||||
{
|
|
||||||
int1 = subId
|
|
||||||
bool1 = active
|
|
||||||
},
|
|
||||||
{ "onCarrierNetworkChange: subId=$int1 active=$bool1" },
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun logOnDisplayInfoChanged(displayInfo: TelephonyDisplayInfo, subId: Int) {
|
|
||||||
buffer.log(
|
|
||||||
SB_LOGGING_TAG,
|
|
||||||
LogLevel.INFO,
|
|
||||||
{
|
|
||||||
int1 = subId
|
|
||||||
str1 = displayInfo.toString()
|
|
||||||
},
|
|
||||||
{ "onDisplayInfoChanged: subId=$int1 displayInfo=$str1" },
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO(b/238425913): We should split this class into mobile-specific and wifi-specific loggers.
|
|
||||||
|
|
||||||
fun logUiAdapterSubIdsUpdated(subs: List<Int>) {
|
|
||||||
buffer.log(
|
|
||||||
SB_LOGGING_TAG,
|
|
||||||
LogLevel.INFO,
|
|
||||||
{ str1 = subs.toString() },
|
|
||||||
{ "Sub IDs in MobileUiAdapter updated internally: $str1" },
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun logUiAdapterSubIdsSentToIconController(subs: List<Int>) {
|
|
||||||
buffer.log(
|
|
||||||
SB_LOGGING_TAG,
|
|
||||||
LogLevel.INFO,
|
|
||||||
{ str1 = subs.toString() },
|
|
||||||
{ "Sub IDs in MobileUiAdapter being sent to icon controller: $str1" },
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun logCarrierConfigChanged(subId: Int) {
|
|
||||||
buffer.log(
|
|
||||||
SB_LOGGING_TAG,
|
|
||||||
LogLevel.INFO,
|
|
||||||
{ int1 = subId },
|
|
||||||
{ "onCarrierConfigChanged: subId=$int1" },
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun logOnDataEnabledChanged(enabled: Boolean, subId: Int) {
|
|
||||||
buffer.log(
|
|
||||||
SB_LOGGING_TAG,
|
|
||||||
LogLevel.INFO,
|
|
||||||
{
|
|
||||||
int1 = subId
|
|
||||||
bool1 = enabled
|
|
||||||
},
|
|
||||||
{ "onDataEnabledChanged: subId=$int1 enabled=$bool1" },
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
const val SB_LOGGING_TAG = "SbConnectivity"
|
|
||||||
|
|
||||||
/** Log a change in one of the **inputs** to the connectivity pipeline. */
|
|
||||||
fun Flow<Unit>.logInputChange(
|
|
||||||
logger: ConnectivityPipelineLogger,
|
|
||||||
inputParamName: String,
|
|
||||||
): Flow<Unit> {
|
|
||||||
return this.onEach { logger.logInputChange(inputParamName) }
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Log a change in one of the **inputs** to the connectivity pipeline.
|
|
||||||
*
|
|
||||||
* @param prettyPrint an optional function to transform the value into a readable string.
|
|
||||||
* [toString] is used if no custom function is provided.
|
|
||||||
*/
|
|
||||||
fun <T> Flow<T>.logInputChange(
|
|
||||||
logger: ConnectivityPipelineLogger,
|
|
||||||
inputParamName: String,
|
|
||||||
prettyPrint: (T) -> String = { it.toString() }
|
|
||||||
): Flow<T> {
|
|
||||||
return this.onEach { logger.logInputChange(inputParamName, prettyPrint(it)) }
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Log a change in one of the **outputs** to the connectivity pipeline.
|
|
||||||
*
|
|
||||||
* @param prettyPrint an optional function to transform the value into a readable string.
|
|
||||||
* [toString] is used if no custom function is provided.
|
|
||||||
*/
|
|
||||||
fun <T> Flow<T>.logOutputChange(
|
|
||||||
logger: ConnectivityPipelineLogger,
|
|
||||||
outputParamName: String,
|
|
||||||
prettyPrint: (T) -> String = { it.toString() }
|
|
||||||
): Flow<T> {
|
|
||||||
return this.onEach { logger.logOutputChange(outputParamName, prettyPrint(it)) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2023 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.systemui.statusbar.pipeline.shared
|
||||||
|
|
||||||
|
import android.net.Network
|
||||||
|
import android.net.NetworkCapabilities
|
||||||
|
import com.android.systemui.plugins.log.LogBuffer
|
||||||
|
import com.android.systemui.plugins.log.LogLevel
|
||||||
|
|
||||||
|
/** Helper object for logs that are shared between wifi and mobile. */
|
||||||
|
object LoggerHelper {
|
||||||
|
fun logOnCapabilitiesChanged(
|
||||||
|
buffer: LogBuffer,
|
||||||
|
tag: String,
|
||||||
|
network: Network,
|
||||||
|
networkCapabilities: NetworkCapabilities,
|
||||||
|
isDefaultNetworkCallback: Boolean,
|
||||||
|
) {
|
||||||
|
buffer.log(
|
||||||
|
tag,
|
||||||
|
LogLevel.INFO,
|
||||||
|
{
|
||||||
|
bool1 = isDefaultNetworkCallback
|
||||||
|
int1 = network.getNetId()
|
||||||
|
str1 = networkCapabilities.toString()
|
||||||
|
},
|
||||||
|
{ "onCapabilitiesChanged[default=$bool1]: net=$int1 capabilities=$str1" }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logOnLost(buffer: LogBuffer, tag: String, network: Network) {
|
||||||
|
buffer.log(tag, LogLevel.INFO, { int1 = network.getNetId() }, { "onLost: net=$int1" })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,8 +26,7 @@ import com.android.systemui.dagger.SysUISingleton
|
|||||||
import com.android.systemui.dagger.qualifiers.Application
|
import com.android.systemui.dagger.qualifiers.Application
|
||||||
import com.android.systemui.dump.DumpManager
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.statusbar.phone.StatusBarIconController
|
import com.android.systemui.statusbar.phone.StatusBarIconController
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
import com.android.systemui.statusbar.pipeline.shared.ConnectivityInputLogger
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger.Companion.SB_LOGGING_TAG
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot
|
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlots
|
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlots
|
||||||
import com.android.systemui.tuner.TunerService
|
import com.android.systemui.tuner.TunerService
|
||||||
@@ -45,41 +44,45 @@ import kotlinx.coroutines.flow.stateIn
|
|||||||
* types of connectivity (wifi, mobile, ethernet, etc.)
|
* types of connectivity (wifi, mobile, ethernet, etc.)
|
||||||
*/
|
*/
|
||||||
interface ConnectivityRepository {
|
interface ConnectivityRepository {
|
||||||
/**
|
/** Observable for the current set of connectivity icons that should be force-hidden. */
|
||||||
* Observable for the current set of connectivity icons that should be force-hidden.
|
|
||||||
*/
|
|
||||||
val forceHiddenSlots: StateFlow<Set<ConnectivitySlot>>
|
val forceHiddenSlots: StateFlow<Set<ConnectivitySlot>>
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalCoroutinesApi::class)
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
@SysUISingleton
|
@SysUISingleton
|
||||||
class ConnectivityRepositoryImpl @Inject constructor(
|
class ConnectivityRepositoryImpl
|
||||||
|
@Inject
|
||||||
|
constructor(
|
||||||
private val connectivitySlots: ConnectivitySlots,
|
private val connectivitySlots: ConnectivitySlots,
|
||||||
context: Context,
|
context: Context,
|
||||||
dumpManager: DumpManager,
|
dumpManager: DumpManager,
|
||||||
logger: ConnectivityPipelineLogger,
|
logger: ConnectivityInputLogger,
|
||||||
@Application scope: CoroutineScope,
|
@Application scope: CoroutineScope,
|
||||||
tunerService: TunerService,
|
tunerService: TunerService,
|
||||||
) : ConnectivityRepository, Dumpable {
|
) : ConnectivityRepository, Dumpable {
|
||||||
init {
|
init {
|
||||||
dumpManager.registerDumpable("${SB_LOGGING_TAG}Repository", this)
|
dumpManager.registerDumpable("ConnectivityRepository", this)
|
||||||
}
|
}
|
||||||
|
|
||||||
// The default set of hidden icons to use if we don't get any from [TunerService].
|
// The default set of hidden icons to use if we don't get any from [TunerService].
|
||||||
private val defaultHiddenIcons: Set<ConnectivitySlot> =
|
private val defaultHiddenIcons: Set<ConnectivitySlot> =
|
||||||
context.resources.getStringArray(DEFAULT_HIDDEN_ICONS_RESOURCE)
|
context.resources
|
||||||
|
.getStringArray(DEFAULT_HIDDEN_ICONS_RESOURCE)
|
||||||
.asList()
|
.asList()
|
||||||
.toSlotSet(connectivitySlots)
|
.toSlotSet(connectivitySlots)
|
||||||
|
|
||||||
override val forceHiddenSlots: StateFlow<Set<ConnectivitySlot>> = conflatedCallbackFlow {
|
override val forceHiddenSlots: StateFlow<Set<ConnectivitySlot>> =
|
||||||
val callback = object : TunerService.Tunable {
|
conflatedCallbackFlow {
|
||||||
|
val callback =
|
||||||
|
object : TunerService.Tunable {
|
||||||
override fun onTuningChanged(key: String, newHideList: String?) {
|
override fun onTuningChanged(key: String, newHideList: String?) {
|
||||||
if (key != HIDDEN_ICONS_TUNABLE_KEY) {
|
if (key != HIDDEN_ICONS_TUNABLE_KEY) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
logger.logInputChange("onTuningChanged", newHideList)
|
logger.logTuningChanged(newHideList)
|
||||||
|
|
||||||
val outputList = newHideList?.split(",")?.toSlotSet(connectivitySlots)
|
val outputList =
|
||||||
|
newHideList?.split(",")?.toSlotSet(connectivitySlots)
|
||||||
?: defaultHiddenIcons
|
?: defaultHiddenIcons
|
||||||
trySend(outputList)
|
trySend(outputList)
|
||||||
}
|
}
|
||||||
@@ -95,9 +98,7 @@ class ConnectivityRepositoryImpl @Inject constructor(
|
|||||||
)
|
)
|
||||||
|
|
||||||
override fun dump(pw: PrintWriter, args: Array<out String>) {
|
override fun dump(pw: PrintWriter, args: Array<out String>) {
|
||||||
pw.apply {
|
pw.apply { println("defaultHiddenIcons=$defaultHiddenIcons") }
|
||||||
println("defaultHiddenIcons=$defaultHiddenIcons")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@@ -111,8 +112,7 @@ class ConnectivityRepositoryImpl @Inject constructor(
|
|||||||
private fun List<String>.toSlotSet(
|
private fun List<String>.toSlotSet(
|
||||||
connectivitySlots: ConnectivitySlots
|
connectivitySlots: ConnectivitySlots
|
||||||
): Set<ConnectivitySlot> {
|
): Set<ConnectivitySlot> {
|
||||||
return this
|
return this.filter { it.isNotBlank() }
|
||||||
.filter { it.isNotBlank() }
|
|
||||||
.mapNotNull { connectivitySlots.getSlotFromName(it) }
|
.mapNotNull { connectivitySlots.getSlotFromName(it) }
|
||||||
.toSet()
|
.toSet()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,12 +39,11 @@ import com.android.systemui.dagger.qualifiers.Main
|
|||||||
import com.android.systemui.log.table.TableLogBuffer
|
import com.android.systemui.log.table.TableLogBuffer
|
||||||
import com.android.systemui.log.table.logDiffsForTable
|
import com.android.systemui.log.table.logDiffsForTable
|
||||||
import com.android.systemui.statusbar.pipeline.dagger.WifiTableLog
|
import com.android.systemui.statusbar.pipeline.dagger.WifiTableLog
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger.Companion.logInputChange
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
|
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.model.toWifiDataActivityModel
|
import com.android.systemui.statusbar.pipeline.shared.data.model.toWifiDataActivityModel
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.data.repository.RealWifiRepository
|
import com.android.systemui.statusbar.pipeline.wifi.data.repository.RealWifiRepository
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepository
|
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepository
|
||||||
|
import com.android.systemui.statusbar.pipeline.wifi.shared.WifiInputLogger
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiNetworkModel
|
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiNetworkModel
|
||||||
import java.util.concurrent.Executor
|
import java.util.concurrent.Executor
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@@ -58,6 +57,7 @@ import kotlinx.coroutines.flow.StateFlow
|
|||||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||||
import kotlinx.coroutines.flow.mapLatest
|
import kotlinx.coroutines.flow.mapLatest
|
||||||
import kotlinx.coroutines.flow.merge
|
import kotlinx.coroutines.flow.merge
|
||||||
|
import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.coroutines.flow.stateIn
|
import kotlinx.coroutines.flow.stateIn
|
||||||
|
|
||||||
/** Real implementation of [WifiRepository]. */
|
/** Real implementation of [WifiRepository]. */
|
||||||
@@ -70,7 +70,7 @@ class WifiRepositoryImpl
|
|||||||
constructor(
|
constructor(
|
||||||
broadcastDispatcher: BroadcastDispatcher,
|
broadcastDispatcher: BroadcastDispatcher,
|
||||||
connectivityManager: ConnectivityManager,
|
connectivityManager: ConnectivityManager,
|
||||||
logger: ConnectivityPipelineLogger,
|
logger: WifiInputLogger,
|
||||||
@WifiTableLog wifiTableLogBuffer: TableLogBuffer,
|
@WifiTableLog wifiTableLogBuffer: TableLogBuffer,
|
||||||
@Main mainExecutor: Executor,
|
@Main mainExecutor: Executor,
|
||||||
@Application scope: CoroutineScope,
|
@Application scope: CoroutineScope,
|
||||||
@@ -80,7 +80,7 @@ constructor(
|
|||||||
private val wifiStateChangeEvents: Flow<Unit> =
|
private val wifiStateChangeEvents: Flow<Unit> =
|
||||||
broadcastDispatcher
|
broadcastDispatcher
|
||||||
.broadcastFlow(IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION))
|
.broadcastFlow(IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION))
|
||||||
.logInputChange(logger, "WIFI_STATE_CHANGED_ACTION intent")
|
.onEach { logger.logIntent("WIFI_STATE_CHANGED_ACTION") }
|
||||||
|
|
||||||
private val wifiNetworkChangeEvents: MutableSharedFlow<Unit> =
|
private val wifiNetworkChangeEvents: MutableSharedFlow<Unit> =
|
||||||
MutableSharedFlow(extraBufferCapacity = 1)
|
MutableSharedFlow(extraBufferCapacity = 1)
|
||||||
@@ -173,11 +173,6 @@ constructor(
|
|||||||
networkCapabilities,
|
networkCapabilities,
|
||||||
wifiManager,
|
wifiManager,
|
||||||
)
|
)
|
||||||
logger.logTransformation(
|
|
||||||
WIFI_NETWORK_CALLBACK_NAME,
|
|
||||||
oldValue = currentWifi,
|
|
||||||
newValue = wifiNetworkModel,
|
|
||||||
)
|
|
||||||
currentWifi = wifiNetworkModel
|
currentWifi = wifiNetworkModel
|
||||||
trySend(wifiNetworkModel)
|
trySend(wifiNetworkModel)
|
||||||
}
|
}
|
||||||
@@ -194,11 +189,6 @@ constructor(
|
|||||||
wifi.networkId == network.getNetId()
|
wifi.networkId == network.getNetId()
|
||||||
) {
|
) {
|
||||||
val newNetworkModel = WifiNetworkModel.Inactive
|
val newNetworkModel = WifiNetworkModel.Inactive
|
||||||
logger.logTransformation(
|
|
||||||
WIFI_NETWORK_CALLBACK_NAME,
|
|
||||||
oldValue = wifi,
|
|
||||||
newValue = newNetworkModel,
|
|
||||||
)
|
|
||||||
currentWifi = newNetworkModel
|
currentWifi = newNetworkModel
|
||||||
trySend(newNetworkModel)
|
trySend(newNetworkModel)
|
||||||
}
|
}
|
||||||
@@ -228,7 +218,7 @@ constructor(
|
|||||||
override val wifiActivity: StateFlow<DataActivityModel> =
|
override val wifiActivity: StateFlow<DataActivityModel> =
|
||||||
conflatedCallbackFlow {
|
conflatedCallbackFlow {
|
||||||
val callback = TrafficStateCallback { state ->
|
val callback = TrafficStateCallback { state ->
|
||||||
logger.logInputChange("onTrafficStateChange", prettyPrintActivity(state))
|
logger.logActivity(prettyPrintActivity(state))
|
||||||
trySend(state.toWifiDataActivityModel())
|
trySend(state.toWifiDataActivityModel())
|
||||||
}
|
}
|
||||||
wifiManager.registerTrafficStateCallback(mainExecutor, callback)
|
wifiManager.registerTrafficStateCallback(mainExecutor, callback)
|
||||||
@@ -336,8 +326,6 @@ constructor(
|
|||||||
.addTransportType(TRANSPORT_CELLULAR)
|
.addTransportType(TRANSPORT_CELLULAR)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
private const val WIFI_NETWORK_CALLBACK_NAME = "wifiNetworkModel"
|
|
||||||
|
|
||||||
private const val CARRIER_MERGED_INVALID_SUB_ID_REASON =
|
private const val CARRIER_MERGED_INVALID_SUB_ID_REASON =
|
||||||
"Wifi network was carrier merged but had invalid sub ID"
|
"Wifi network was carrier merged but had invalid sub ID"
|
||||||
}
|
}
|
||||||
@@ -348,7 +336,7 @@ constructor(
|
|||||||
constructor(
|
constructor(
|
||||||
private val broadcastDispatcher: BroadcastDispatcher,
|
private val broadcastDispatcher: BroadcastDispatcher,
|
||||||
private val connectivityManager: ConnectivityManager,
|
private val connectivityManager: ConnectivityManager,
|
||||||
private val logger: ConnectivityPipelineLogger,
|
private val logger: WifiInputLogger,
|
||||||
@WifiTableLog private val wifiTableLogBuffer: TableLogBuffer,
|
@WifiTableLog private val wifiTableLogBuffer: TableLogBuffer,
|
||||||
@Main private val mainExecutor: Executor,
|
@Main private val mainExecutor: Executor,
|
||||||
@Application private val scope: CoroutineScope,
|
@Application private val scope: CoroutineScope,
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import com.android.systemui.Dumpable
|
|||||||
import com.android.systemui.R
|
import com.android.systemui.R
|
||||||
import com.android.systemui.dagger.SysUISingleton
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
import com.android.systemui.dump.DumpManager
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger.Companion.SB_LOGGING_TAG
|
|
||||||
import java.io.PrintWriter
|
import java.io.PrintWriter
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@@ -30,12 +29,14 @@ import javax.inject.Inject
|
|||||||
* logging purposes.
|
* logging purposes.
|
||||||
*/
|
*/
|
||||||
@SysUISingleton
|
@SysUISingleton
|
||||||
class WifiConstants @Inject constructor(
|
class WifiConstants
|
||||||
|
@Inject
|
||||||
|
constructor(
|
||||||
context: Context,
|
context: Context,
|
||||||
dumpManager: DumpManager,
|
dumpManager: DumpManager,
|
||||||
) : Dumpable {
|
) : Dumpable {
|
||||||
init {
|
init {
|
||||||
dumpManager.registerDumpable("${SB_LOGGING_TAG}WifiConstants", this)
|
dumpManager.registerNormalDumpable("WifiConstants", this)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** True if we should always show the wifi icon when wifi is enabled and false otherwise. */
|
/** True if we should always show the wifi icon when wifi is enabled and false otherwise. */
|
||||||
@@ -43,8 +44,6 @@ class WifiConstants @Inject constructor(
|
|||||||
context.resources.getBoolean(R.bool.config_showWifiIndicatorWhenEnabled)
|
context.resources.getBoolean(R.bool.config_showWifiIndicatorWhenEnabled)
|
||||||
|
|
||||||
override fun dump(pw: PrintWriter, args: Array<out String>) {
|
override fun dump(pw: PrintWriter, args: Array<out String>) {
|
||||||
pw.apply {
|
pw.apply { println("alwaysShowIconIfEnabled=$alwaysShowIconIfEnabled") }
|
||||||
println("alwaysShowIconIfEnabled=$alwaysShowIconIfEnabled")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2023 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.systemui.statusbar.pipeline.wifi.shared
|
||||||
|
|
||||||
|
import android.net.Network
|
||||||
|
import android.net.NetworkCapabilities
|
||||||
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
|
import com.android.systemui.plugins.log.LogBuffer
|
||||||
|
import com.android.systemui.plugins.log.LogLevel
|
||||||
|
import com.android.systemui.statusbar.pipeline.dagger.WifiInputLog
|
||||||
|
import com.android.systemui.statusbar.pipeline.shared.LoggerHelper
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logger for all the wifi-related inputs (intents, callbacks, etc.) that the wifi repo receives.
|
||||||
|
*/
|
||||||
|
@SysUISingleton
|
||||||
|
class WifiInputLogger
|
||||||
|
@Inject
|
||||||
|
constructor(
|
||||||
|
@WifiInputLog val buffer: LogBuffer,
|
||||||
|
) {
|
||||||
|
fun logOnCapabilitiesChanged(
|
||||||
|
network: Network,
|
||||||
|
networkCapabilities: NetworkCapabilities,
|
||||||
|
isDefaultNetworkCallback: Boolean,
|
||||||
|
) {
|
||||||
|
LoggerHelper.logOnCapabilitiesChanged(
|
||||||
|
buffer,
|
||||||
|
TAG,
|
||||||
|
network,
|
||||||
|
networkCapabilities,
|
||||||
|
isDefaultNetworkCallback,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logOnLost(network: Network) {
|
||||||
|
LoggerHelper.logOnLost(buffer, TAG, network)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logIntent(intentName: String) {
|
||||||
|
buffer.log(TAG, LogLevel.DEBUG, { str1 = intentName }, { "Intent received: $str1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logActivity(activity: String) {
|
||||||
|
buffer.log(TAG, LogLevel.DEBUG, { str1 = activity }, { "Activity: $str1" })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private const val TAG = "WifiInputLog"
|
||||||
@@ -34,8 +34,6 @@ import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags
|
|||||||
import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModel
|
import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModel
|
||||||
import com.android.systemui.statusbar.pipeline.dagger.WifiTableLog
|
import com.android.systemui.statusbar.pipeline.dagger.WifiTableLog
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants
|
import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger.Companion.logOutputChange
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
|
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.WifiInteractor
|
import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.WifiInteractor
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.shared.WifiConstants
|
import com.android.systemui.statusbar.pipeline.wifi.shared.WifiConstants
|
||||||
@@ -69,7 +67,6 @@ constructor(
|
|||||||
airplaneModeViewModel: AirplaneModeViewModel,
|
airplaneModeViewModel: AirplaneModeViewModel,
|
||||||
connectivityConstants: ConnectivityConstants,
|
connectivityConstants: ConnectivityConstants,
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
logger: ConnectivityPipelineLogger,
|
|
||||||
@WifiTableLog wifiTableLogBuffer: TableLogBuffer,
|
@WifiTableLog wifiTableLogBuffer: TableLogBuffer,
|
||||||
interactor: WifiInteractor,
|
interactor: WifiInteractor,
|
||||||
@Application private val scope: CoroutineScope,
|
@Application private val scope: CoroutineScope,
|
||||||
@@ -143,29 +140,35 @@ constructor(
|
|||||||
)
|
)
|
||||||
|
|
||||||
/** The wifi activity status. Null if we shouldn't display the activity status. */
|
/** The wifi activity status. Null if we shouldn't display the activity status. */
|
||||||
private val activity: Flow<DataActivityModel?> =
|
private val activity: Flow<DataActivityModel> = run {
|
||||||
|
val default = DataActivityModel(hasActivityIn = false, hasActivityOut = false)
|
||||||
if (!connectivityConstants.shouldShowActivityConfig) {
|
if (!connectivityConstants.shouldShowActivityConfig) {
|
||||||
flowOf(null)
|
flowOf(default)
|
||||||
} else {
|
} else {
|
||||||
combine(interactor.activity, interactor.ssid) { activity, ssid ->
|
combine(interactor.activity, interactor.ssid) { activity, ssid ->
|
||||||
when (ssid) {
|
when (ssid) {
|
||||||
null -> null
|
null -> default
|
||||||
else -> activity
|
else -> activity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.distinctUntilChanged()
|
.distinctUntilChanged()
|
||||||
.logOutputChange(logger, "activity")
|
.logDiffsForTable(
|
||||||
.stateIn(scope, started = SharingStarted.WhileSubscribed(), initialValue = null)
|
wifiTableLogBuffer,
|
||||||
|
columnPrefix = "VM.activity",
|
||||||
|
initialValue = default,
|
||||||
|
)
|
||||||
|
.stateIn(scope, started = SharingStarted.WhileSubscribed(), initialValue = default)
|
||||||
|
}
|
||||||
|
|
||||||
private val isActivityInViewVisible: Flow<Boolean> =
|
private val isActivityInViewVisible: Flow<Boolean> =
|
||||||
activity
|
activity
|
||||||
.map { it?.hasActivityIn == true }
|
.map { it.hasActivityIn }
|
||||||
.stateIn(scope, started = SharingStarted.WhileSubscribed(), initialValue = false)
|
.stateIn(scope, started = SharingStarted.WhileSubscribed(), initialValue = false)
|
||||||
|
|
||||||
private val isActivityOutViewVisible: Flow<Boolean> =
|
private val isActivityOutViewVisible: Flow<Boolean> =
|
||||||
activity
|
activity
|
||||||
.map { it?.hasActivityOut == true }
|
.map { it.hasActivityOut }
|
||||||
.stateIn(scope, started = SharingStarted.WhileSubscribed(), initialValue = false)
|
.stateIn(scope, started = SharingStarted.WhileSubscribed(), initialValue = false)
|
||||||
|
|
||||||
private val isActivityContainerVisible: Flow<Boolean> =
|
private val isActivityContainerVisible: Flow<Boolean> =
|
||||||
|
|||||||
@@ -18,9 +18,9 @@ package com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel
|
|||||||
|
|
||||||
import androidx.test.filters.SmallTest
|
import androidx.test.filters.SmallTest
|
||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
|
import com.android.systemui.log.table.TableLogBuffer
|
||||||
import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository
|
import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository
|
||||||
import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.AirplaneModeInteractor
|
import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.AirplaneModeInteractor
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot
|
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository
|
import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
@@ -42,7 +42,7 @@ class AirplaneModeViewModelImplTest : SysuiTestCase() {
|
|||||||
|
|
||||||
private lateinit var underTest: AirplaneModeViewModelImpl
|
private lateinit var underTest: AirplaneModeViewModelImpl
|
||||||
|
|
||||||
@Mock private lateinit var logger: ConnectivityPipelineLogger
|
@Mock private lateinit var logger: TableLogBuffer
|
||||||
private lateinit var airplaneModeRepository: FakeAirplaneModeRepository
|
private lateinit var airplaneModeRepository: FakeAirplaneModeRepository
|
||||||
private lateinit var connectivityRepository: FakeConnectivityRepository
|
private lateinit var connectivityRepository: FakeConnectivityRepository
|
||||||
private lateinit var interactor: AirplaneModeInteractor
|
private lateinit var interactor: AirplaneModeInteractor
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession
|
|||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
import com.android.systemui.dump.DumpManager
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.data.model.SystemUiCarrierConfigTest.Companion.createTestConfig
|
import com.android.systemui.statusbar.pipeline.mobile.data.model.SystemUiCarrierConfigTest.Companion.createTestConfig
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
import com.android.systemui.statusbar.pipeline.mobile.shared.MobileInputLogger
|
||||||
import com.android.systemui.util.mockito.whenever
|
import com.android.systemui.util.mockito.whenever
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
@@ -53,7 +53,7 @@ class CarrierConfigRepositoryTest : SysuiTestCase() {
|
|||||||
private lateinit var mockitoSession: MockitoSession
|
private lateinit var mockitoSession: MockitoSession
|
||||||
private lateinit var carrierConfigCoreStartable: CarrierConfigCoreStartable
|
private lateinit var carrierConfigCoreStartable: CarrierConfigCoreStartable
|
||||||
|
|
||||||
@Mock private lateinit var logger: ConnectivityPipelineLogger
|
@Mock private lateinit var logger: MobileInputLogger
|
||||||
@Mock private lateinit var carrierConfigManager: CarrierConfigManager
|
@Mock private lateinit var carrierConfigManager: CarrierConfigManager
|
||||||
@Mock private lateinit var dumpManager: DumpManager
|
@Mock private lateinit var dumpManager: DumpManager
|
||||||
|
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ import com.android.systemui.statusbar.pipeline.mobile.data.repository.demo.DemoM
|
|||||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.demo.model.FakeNetworkEventModel
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.demo.model.FakeNetworkEventModel
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.demo.validMobileEvent
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.demo.validMobileEvent
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.prod.MobileConnectionsRepositoryImpl
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.prod.MobileConnectionsRepositoryImpl
|
||||||
|
import com.android.systemui.statusbar.pipeline.mobile.shared.MobileInputLogger
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy
|
import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepository
|
import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepository
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.data.repository.demo.DemoModeWifiDataSource
|
import com.android.systemui.statusbar.pipeline.wifi.data.repository.demo.DemoModeWifiDataSource
|
||||||
import com.android.systemui.util.mockito.any
|
import com.android.systemui.util.mockito.any
|
||||||
@@ -81,7 +81,7 @@ class MobileRepositorySwitcherTest : SysuiTestCase() {
|
|||||||
@Mock private lateinit var connectivityManager: ConnectivityManager
|
@Mock private lateinit var connectivityManager: ConnectivityManager
|
||||||
@Mock private lateinit var subscriptionManager: SubscriptionManager
|
@Mock private lateinit var subscriptionManager: SubscriptionManager
|
||||||
@Mock private lateinit var telephonyManager: TelephonyManager
|
@Mock private lateinit var telephonyManager: TelephonyManager
|
||||||
@Mock private lateinit var logger: ConnectivityPipelineLogger
|
@Mock private lateinit var logger: MobileInputLogger
|
||||||
@Mock private lateinit var summaryLogger: TableLogBuffer
|
@Mock private lateinit var summaryLogger: TableLogBuffer
|
||||||
@Mock private lateinit var demoModeController: DemoModeController
|
@Mock private lateinit var demoModeController: DemoModeController
|
||||||
@Mock private lateinit var dumpManager: DumpManager
|
@Mock private lateinit var dumpManager: DumpManager
|
||||||
|
|||||||
@@ -65,8 +65,8 @@ import com.android.systemui.statusbar.pipeline.mobile.data.model.SystemUiCarrier
|
|||||||
import com.android.systemui.statusbar.pipeline.mobile.data.model.toNetworkNameModel
|
import com.android.systemui.statusbar.pipeline.mobile.data.model.toNetworkNameModel
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.FakeMobileConnectionsRepository
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.FakeMobileConnectionsRepository
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository.Companion.DEFAULT_NUM_LEVELS
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository.Companion.DEFAULT_NUM_LEVELS
|
||||||
|
import com.android.systemui.statusbar.pipeline.mobile.shared.MobileInputLogger
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy
|
import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
|
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.model.toMobileDataActivityModel
|
import com.android.systemui.statusbar.pipeline.shared.data.model.toMobileDataActivityModel
|
||||||
import com.android.systemui.util.mockito.any
|
import com.android.systemui.util.mockito.any
|
||||||
@@ -94,7 +94,7 @@ class MobileConnectionRepositoryTest : SysuiTestCase() {
|
|||||||
private lateinit var connectionsRepo: FakeMobileConnectionsRepository
|
private lateinit var connectionsRepo: FakeMobileConnectionsRepository
|
||||||
|
|
||||||
@Mock private lateinit var telephonyManager: TelephonyManager
|
@Mock private lateinit var telephonyManager: TelephonyManager
|
||||||
@Mock private lateinit var logger: ConnectivityPipelineLogger
|
@Mock private lateinit var logger: MobileInputLogger
|
||||||
@Mock private lateinit var tableLogger: TableLogBuffer
|
@Mock private lateinit var tableLogger: TableLogBuffer
|
||||||
|
|
||||||
private val scope = CoroutineScope(IMMEDIATE)
|
private val scope = CoroutineScope(IMMEDIATE)
|
||||||
|
|||||||
@@ -42,8 +42,8 @@ import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionMod
|
|||||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.CarrierConfigRepository
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.CarrierConfigRepository
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.prod.FullMobileConnectionRepository.Factory.Companion.tableBufferLogName
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.prod.FullMobileConnectionRepository.Factory.Companion.tableBufferLogName
|
||||||
|
import com.android.systemui.statusbar.pipeline.mobile.shared.MobileInputLogger
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy
|
import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepository
|
import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepository
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiNetworkModel
|
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiNetworkModel
|
||||||
import com.android.systemui.util.mockito.any
|
import com.android.systemui.util.mockito.any
|
||||||
@@ -86,7 +86,7 @@ class MobileConnectionsRepositoryTest : SysuiTestCase() {
|
|||||||
@Mock private lateinit var connectivityManager: ConnectivityManager
|
@Mock private lateinit var connectivityManager: ConnectivityManager
|
||||||
@Mock private lateinit var subscriptionManager: SubscriptionManager
|
@Mock private lateinit var subscriptionManager: SubscriptionManager
|
||||||
@Mock private lateinit var telephonyManager: TelephonyManager
|
@Mock private lateinit var telephonyManager: TelephonyManager
|
||||||
@Mock private lateinit var logger: ConnectivityPipelineLogger
|
@Mock private lateinit var logger: MobileInputLogger
|
||||||
@Mock private lateinit var summaryLogger: TableLogBuffer
|
@Mock private lateinit var summaryLogger: TableLogBuffer
|
||||||
@Mock private lateinit var logBufferFactory: TableLogBufferFactory
|
@Mock private lateinit var logBufferFactory: TableLogBufferFactory
|
||||||
|
|
||||||
|
|||||||
@@ -85,7 +85,6 @@ class MobileIconsInteractorTest : SysuiTestCase() {
|
|||||||
MobileIconsInteractorImpl(
|
MobileIconsInteractorImpl(
|
||||||
connectionsRepository,
|
connectionsRepository,
|
||||||
carrierConfigTracker,
|
carrierConfigTracker,
|
||||||
logger = mock(),
|
|
||||||
tableLogger = mock(),
|
tableLogger = mock(),
|
||||||
connectivityRepository,
|
connectivityRepository,
|
||||||
userSetupRepository,
|
userSetupRepository,
|
||||||
|
|||||||
@@ -0,0 +1,80 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2022 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.systemui.statusbar.pipeline.mobile.shared
|
||||||
|
|
||||||
|
import android.net.Network
|
||||||
|
import android.net.NetworkCapabilities
|
||||||
|
import androidx.test.filters.SmallTest
|
||||||
|
import com.android.systemui.SysuiTestCase
|
||||||
|
import com.android.systemui.dump.DumpManager
|
||||||
|
import com.android.systemui.log.LogBufferFactory
|
||||||
|
import com.android.systemui.plugins.log.LogcatEchoTracker
|
||||||
|
import com.google.common.truth.Truth.assertThat
|
||||||
|
import java.io.PrintWriter
|
||||||
|
import java.io.StringWriter
|
||||||
|
import org.junit.Test
|
||||||
|
import org.mockito.Mockito
|
||||||
|
import org.mockito.Mockito.mock
|
||||||
|
|
||||||
|
@SmallTest
|
||||||
|
class MobileInputLoggerTest : SysuiTestCase() {
|
||||||
|
private val buffer =
|
||||||
|
LogBufferFactory(DumpManager(), mock(LogcatEchoTracker::class.java)).create("buffer", 10)
|
||||||
|
private val logger = MobileInputLogger(buffer)
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testLogNetworkCapsChange_bufferHasInfo() {
|
||||||
|
logger.logOnCapabilitiesChanged(NET_1, NET_1_CAPS, isDefaultNetworkCallback = true)
|
||||||
|
|
||||||
|
val stringWriter = StringWriter()
|
||||||
|
buffer.dump(PrintWriter(stringWriter), tailLength = 0)
|
||||||
|
val actualString = stringWriter.toString()
|
||||||
|
|
||||||
|
val expectedNetId = NET_1_ID.toString()
|
||||||
|
val expectedCaps = NET_1_CAPS.toString()
|
||||||
|
|
||||||
|
assertThat(actualString).contains("true")
|
||||||
|
assertThat(actualString).contains(expectedNetId)
|
||||||
|
assertThat(actualString).contains(expectedCaps)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testLogOnLost_bufferHasNetIdOfLostNetwork() {
|
||||||
|
logger.logOnLost(NET_1)
|
||||||
|
|
||||||
|
val stringWriter = StringWriter()
|
||||||
|
buffer.dump(PrintWriter(stringWriter), tailLength = 0)
|
||||||
|
val actualString = stringWriter.toString()
|
||||||
|
|
||||||
|
val expectedNetId = NET_1_ID.toString()
|
||||||
|
|
||||||
|
assertThat(actualString).contains(expectedNetId)
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val NET_1_ID = 100
|
||||||
|
private val NET_1 =
|
||||||
|
com.android.systemui.util.mockito.mock<Network>().also {
|
||||||
|
Mockito.`when`(it.getNetId()).thenReturn(NET_1_ID)
|
||||||
|
}
|
||||||
|
private val NET_1_CAPS =
|
||||||
|
NetworkCapabilities.Builder()
|
||||||
|
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
|
||||||
|
.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,7 +26,6 @@ import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionMod
|
|||||||
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.FakeMobileIconsInteractor
|
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.FakeMobileIconsInteractor
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy
|
import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants
|
import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository
|
import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository
|
||||||
import com.android.systemui.util.mockito.mock
|
import com.android.systemui.util.mockito.mock
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
@@ -51,7 +50,6 @@ class MobileIconsViewModelTest : SysuiTestCase() {
|
|||||||
|
|
||||||
private lateinit var airplaneModeInteractor: AirplaneModeInteractor
|
private lateinit var airplaneModeInteractor: AirplaneModeInteractor
|
||||||
@Mock private lateinit var statusBarPipelineFlags: StatusBarPipelineFlags
|
@Mock private lateinit var statusBarPipelineFlags: StatusBarPipelineFlags
|
||||||
@Mock private lateinit var logger: ConnectivityPipelineLogger
|
|
||||||
@Mock private lateinit var constants: ConnectivityConstants
|
@Mock private lateinit var constants: ConnectivityConstants
|
||||||
|
|
||||||
private val testDispatcher = UnconfinedTestDispatcher()
|
private val testDispatcher = UnconfinedTestDispatcher()
|
||||||
@@ -77,7 +75,6 @@ class MobileIconsViewModelTest : SysuiTestCase() {
|
|||||||
subscriptionIdsFlow,
|
subscriptionIdsFlow,
|
||||||
interactor,
|
interactor,
|
||||||
airplaneModeInteractor,
|
airplaneModeInteractor,
|
||||||
logger,
|
|
||||||
constants,
|
constants,
|
||||||
testScope.backgroundScope,
|
testScope.backgroundScope,
|
||||||
statusBarPipelineFlags,
|
statusBarPipelineFlags,
|
||||||
|
|||||||
@@ -1,141 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2022 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.android.systemui.statusbar.pipeline.shared
|
|
||||||
|
|
||||||
import android.net.Network
|
|
||||||
import android.net.NetworkCapabilities
|
|
||||||
import androidx.test.filters.SmallTest
|
|
||||||
import com.android.systemui.SysuiTestCase
|
|
||||||
import com.android.systemui.dump.DumpManager
|
|
||||||
import com.android.systemui.log.LogBufferFactory
|
|
||||||
import com.android.systemui.plugins.log.LogcatEchoTracker
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger.Companion.logInputChange
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger.Companion.logOutputChange
|
|
||||||
import com.google.common.truth.Truth.assertThat
|
|
||||||
import java.io.PrintWriter
|
|
||||||
import java.io.StringWriter
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import kotlinx.coroutines.flow.Flow
|
|
||||||
import kotlinx.coroutines.flow.flowOf
|
|
||||||
import kotlinx.coroutines.flow.launchIn
|
|
||||||
import kotlinx.coroutines.runBlocking
|
|
||||||
import org.junit.Test
|
|
||||||
import org.mockito.Mockito
|
|
||||||
import org.mockito.Mockito.mock
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
class ConnectivityPipelineLoggerTest : SysuiTestCase() {
|
|
||||||
private val buffer = LogBufferFactory(DumpManager(), mock(LogcatEchoTracker::class.java))
|
|
||||||
.create("buffer", 10)
|
|
||||||
private val logger = ConnectivityPipelineLogger(buffer)
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun testLogNetworkCapsChange_bufferHasInfo() {
|
|
||||||
logger.logOnCapabilitiesChanged(NET_1, NET_1_CAPS, isDefaultNetworkCallback = true)
|
|
||||||
|
|
||||||
val stringWriter = StringWriter()
|
|
||||||
buffer.dump(PrintWriter(stringWriter), tailLength = 0)
|
|
||||||
val actualString = stringWriter.toString()
|
|
||||||
|
|
||||||
val expectedNetId = NET_1_ID.toString()
|
|
||||||
val expectedCaps = NET_1_CAPS.toString()
|
|
||||||
|
|
||||||
assertThat(actualString).contains("true")
|
|
||||||
assertThat(actualString).contains(expectedNetId)
|
|
||||||
assertThat(actualString).contains(expectedCaps)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun testLogOnLost_bufferHasNetIdOfLostNetwork() {
|
|
||||||
logger.logOnLost(NET_1)
|
|
||||||
|
|
||||||
val stringWriter = StringWriter()
|
|
||||||
buffer.dump(PrintWriter(stringWriter), tailLength = 0)
|
|
||||||
val actualString = stringWriter.toString()
|
|
||||||
|
|
||||||
val expectedNetId = NET_1_ID.toString()
|
|
||||||
|
|
||||||
assertThat(actualString).contains(expectedNetId)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun logOutputChange_printsValuesAndNulls() = runBlocking(IMMEDIATE) {
|
|
||||||
val flow: Flow<Int?> = flowOf(1, null, 3)
|
|
||||||
|
|
||||||
val job = flow
|
|
||||||
.logOutputChange(logger, "testInts")
|
|
||||||
.launchIn(this)
|
|
||||||
|
|
||||||
val stringWriter = StringWriter()
|
|
||||||
buffer.dump(PrintWriter(stringWriter), tailLength = 0)
|
|
||||||
val actualString = stringWriter.toString()
|
|
||||||
|
|
||||||
assertThat(actualString).contains("1")
|
|
||||||
assertThat(actualString).contains("null")
|
|
||||||
assertThat(actualString).contains("3")
|
|
||||||
|
|
||||||
job.cancel()
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun logInputChange_unit_printsInputName() = runBlocking(IMMEDIATE) {
|
|
||||||
val flow: Flow<Unit> = flowOf(Unit, Unit)
|
|
||||||
|
|
||||||
val job = flow
|
|
||||||
.logInputChange(logger, "testInputs")
|
|
||||||
.launchIn(this)
|
|
||||||
|
|
||||||
val stringWriter = StringWriter()
|
|
||||||
buffer.dump(PrintWriter(stringWriter), tailLength = 0)
|
|
||||||
val actualString = stringWriter.toString()
|
|
||||||
|
|
||||||
assertThat(actualString).contains("testInputs")
|
|
||||||
|
|
||||||
job.cancel()
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun logInputChange_any_printsValuesAndNulls() = runBlocking(IMMEDIATE) {
|
|
||||||
val flow: Flow<Any?> = flowOf(null, 2, "threeString")
|
|
||||||
|
|
||||||
val job = flow
|
|
||||||
.logInputChange(logger, "testInputs")
|
|
||||||
.launchIn(this)
|
|
||||||
|
|
||||||
val stringWriter = StringWriter()
|
|
||||||
buffer.dump(PrintWriter(stringWriter), tailLength = 0)
|
|
||||||
val actualString = stringWriter.toString()
|
|
||||||
|
|
||||||
assertThat(actualString).contains("null")
|
|
||||||
assertThat(actualString).contains("2")
|
|
||||||
assertThat(actualString).contains("threeString")
|
|
||||||
|
|
||||||
job.cancel()
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
private const val NET_1_ID = 100
|
|
||||||
private val NET_1 = com.android.systemui.util.mockito.mock<Network>().also {
|
|
||||||
Mockito.`when`(it.getNetId()).thenReturn(NET_1_ID)
|
|
||||||
}
|
|
||||||
private val NET_1_CAPS = NetworkCapabilities.Builder()
|
|
||||||
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
|
|
||||||
.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
|
|
||||||
.build()
|
|
||||||
private val IMMEDIATE = Dispatchers.Main.immediate
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -19,7 +19,7 @@ package com.android.systemui.statusbar.pipeline.shared.data.repository
|
|||||||
import androidx.test.filters.SmallTest
|
import androidx.test.filters.SmallTest
|
||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
import com.android.systemui.dump.DumpManager
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
import com.android.systemui.statusbar.pipeline.shared.ConnectivityInputLogger
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot
|
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlots
|
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlots
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.repository.ConnectivityRepositoryImpl.Companion.DEFAULT_HIDDEN_ICONS_RESOURCE
|
import com.android.systemui.statusbar.pipeline.shared.data.repository.ConnectivityRepositoryImpl.Companion.DEFAULT_HIDDEN_ICONS_RESOURCE
|
||||||
@@ -52,7 +52,7 @@ class ConnectivityRepositoryImplTest : SysuiTestCase() {
|
|||||||
|
|
||||||
@Mock private lateinit var connectivitySlots: ConnectivitySlots
|
@Mock private lateinit var connectivitySlots: ConnectivitySlots
|
||||||
@Mock private lateinit var dumpManager: DumpManager
|
@Mock private lateinit var dumpManager: DumpManager
|
||||||
@Mock private lateinit var logger: ConnectivityPipelineLogger
|
@Mock private lateinit var logger: ConnectivityInputLogger
|
||||||
private lateinit var scope: CoroutineScope
|
private lateinit var scope: CoroutineScope
|
||||||
@Mock private lateinit var tunerService: TunerService
|
@Mock private lateinit var tunerService: TunerService
|
||||||
|
|
||||||
@@ -61,7 +61,8 @@ class ConnectivityRepositoryImplTest : SysuiTestCase() {
|
|||||||
MockitoAnnotations.initMocks(this)
|
MockitoAnnotations.initMocks(this)
|
||||||
scope = CoroutineScope(IMMEDIATE)
|
scope = CoroutineScope(IMMEDIATE)
|
||||||
|
|
||||||
underTest = ConnectivityRepositoryImpl(
|
underTest =
|
||||||
|
ConnectivityRepositoryImpl(
|
||||||
connectivitySlots,
|
connectivitySlots,
|
||||||
context,
|
context,
|
||||||
dumpManager,
|
dumpManager,
|
||||||
@@ -77,15 +78,16 @@ class ConnectivityRepositoryImplTest : SysuiTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun forceHiddenSlots_initiallyGetsDefault() = runBlocking(IMMEDIATE) {
|
fun forceHiddenSlots_initiallyGetsDefault() =
|
||||||
|
runBlocking(IMMEDIATE) {
|
||||||
setUpEthernetWifiMobileSlotNames()
|
setUpEthernetWifiMobileSlotNames()
|
||||||
context.getOrCreateTestableResources().addOverride(
|
context
|
||||||
DEFAULT_HIDDEN_ICONS_RESOURCE,
|
.getOrCreateTestableResources()
|
||||||
arrayOf(SLOT_WIFI, SLOT_ETHERNET)
|
.addOverride(DEFAULT_HIDDEN_ICONS_RESOURCE, arrayOf(SLOT_WIFI, SLOT_ETHERNET))
|
||||||
)
|
|
||||||
// Re-create our [ConnectivityRepositoryImpl], since it fetches
|
// Re-create our [ConnectivityRepositoryImpl], since it fetches
|
||||||
// config_statusBarIconsToExclude when it's first constructed
|
// config_statusBarIconsToExclude when it's first constructed
|
||||||
underTest = ConnectivityRepositoryImpl(
|
underTest =
|
||||||
|
ConnectivityRepositoryImpl(
|
||||||
connectivitySlots,
|
connectivitySlots,
|
||||||
context,
|
context,
|
||||||
dumpManager,
|
dumpManager,
|
||||||
@@ -95,10 +97,7 @@ class ConnectivityRepositoryImplTest : SysuiTestCase() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
var latest: Set<ConnectivitySlot>? = null
|
var latest: Set<ConnectivitySlot>? = null
|
||||||
val job = underTest
|
val job = underTest.forceHiddenSlots.onEach { latest = it }.launchIn(this)
|
||||||
.forceHiddenSlots
|
|
||||||
.onEach { latest = it }
|
|
||||||
.launchIn(this)
|
|
||||||
|
|
||||||
assertThat(latest).containsExactly(ConnectivitySlot.ETHERNET, ConnectivitySlot.WIFI)
|
assertThat(latest).containsExactly(ConnectivitySlot.ETHERNET, ConnectivitySlot.WIFI)
|
||||||
|
|
||||||
@@ -106,14 +105,12 @@ class ConnectivityRepositoryImplTest : SysuiTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun forceHiddenSlots_slotNamesAdded_flowHasSlots() = runBlocking(IMMEDIATE) {
|
fun forceHiddenSlots_slotNamesAdded_flowHasSlots() =
|
||||||
|
runBlocking(IMMEDIATE) {
|
||||||
setUpEthernetWifiMobileSlotNames()
|
setUpEthernetWifiMobileSlotNames()
|
||||||
|
|
||||||
var latest: Set<ConnectivitySlot>? = null
|
var latest: Set<ConnectivitySlot>? = null
|
||||||
val job = underTest
|
val job = underTest.forceHiddenSlots.onEach { latest = it }.launchIn(this)
|
||||||
.forceHiddenSlots
|
|
||||||
.onEach { latest = it }
|
|
||||||
.launchIn(this)
|
|
||||||
|
|
||||||
getTunable().onTuningChanged(HIDDEN_ICONS_TUNABLE_KEY, SLOT_MOBILE)
|
getTunable().onTuningChanged(HIDDEN_ICONS_TUNABLE_KEY, SLOT_MOBILE)
|
||||||
|
|
||||||
@@ -123,14 +120,12 @@ class ConnectivityRepositoryImplTest : SysuiTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun forceHiddenSlots_wrongKey_doesNotUpdate() = runBlocking(IMMEDIATE) {
|
fun forceHiddenSlots_wrongKey_doesNotUpdate() =
|
||||||
|
runBlocking(IMMEDIATE) {
|
||||||
setUpEthernetWifiMobileSlotNames()
|
setUpEthernetWifiMobileSlotNames()
|
||||||
|
|
||||||
var latest: Set<ConnectivitySlot>? = null
|
var latest: Set<ConnectivitySlot>? = null
|
||||||
val job = underTest
|
val job = underTest.forceHiddenSlots.onEach { latest = it }.launchIn(this)
|
||||||
.forceHiddenSlots
|
|
||||||
.onEach { latest = it }
|
|
||||||
.launchIn(this)
|
|
||||||
|
|
||||||
getTunable().onTuningChanged(HIDDEN_ICONS_TUNABLE_KEY, SLOT_MOBILE)
|
getTunable().onTuningChanged(HIDDEN_ICONS_TUNABLE_KEY, SLOT_MOBILE)
|
||||||
|
|
||||||
@@ -145,15 +140,16 @@ class ConnectivityRepositoryImplTest : SysuiTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun forceHiddenSlots_slotNamesAddedThenNull_flowHasDefault() = runBlocking(IMMEDIATE) {
|
fun forceHiddenSlots_slotNamesAddedThenNull_flowHasDefault() =
|
||||||
|
runBlocking(IMMEDIATE) {
|
||||||
setUpEthernetWifiMobileSlotNames()
|
setUpEthernetWifiMobileSlotNames()
|
||||||
context.getOrCreateTestableResources().addOverride(
|
context
|
||||||
DEFAULT_HIDDEN_ICONS_RESOURCE,
|
.getOrCreateTestableResources()
|
||||||
arrayOf(SLOT_WIFI, SLOT_ETHERNET)
|
.addOverride(DEFAULT_HIDDEN_ICONS_RESOURCE, arrayOf(SLOT_WIFI, SLOT_ETHERNET))
|
||||||
)
|
|
||||||
// Re-create our [ConnectivityRepositoryImpl], since it fetches
|
// Re-create our [ConnectivityRepositoryImpl], since it fetches
|
||||||
// config_statusBarIconsToExclude when it's first constructed
|
// config_statusBarIconsToExclude when it's first constructed
|
||||||
underTest = ConnectivityRepositoryImpl(
|
underTest =
|
||||||
|
ConnectivityRepositoryImpl(
|
||||||
connectivitySlots,
|
connectivitySlots,
|
||||||
context,
|
context,
|
||||||
dumpManager,
|
dumpManager,
|
||||||
@@ -163,10 +159,7 @@ class ConnectivityRepositoryImplTest : SysuiTestCase() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
var latest: Set<ConnectivitySlot>? = null
|
var latest: Set<ConnectivitySlot>? = null
|
||||||
val job = underTest
|
val job = underTest.forceHiddenSlots.onEach { latest = it }.launchIn(this)
|
||||||
.forceHiddenSlots
|
|
||||||
.onEach { latest = it }
|
|
||||||
.launchIn(this)
|
|
||||||
|
|
||||||
// First, update the slots
|
// First, update the slots
|
||||||
getTunable().onTuningChanged(HIDDEN_ICONS_TUNABLE_KEY, SLOT_MOBILE)
|
getTunable().onTuningChanged(HIDDEN_ICONS_TUNABLE_KEY, SLOT_MOBILE)
|
||||||
@@ -183,15 +176,12 @@ class ConnectivityRepositoryImplTest : SysuiTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun forceHiddenSlots_someInvalidSlotNames_flowHasValidSlotsOnly() = runBlocking(IMMEDIATE) {
|
fun forceHiddenSlots_someInvalidSlotNames_flowHasValidSlotsOnly() =
|
||||||
|
runBlocking(IMMEDIATE) {
|
||||||
var latest: Set<ConnectivitySlot>? = null
|
var latest: Set<ConnectivitySlot>? = null
|
||||||
val job = underTest
|
val job = underTest.forceHiddenSlots.onEach { latest = it }.launchIn(this)
|
||||||
.forceHiddenSlots
|
|
||||||
.onEach { latest = it }
|
|
||||||
.launchIn(this)
|
|
||||||
|
|
||||||
whenever(connectivitySlots.getSlotFromName(SLOT_WIFI))
|
whenever(connectivitySlots.getSlotFromName(SLOT_WIFI)).thenReturn(ConnectivitySlot.WIFI)
|
||||||
.thenReturn(ConnectivitySlot.WIFI)
|
|
||||||
whenever(connectivitySlots.getSlotFromName(SLOT_MOBILE)).thenReturn(null)
|
whenever(connectivitySlots.getSlotFromName(SLOT_MOBILE)).thenReturn(null)
|
||||||
|
|
||||||
getTunable().onTuningChanged(HIDDEN_ICONS_TUNABLE_KEY, "$SLOT_WIFI,$SLOT_MOBILE")
|
getTunable().onTuningChanged(HIDDEN_ICONS_TUNABLE_KEY, "$SLOT_WIFI,$SLOT_MOBILE")
|
||||||
@@ -202,19 +192,15 @@ class ConnectivityRepositoryImplTest : SysuiTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun forceHiddenSlots_someEmptySlotNames_flowHasValidSlotsOnly() = runBlocking(IMMEDIATE) {
|
fun forceHiddenSlots_someEmptySlotNames_flowHasValidSlotsOnly() =
|
||||||
|
runBlocking(IMMEDIATE) {
|
||||||
setUpEthernetWifiMobileSlotNames()
|
setUpEthernetWifiMobileSlotNames()
|
||||||
|
|
||||||
var latest: Set<ConnectivitySlot>? = null
|
var latest: Set<ConnectivitySlot>? = null
|
||||||
val job = underTest
|
val job = underTest.forceHiddenSlots.onEach { latest = it }.launchIn(this)
|
||||||
.forceHiddenSlots
|
|
||||||
.onEach { latest = it }
|
|
||||||
.launchIn(this)
|
|
||||||
|
|
||||||
// WHEN there's empty and blank slot names
|
// WHEN there's empty and blank slot names
|
||||||
getTunable().onTuningChanged(
|
getTunable().onTuningChanged(HIDDEN_ICONS_TUNABLE_KEY, "$SLOT_MOBILE, ,,$SLOT_WIFI")
|
||||||
HIDDEN_ICONS_TUNABLE_KEY, "$SLOT_MOBILE, ,,$SLOT_WIFI"
|
|
||||||
)
|
|
||||||
|
|
||||||
// THEN we skip that slot but still process the other ones
|
// THEN we skip that slot but still process the other ones
|
||||||
assertThat(latest).containsExactly(ConnectivitySlot.WIFI, ConnectivitySlot.MOBILE)
|
assertThat(latest).containsExactly(ConnectivitySlot.WIFI, ConnectivitySlot.MOBILE)
|
||||||
@@ -223,19 +209,19 @@ class ConnectivityRepositoryImplTest : SysuiTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun forceHiddenSlots_allInvalidOrEmptySlotNames_flowHasEmpty() = runBlocking(IMMEDIATE) {
|
fun forceHiddenSlots_allInvalidOrEmptySlotNames_flowHasEmpty() =
|
||||||
|
runBlocking(IMMEDIATE) {
|
||||||
var latest: Set<ConnectivitySlot>? = null
|
var latest: Set<ConnectivitySlot>? = null
|
||||||
val job = underTest
|
val job = underTest.forceHiddenSlots.onEach { latest = it }.launchIn(this)
|
||||||
.forceHiddenSlots
|
|
||||||
.onEach { latest = it }
|
|
||||||
.launchIn(this)
|
|
||||||
|
|
||||||
whenever(connectivitySlots.getSlotFromName(SLOT_WIFI)).thenReturn(null)
|
whenever(connectivitySlots.getSlotFromName(SLOT_WIFI)).thenReturn(null)
|
||||||
whenever(connectivitySlots.getSlotFromName(SLOT_ETHERNET)).thenReturn(null)
|
whenever(connectivitySlots.getSlotFromName(SLOT_ETHERNET)).thenReturn(null)
|
||||||
whenever(connectivitySlots.getSlotFromName(SLOT_MOBILE)).thenReturn(null)
|
whenever(connectivitySlots.getSlotFromName(SLOT_MOBILE)).thenReturn(null)
|
||||||
|
|
||||||
getTunable().onTuningChanged(
|
getTunable()
|
||||||
HIDDEN_ICONS_TUNABLE_KEY, "$SLOT_MOBILE,,$SLOT_WIFI,$SLOT_ETHERNET,,,"
|
.onTuningChanged(
|
||||||
|
HIDDEN_ICONS_TUNABLE_KEY,
|
||||||
|
"$SLOT_MOBILE,,$SLOT_WIFI,$SLOT_ETHERNET,,,"
|
||||||
)
|
)
|
||||||
|
|
||||||
assertThat(latest).isEmpty()
|
assertThat(latest).isEmpty()
|
||||||
@@ -244,14 +230,12 @@ class ConnectivityRepositoryImplTest : SysuiTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun forceHiddenSlots_newSubscriberGetsCurrentValue() = runBlocking(IMMEDIATE) {
|
fun forceHiddenSlots_newSubscriberGetsCurrentValue() =
|
||||||
|
runBlocking(IMMEDIATE) {
|
||||||
setUpEthernetWifiMobileSlotNames()
|
setUpEthernetWifiMobileSlotNames()
|
||||||
|
|
||||||
var latest1: Set<ConnectivitySlot>? = null
|
var latest1: Set<ConnectivitySlot>? = null
|
||||||
val job1 = underTest
|
val job1 = underTest.forceHiddenSlots.onEach { latest1 = it }.launchIn(this)
|
||||||
.forceHiddenSlots
|
|
||||||
.onEach { latest1 = it }
|
|
||||||
.launchIn(this)
|
|
||||||
|
|
||||||
getTunable().onTuningChanged(HIDDEN_ICONS_TUNABLE_KEY, "$SLOT_WIFI,$SLOT_ETHERNET")
|
getTunable().onTuningChanged(HIDDEN_ICONS_TUNABLE_KEY, "$SLOT_WIFI,$SLOT_ETHERNET")
|
||||||
|
|
||||||
@@ -259,10 +243,7 @@ class ConnectivityRepositoryImplTest : SysuiTestCase() {
|
|||||||
|
|
||||||
// WHEN we add a second subscriber after having already emitted a value
|
// WHEN we add a second subscriber after having already emitted a value
|
||||||
var latest2: Set<ConnectivitySlot>? = null
|
var latest2: Set<ConnectivitySlot>? = null
|
||||||
val job2 = underTest
|
val job2 = underTest.forceHiddenSlots.onEach { latest2 = it }.launchIn(this)
|
||||||
.forceHiddenSlots
|
|
||||||
.onEach { latest2 = it }
|
|
||||||
.launchIn(this)
|
|
||||||
|
|
||||||
// THEN the second subscribe receives the already-emitted value
|
// THEN the second subscribe receives the already-emitted value
|
||||||
assertThat(latest2).containsExactly(ConnectivitySlot.WIFI, ConnectivitySlot.ETHERNET)
|
assertThat(latest2).containsExactly(ConnectivitySlot.WIFI, ConnectivitySlot.ETHERNET)
|
||||||
@@ -280,10 +261,8 @@ class ConnectivityRepositoryImplTest : SysuiTestCase() {
|
|||||||
private fun setUpEthernetWifiMobileSlotNames() {
|
private fun setUpEthernetWifiMobileSlotNames() {
|
||||||
whenever(connectivitySlots.getSlotFromName(SLOT_ETHERNET))
|
whenever(connectivitySlots.getSlotFromName(SLOT_ETHERNET))
|
||||||
.thenReturn(ConnectivitySlot.ETHERNET)
|
.thenReturn(ConnectivitySlot.ETHERNET)
|
||||||
whenever(connectivitySlots.getSlotFromName(SLOT_WIFI))
|
whenever(connectivitySlots.getSlotFromName(SLOT_WIFI)).thenReturn(ConnectivitySlot.WIFI)
|
||||||
.thenReturn(ConnectivitySlot.WIFI)
|
whenever(connectivitySlots.getSlotFromName(SLOT_MOBILE)).thenReturn(ConnectivitySlot.MOBILE)
|
||||||
whenever(connectivitySlots.getSlotFromName(SLOT_MOBILE))
|
|
||||||
.thenReturn(ConnectivitySlot.MOBILE)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
@@ -23,11 +23,11 @@ import com.android.systemui.SysuiTestCase
|
|||||||
import com.android.systemui.demomode.DemoMode
|
import com.android.systemui.demomode.DemoMode
|
||||||
import com.android.systemui.demomode.DemoModeController
|
import com.android.systemui.demomode.DemoModeController
|
||||||
import com.android.systemui.log.table.TableLogBuffer
|
import com.android.systemui.log.table.TableLogBuffer
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.data.repository.demo.DemoModeWifiDataSource
|
import com.android.systemui.statusbar.pipeline.wifi.data.repository.demo.DemoModeWifiDataSource
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.data.repository.demo.DemoWifiRepository
|
import com.android.systemui.statusbar.pipeline.wifi.data.repository.demo.DemoWifiRepository
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.data.repository.demo.model.FakeWifiEventModel
|
import com.android.systemui.statusbar.pipeline.wifi.data.repository.demo.model.FakeWifiEventModel
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.data.repository.prod.WifiRepositoryImpl
|
import com.android.systemui.statusbar.pipeline.wifi.data.repository.prod.WifiRepositoryImpl
|
||||||
|
import com.android.systemui.statusbar.pipeline.wifi.shared.WifiInputLogger
|
||||||
import com.android.systemui.util.concurrency.FakeExecutor
|
import com.android.systemui.util.concurrency.FakeExecutor
|
||||||
import com.android.systemui.util.mockito.kotlinArgumentCaptor
|
import com.android.systemui.util.mockito.kotlinArgumentCaptor
|
||||||
import com.android.systemui.util.mockito.whenever
|
import com.android.systemui.util.mockito.whenever
|
||||||
@@ -47,6 +47,7 @@ import org.mockito.Mockito
|
|||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
|
|
||||||
@OptIn(ExperimentalCoroutinesApi::class)
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
|
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
|
||||||
@SmallTest
|
@SmallTest
|
||||||
class WifiRepositorySwitcherTest : SysuiTestCase() {
|
class WifiRepositorySwitcherTest : SysuiTestCase() {
|
||||||
private lateinit var underTest: WifiRepositorySwitcher
|
private lateinit var underTest: WifiRepositorySwitcher
|
||||||
@@ -54,7 +55,7 @@ class WifiRepositorySwitcherTest : SysuiTestCase() {
|
|||||||
private lateinit var demoImpl: DemoWifiRepository
|
private lateinit var demoImpl: DemoWifiRepository
|
||||||
|
|
||||||
@Mock private lateinit var demoModeController: DemoModeController
|
@Mock private lateinit var demoModeController: DemoModeController
|
||||||
@Mock private lateinit var logger: ConnectivityPipelineLogger
|
@Mock private lateinit var logger: WifiInputLogger
|
||||||
@Mock private lateinit var tableLogger: TableLogBuffer
|
@Mock private lateinit var tableLogger: TableLogBuffer
|
||||||
@Mock private lateinit var connectivityManager: ConnectivityManager
|
@Mock private lateinit var connectivityManager: ConnectivityManager
|
||||||
@Mock private lateinit var wifiManager: WifiManager
|
@Mock private lateinit var wifiManager: WifiManager
|
||||||
|
|||||||
@@ -34,9 +34,9 @@ import androidx.test.filters.SmallTest
|
|||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
import com.android.systemui.broadcast.BroadcastDispatcher
|
import com.android.systemui.broadcast.BroadcastDispatcher
|
||||||
import com.android.systemui.log.table.TableLogBuffer
|
import com.android.systemui.log.table.TableLogBuffer
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
|
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.data.repository.prod.WifiRepositoryImpl.Companion.WIFI_NETWORK_DEFAULT
|
import com.android.systemui.statusbar.pipeline.wifi.data.repository.prod.WifiRepositoryImpl.Companion.WIFI_NETWORK_DEFAULT
|
||||||
|
import com.android.systemui.statusbar.pipeline.wifi.shared.WifiInputLogger
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiNetworkModel
|
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiNetworkModel
|
||||||
import com.android.systemui.util.concurrency.FakeExecutor
|
import com.android.systemui.util.concurrency.FakeExecutor
|
||||||
import com.android.systemui.util.mockito.any
|
import com.android.systemui.util.mockito.any
|
||||||
@@ -72,7 +72,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
|||||||
private lateinit var underTest: WifiRepositoryImpl
|
private lateinit var underTest: WifiRepositoryImpl
|
||||||
|
|
||||||
@Mock private lateinit var broadcastDispatcher: BroadcastDispatcher
|
@Mock private lateinit var broadcastDispatcher: BroadcastDispatcher
|
||||||
@Mock private lateinit var logger: ConnectivityPipelineLogger
|
@Mock private lateinit var logger: WifiInputLogger
|
||||||
@Mock private lateinit var tableLogger: TableLogBuffer
|
@Mock private lateinit var tableLogger: TableLogBuffer
|
||||||
@Mock private lateinit var connectivityManager: ConnectivityManager
|
@Mock private lateinit var connectivityManager: ConnectivityManager
|
||||||
@Mock private lateinit var wifiManager: WifiManager
|
@Mock private lateinit var wifiManager: WifiManager
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.Airpla
|
|||||||
import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModel
|
import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModel
|
||||||
import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModelImpl
|
import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModelImpl
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants
|
import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository
|
import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepository
|
import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepository
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.WifiInteractor
|
import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.WifiInteractor
|
||||||
@@ -63,7 +62,6 @@ class ModernStatusBarWifiViewTest : SysuiTestCase() {
|
|||||||
private lateinit var testableLooper: TestableLooper
|
private lateinit var testableLooper: TestableLooper
|
||||||
|
|
||||||
@Mock private lateinit var statusBarPipelineFlags: StatusBarPipelineFlags
|
@Mock private lateinit var statusBarPipelineFlags: StatusBarPipelineFlags
|
||||||
@Mock private lateinit var logger: ConnectivityPipelineLogger
|
|
||||||
@Mock private lateinit var tableLogBuffer: TableLogBuffer
|
@Mock private lateinit var tableLogBuffer: TableLogBuffer
|
||||||
@Mock private lateinit var connectivityConstants: ConnectivityConstants
|
@Mock private lateinit var connectivityConstants: ConnectivityConstants
|
||||||
@Mock private lateinit var wifiConstants: WifiConstants
|
@Mock private lateinit var wifiConstants: WifiConstants
|
||||||
@@ -92,7 +90,7 @@ class ModernStatusBarWifiViewTest : SysuiTestCase() {
|
|||||||
airplaneModeRepository,
|
airplaneModeRepository,
|
||||||
connectivityRepository,
|
connectivityRepository,
|
||||||
),
|
),
|
||||||
logger,
|
tableLogBuffer,
|
||||||
scope,
|
scope,
|
||||||
)
|
)
|
||||||
viewModel =
|
viewModel =
|
||||||
@@ -100,7 +98,6 @@ class ModernStatusBarWifiViewTest : SysuiTestCase() {
|
|||||||
airplaneModeViewModel,
|
airplaneModeViewModel,
|
||||||
connectivityConstants,
|
connectivityConstants,
|
||||||
context,
|
context,
|
||||||
logger,
|
|
||||||
tableLogBuffer,
|
tableLogBuffer,
|
||||||
interactor,
|
interactor,
|
||||||
scope,
|
scope,
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.Airpla
|
|||||||
import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModel
|
import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModel
|
||||||
import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModelImpl
|
import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModelImpl
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants
|
import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot
|
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository
|
import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository
|
||||||
import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepository
|
import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepository
|
||||||
@@ -68,7 +67,6 @@ internal class WifiViewModelIconParameterizedTest(private val testCase: TestCase
|
|||||||
private lateinit var underTest: WifiViewModel
|
private lateinit var underTest: WifiViewModel
|
||||||
|
|
||||||
@Mock private lateinit var statusBarPipelineFlags: StatusBarPipelineFlags
|
@Mock private lateinit var statusBarPipelineFlags: StatusBarPipelineFlags
|
||||||
@Mock private lateinit var logger: ConnectivityPipelineLogger
|
|
||||||
@Mock private lateinit var tableLogBuffer: TableLogBuffer
|
@Mock private lateinit var tableLogBuffer: TableLogBuffer
|
||||||
@Mock private lateinit var connectivityConstants: ConnectivityConstants
|
@Mock private lateinit var connectivityConstants: ConnectivityConstants
|
||||||
@Mock private lateinit var wifiConstants: WifiConstants
|
@Mock private lateinit var wifiConstants: WifiConstants
|
||||||
@@ -94,7 +92,7 @@ internal class WifiViewModelIconParameterizedTest(private val testCase: TestCase
|
|||||||
airplaneModeRepository,
|
airplaneModeRepository,
|
||||||
connectivityRepository,
|
connectivityRepository,
|
||||||
),
|
),
|
||||||
logger,
|
tableLogBuffer,
|
||||||
scope,
|
scope,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -125,7 +123,6 @@ internal class WifiViewModelIconParameterizedTest(private val testCase: TestCase
|
|||||||
airplaneModeViewModel,
|
airplaneModeViewModel,
|
||||||
connectivityConstants,
|
connectivityConstants,
|
||||||
context,
|
context,
|
||||||
logger,
|
|
||||||
tableLogBuffer,
|
tableLogBuffer,
|
||||||
interactor,
|
interactor,
|
||||||
scope,
|
scope,
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.Airpla
|
|||||||
import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModel
|
import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModel
|
||||||
import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModelImpl
|
import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModelImpl
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants
|
import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants
|
||||||
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
|
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot
|
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
|
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
|
||||||
import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository
|
import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository
|
||||||
@@ -59,7 +58,6 @@ class WifiViewModelTest : SysuiTestCase() {
|
|||||||
private lateinit var underTest: WifiViewModel
|
private lateinit var underTest: WifiViewModel
|
||||||
|
|
||||||
@Mock private lateinit var statusBarPipelineFlags: StatusBarPipelineFlags
|
@Mock private lateinit var statusBarPipelineFlags: StatusBarPipelineFlags
|
||||||
@Mock private lateinit var logger: ConnectivityPipelineLogger
|
|
||||||
@Mock private lateinit var tableLogBuffer: TableLogBuffer
|
@Mock private lateinit var tableLogBuffer: TableLogBuffer
|
||||||
@Mock private lateinit var connectivityConstants: ConnectivityConstants
|
@Mock private lateinit var connectivityConstants: ConnectivityConstants
|
||||||
@Mock private lateinit var wifiConstants: WifiConstants
|
@Mock private lateinit var wifiConstants: WifiConstants
|
||||||
@@ -85,7 +83,7 @@ class WifiViewModelTest : SysuiTestCase() {
|
|||||||
airplaneModeRepository,
|
airplaneModeRepository,
|
||||||
connectivityRepository,
|
connectivityRepository,
|
||||||
),
|
),
|
||||||
logger,
|
tableLogBuffer,
|
||||||
scope,
|
scope,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -478,7 +476,6 @@ class WifiViewModelTest : SysuiTestCase() {
|
|||||||
airplaneModeViewModel,
|
airplaneModeViewModel,
|
||||||
connectivityConstants,
|
connectivityConstants,
|
||||||
context,
|
context,
|
||||||
logger,
|
|
||||||
tableLogBuffer,
|
tableLogBuffer,
|
||||||
interactor,
|
interactor,
|
||||||
scope,
|
scope,
|
||||||
|
|||||||
Reference in New Issue
Block a user