[Sb refactor] Move WifiActivityModel to shared

Mobile will want to use the same model, so renamed `WifiActivityModel`
to `DataActivityModel` and updated all usages.

The only non-pure part of the change is that `ACTIVITY_PREFIX` changed
not to include the "wifi" part of the name, so I left the constant there
(which will be fine for mobile) but allowed WifiRepositoryImpl to
declare its own prefix for logging.

Test: tests in tests/src/com/android/systemui/pipeline/wifi/*
Bug: 238425913
Change-Id: I4b913414cdacb5e0751e32b4d690685c6ab7d17a
This commit is contained in:
Evan Laird
2022-12-07 16:05:51 -05:00
parent 2856487c83
commit d4c86b4e98
8 changed files with 53 additions and 53 deletions

View File

@@ -14,20 +14,19 @@
* limitations under the License.
*/
package com.android.systemui.statusbar.pipeline.wifi.shared.model
package com.android.systemui.statusbar.pipeline.shared.data.model
import com.android.systemui.log.table.Diffable
import com.android.systemui.log.table.TableRowLogger
/** Provides information on the current wifi activity. */
data class WifiActivityModel(
/** True if the wifi has activity in (download). */
/** Provides information about the current data activity direction */
data class DataActivityModel(
/** True if the connection has activity in (download). */
val hasActivityIn: Boolean,
/** True if the wifi has activity out (upload). */
/** True if the connection has activity out (upload). */
val hasActivityOut: Boolean,
) : Diffable<WifiActivityModel> {
override fun logDiffs(prevVal: WifiActivityModel, row: TableRowLogger) {
) : Diffable<DataActivityModel> {
override fun logDiffs(prevVal: DataActivityModel, row: TableRowLogger) {
if (prevVal.hasActivityIn != hasActivityIn) {
row.logChange(COL_ACTIVITY_IN, hasActivityIn)
}
@@ -42,6 +41,6 @@ data class WifiActivityModel(
}
}
const val ACTIVITY_PREFIX = "wifiActivity"
const val ACTIVITY_PREFIX = "dataActivity"
private const val COL_ACTIVITY_IN = "in"
private const val COL_ACTIVITY_OUT = "out"

View File

@@ -42,9 +42,8 @@ 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.SB_LOGGING_TAG
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.wifi.data.model.WifiNetworkModel
import com.android.systemui.statusbar.pipeline.wifi.shared.model.ACTIVITY_PREFIX
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiActivityModel
import java.util.concurrent.Executor
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
@@ -74,7 +73,7 @@ interface WifiRepository {
val wifiNetwork: StateFlow<WifiNetworkModel>
/** Observable for the current wifi network activity. */
val wifiActivity: StateFlow<WifiActivityModel>
val wifiActivity: StateFlow<DataActivityModel>
}
/** Real implementation of [WifiRepository]. */
@@ -230,7 +229,7 @@ class WifiRepositoryImpl @Inject constructor(
initialValue = WIFI_NETWORK_DEFAULT
)
override val wifiActivity: StateFlow<WifiActivityModel> =
override val wifiActivity: StateFlow<DataActivityModel> =
if (wifiManager == null) {
Log.w(SB_LOGGING_TAG, "Null WifiManager; skipping activity callback")
flowOf(ACTIVITY_DEFAULT)
@@ -238,7 +237,7 @@ class WifiRepositoryImpl @Inject constructor(
conflatedCallbackFlow {
val callback = TrafficStateCallback { state ->
logger.logInputChange("onTrafficStateChange", prettyPrintActivity(state))
trySend(trafficStateToWifiActivityModel(state))
trySend(trafficStateToDataActivityModel(state))
}
wifiManager.registerTrafficStateCallback(mainExecutor, callback)
awaitClose { wifiManager.unregisterTrafficStateCallback(callback) }
@@ -256,7 +255,9 @@ class WifiRepositoryImpl @Inject constructor(
)
companion object {
val ACTIVITY_DEFAULT = WifiActivityModel(hasActivityIn = false, hasActivityOut = false)
private const val ACTIVITY_PREFIX = "wifiActivity"
val ACTIVITY_DEFAULT = DataActivityModel(hasActivityIn = false, hasActivityOut = false)
// Start out with no known wifi network.
// Note: [WifiStatusTracker] (the old implementation of connectivity logic) does do an
// initial fetch to get a starting wifi network. But, it uses a deprecated API
@@ -265,8 +266,8 @@ class WifiRepositoryImpl @Inject constructor(
// NetworkCallback inside [wifiNetwork] for our wifi network information.
val WIFI_NETWORK_DEFAULT = WifiNetworkModel.Inactive
private fun trafficStateToWifiActivityModel(state: Int): WifiActivityModel {
return WifiActivityModel(
private fun trafficStateToDataActivityModel(state: Int): DataActivityModel {
return DataActivityModel(
hasActivityIn = state == TrafficStateCallback.DATA_ACTIVITY_IN ||
state == TrafficStateCallback.DATA_ACTIVITY_INOUT,
hasActivityOut = state == TrafficStateCallback.DATA_ACTIVITY_OUT ||

View File

@@ -19,10 +19,10 @@ package com.android.systemui.statusbar.pipeline.wifi.domain.interactor
import android.net.wifi.WifiManager
import com.android.systemui.dagger.SysUISingleton
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.repository.ConnectivityRepository
import com.android.systemui.statusbar.pipeline.wifi.data.model.WifiNetworkModel
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepository
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiActivityModel
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.StateFlow
@@ -50,8 +50,8 @@ interface WifiInteractor {
/** Our current wifi network. See [WifiNetworkModel]. */
val wifiNetwork: Flow<WifiNetworkModel>
/** Our current wifi activity. See [WifiActivityModel]. */
val activity: StateFlow<WifiActivityModel>
/** Our current wifi activity. See [DataActivityModel]. */
val activity: StateFlow<DataActivityModel>
/** True if we're configured to force-hide the wifi icon and false otherwise. */
val isForceHidden: Flow<Boolean>
@@ -82,7 +82,7 @@ class WifiInteractorImpl @Inject constructor(
override val wifiNetwork: Flow<WifiNetworkModel> = wifiRepository.wifiNetwork
override val activity: StateFlow<WifiActivityModel> = wifiRepository.wifiActivity
override val activity: StateFlow<DataActivityModel> = wifiRepository.wifiActivity
override val isForceHidden: Flow<Boolean> = connectivityRepository.forceHiddenSlots.map {
it.contains(ConnectivitySlot.WIFI)

View File

@@ -37,10 +37,10 @@ import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneMod
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.wifi.data.model.WifiNetworkModel
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.model.WifiActivityModel
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
@@ -147,7 +147,7 @@ constructor(
)
/** The wifi activity status. Null if we shouldn't display the activity status. */
private val activity: Flow<WifiActivityModel?> =
private val activity: Flow<DataActivityModel?> =
if (!wifiConstants.shouldShowActivityConfig) {
flowOf(null)
} else {

View File

@@ -16,9 +16,9 @@
package com.android.systemui.statusbar.pipeline.wifi.data.repository
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
import com.android.systemui.statusbar.pipeline.wifi.data.model.WifiNetworkModel
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepositoryImpl.Companion.ACTIVITY_DEFAULT
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiActivityModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
@@ -35,7 +35,7 @@ class FakeWifiRepository : WifiRepository {
override val wifiNetwork: StateFlow<WifiNetworkModel> = _wifiNetwork
private val _wifiActivity = MutableStateFlow(ACTIVITY_DEFAULT)
override val wifiActivity: StateFlow<WifiActivityModel> = _wifiActivity
override val wifiActivity: StateFlow<DataActivityModel> = _wifiActivity
fun setIsWifiEnabled(enabled: Boolean) {
_isWifiEnabled.value = enabled
@@ -49,7 +49,7 @@ class FakeWifiRepository : WifiRepository {
_wifiNetwork.value = wifiNetworkModel
}
fun setWifiActivity(activity: WifiActivityModel) {
fun setWifiActivity(activity: DataActivityModel) {
_wifiActivity.value = activity
}
}

View File

@@ -31,10 +31,10 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.broadcast.BroadcastDispatcher
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.wifi.data.model.WifiNetworkModel
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepositoryImpl.Companion.ACTIVITY_DEFAULT
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepositoryImpl.Companion.WIFI_NETWORK_DEFAULT
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiActivityModel
import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.argumentCaptor
@@ -724,7 +724,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
fun wifiActivity_nullWifiManager_receivesDefault() = runBlocking(IMMEDIATE) {
underTest = createRepo(wifiManagerToUse = null)
var latest: WifiActivityModel? = null
var latest: DataActivityModel? = null
val job = underTest
.wifiActivity
.onEach { latest = it }
@@ -737,7 +737,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
@Test
fun wifiActivity_callbackGivesNone_activityFlowHasNone() = runBlocking(IMMEDIATE) {
var latest: WifiActivityModel? = null
var latest: DataActivityModel? = null
val job = underTest
.wifiActivity
.onEach { latest = it }
@@ -746,7 +746,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
getTrafficStateCallback().onStateChanged(TrafficStateCallback.DATA_ACTIVITY_NONE)
assertThat(latest).isEqualTo(
WifiActivityModel(hasActivityIn = false, hasActivityOut = false)
DataActivityModel(hasActivityIn = false, hasActivityOut = false)
)
job.cancel()
@@ -754,7 +754,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
@Test
fun wifiActivity_callbackGivesIn_activityFlowHasIn() = runBlocking(IMMEDIATE) {
var latest: WifiActivityModel? = null
var latest: DataActivityModel? = null
val job = underTest
.wifiActivity
.onEach { latest = it }
@@ -763,7 +763,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
getTrafficStateCallback().onStateChanged(TrafficStateCallback.DATA_ACTIVITY_IN)
assertThat(latest).isEqualTo(
WifiActivityModel(hasActivityIn = true, hasActivityOut = false)
DataActivityModel(hasActivityIn = true, hasActivityOut = false)
)
job.cancel()
@@ -771,7 +771,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
@Test
fun wifiActivity_callbackGivesOut_activityFlowHasOut() = runBlocking(IMMEDIATE) {
var latest: WifiActivityModel? = null
var latest: DataActivityModel? = null
val job = underTest
.wifiActivity
.onEach { latest = it }
@@ -780,7 +780,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
getTrafficStateCallback().onStateChanged(TrafficStateCallback.DATA_ACTIVITY_OUT)
assertThat(latest).isEqualTo(
WifiActivityModel(hasActivityIn = false, hasActivityOut = true)
DataActivityModel(hasActivityIn = false, hasActivityOut = true)
)
job.cancel()
@@ -788,7 +788,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
@Test
fun wifiActivity_callbackGivesInout_activityFlowHasInAndOut() = runBlocking(IMMEDIATE) {
var latest: WifiActivityModel? = null
var latest: DataActivityModel? = null
val job = underTest
.wifiActivity
.onEach { latest = it }
@@ -796,7 +796,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
getTrafficStateCallback().onStateChanged(TrafficStateCallback.DATA_ACTIVITY_INOUT)
assertThat(latest).isEqualTo(WifiActivityModel(hasActivityIn = true, hasActivityOut = true))
assertThat(latest).isEqualTo(DataActivityModel(hasActivityIn = true, hasActivityOut = true))
job.cancel()
}

View File

@@ -20,10 +20,10 @@ import android.net.wifi.WifiManager
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
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.repository.FakeConnectivityRepository
import com.android.systemui.statusbar.pipeline.wifi.data.model.WifiNetworkModel
import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepository
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiActivityModel
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -225,23 +225,23 @@ class WifiInteractorImplTest : SysuiTestCase() {
@Test
fun activity_matchesRepoWifiActivity() = runBlocking(IMMEDIATE) {
var latest: WifiActivityModel? = null
var latest: DataActivityModel? = null
val job = underTest
.activity
.onEach { latest = it }
.launchIn(this)
val activity1 = WifiActivityModel(hasActivityIn = true, hasActivityOut = true)
val activity1 = DataActivityModel(hasActivityIn = true, hasActivityOut = true)
wifiRepository.setWifiActivity(activity1)
yield()
assertThat(latest).isEqualTo(activity1)
val activity2 = WifiActivityModel(hasActivityIn = false, hasActivityOut = false)
val activity2 = DataActivityModel(hasActivityIn = false, hasActivityOut = false)
wifiRepository.setWifiActivity(activity2)
yield()
assertThat(latest).isEqualTo(activity2)
val activity3 = WifiActivityModel(hasActivityIn = true, hasActivityOut = false)
val activity3 = DataActivityModel(hasActivityIn = true, hasActivityOut = false)
wifiRepository.setWifiActivity(activity3)
yield()
assertThat(latest).isEqualTo(activity3)

View File

@@ -27,13 +27,13 @@ import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneMod
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.DataActivityModel
import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository
import com.android.systemui.statusbar.pipeline.wifi.data.model.WifiNetworkModel
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.WifiInteractorImpl
import com.android.systemui.statusbar.pipeline.wifi.shared.WifiConstants
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiActivityModel
import com.android.systemui.statusbar.pipeline.wifi.ui.model.WifiIcon
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineScope
@@ -209,7 +209,7 @@ class WifiViewModelTest : SysuiTestCase() {
.launchIn(this)
// WHEN we update the repo to have activity
val activity = WifiActivityModel(hasActivityIn = true, hasActivityOut = true)
val activity = DataActivityModel(hasActivityIn = true, hasActivityOut = true)
wifiRepository.setWifiActivity(activity)
yield()
@@ -252,7 +252,7 @@ class WifiViewModelTest : SysuiTestCase() {
.launchIn(this)
// WHEN we update the repo to have activity
val activity = WifiActivityModel(hasActivityIn = true, hasActivityOut = true)
val activity = DataActivityModel(hasActivityIn = true, hasActivityOut = true)
wifiRepository.setWifiActivity(activity)
yield()
@@ -293,7 +293,7 @@ class WifiViewModelTest : SysuiTestCase() {
.onEach { latestQs = it }
.launchIn(this)
val activity = WifiActivityModel(hasActivityIn = true, hasActivityOut = true)
val activity = DataActivityModel(hasActivityIn = true, hasActivityOut = true)
wifiRepository.setWifiActivity(activity)
yield()
@@ -319,7 +319,7 @@ class WifiViewModelTest : SysuiTestCase() {
.onEach { latest = it }
.launchIn(this)
val activity = WifiActivityModel(hasActivityIn = true, hasActivityOut = false)
val activity = DataActivityModel(hasActivityIn = true, hasActivityOut = false)
wifiRepository.setWifiActivity(activity)
yield()
@@ -341,7 +341,7 @@ class WifiViewModelTest : SysuiTestCase() {
.onEach { latest = it }
.launchIn(this)
val activity = WifiActivityModel(hasActivityIn = false, hasActivityOut = true)
val activity = DataActivityModel(hasActivityIn = false, hasActivityOut = true)
wifiRepository.setWifiActivity(activity)
yield()
@@ -363,7 +363,7 @@ class WifiViewModelTest : SysuiTestCase() {
.onEach { latest = it }
.launchIn(this)
val activity = WifiActivityModel(hasActivityIn = false, hasActivityOut = true)
val activity = DataActivityModel(hasActivityIn = false, hasActivityOut = true)
wifiRepository.setWifiActivity(activity)
yield()
@@ -385,7 +385,7 @@ class WifiViewModelTest : SysuiTestCase() {
.onEach { latest = it }
.launchIn(this)
val activity = WifiActivityModel(hasActivityIn = true, hasActivityOut = false)
val activity = DataActivityModel(hasActivityIn = true, hasActivityOut = false)
wifiRepository.setWifiActivity(activity)
yield()
@@ -407,7 +407,7 @@ class WifiViewModelTest : SysuiTestCase() {
.onEach { latest = it }
.launchIn(this)
val activity = WifiActivityModel(hasActivityIn = true, hasActivityOut = false)
val activity = DataActivityModel(hasActivityIn = true, hasActivityOut = false)
wifiRepository.setWifiActivity(activity)
yield()
@@ -429,7 +429,7 @@ class WifiViewModelTest : SysuiTestCase() {
.onEach { latest = it }
.launchIn(this)
val activity = WifiActivityModel(hasActivityIn = false, hasActivityOut = true)
val activity = DataActivityModel(hasActivityIn = false, hasActivityOut = true)
wifiRepository.setWifiActivity(activity)
yield()
@@ -451,7 +451,7 @@ class WifiViewModelTest : SysuiTestCase() {
.onEach { latest = it }
.launchIn(this)
val activity = WifiActivityModel(hasActivityIn = true, hasActivityOut = true)
val activity = DataActivityModel(hasActivityIn = true, hasActivityOut = true)
wifiRepository.setWifiActivity(activity)
yield()
@@ -473,7 +473,7 @@ class WifiViewModelTest : SysuiTestCase() {
.onEach { latest = it }
.launchIn(this)
val activity = WifiActivityModel(hasActivityIn = false, hasActivityOut = false)
val activity = DataActivityModel(hasActivityIn = false, hasActivityOut = false)
wifiRepository.setWifiActivity(activity)
yield()