Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit effd5af6 authored by Evan Laird's avatar Evan Laird Committed by Automerger Merge Worker
Browse files

Merge changes from topic "wifi-data-activity-model" into tm-qpr-dev am: e2ccdcbe am: 2557607c

parents 43d4966d 2557607c
Loading
Loading
Loading
Loading
+8 −9
Original line number Original line Diff line number Diff line
@@ -14,20 +14,19 @@
 * limitations under the License.
 * 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.Diffable
import com.android.systemui.log.table.TableRowLogger
import com.android.systemui.log.table.TableRowLogger


/** Provides information on the current wifi activity. */
/** Provides information about the current data activity direction */
data class WifiActivityModel(
data class DataActivityModel(
    /** True if the wifi has activity in (download). */
    /** True if the connection has activity in (download). */
    val hasActivityIn: Boolean,
    val hasActivityIn: Boolean,
    /** True if the wifi has activity out (upload). */
    /** True if the connection has activity out (upload). */
    val hasActivityOut: Boolean,
    val hasActivityOut: Boolean,
) : Diffable<WifiActivityModel> {
) : Diffable<DataActivityModel> {

    override fun logDiffs(prevVal: DataActivityModel, row: TableRowLogger) {
    override fun logDiffs(prevVal: WifiActivityModel, row: TableRowLogger) {
        if (prevVal.hasActivityIn != hasActivityIn) {
        if (prevVal.hasActivityIn != hasActivityIn) {
            row.logChange(COL_ACTIVITY_IN, 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_IN = "in"
private const val COL_ACTIVITY_OUT = "out"
private const val COL_ACTIVITY_OUT = "out"
+9 −8
Original line number Original line Diff line number Diff line
@@ -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
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger.Companion.SB_LOGGING_TAG
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.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.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 java.util.concurrent.Executor
import javax.inject.Inject
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.CoroutineScope
@@ -74,7 +73,7 @@ interface WifiRepository {
    val wifiNetwork: StateFlow<WifiNetworkModel>
    val wifiNetwork: StateFlow<WifiNetworkModel>


    /** Observable for the current wifi network activity. */
    /** Observable for the current wifi network activity. */
    val wifiActivity: StateFlow<WifiActivityModel>
    val wifiActivity: StateFlow<DataActivityModel>
}
}


/** Real implementation of [WifiRepository]. */
/** Real implementation of [WifiRepository]. */
@@ -230,7 +229,7 @@ class WifiRepositoryImpl @Inject constructor(
            initialValue = WIFI_NETWORK_DEFAULT
            initialValue = WIFI_NETWORK_DEFAULT
        )
        )


    override val wifiActivity: StateFlow<WifiActivityModel> =
    override val wifiActivity: StateFlow<DataActivityModel> =
            if (wifiManager == null) {
            if (wifiManager == null) {
                Log.w(SB_LOGGING_TAG, "Null WifiManager; skipping activity callback")
                Log.w(SB_LOGGING_TAG, "Null WifiManager; skipping activity callback")
                flowOf(ACTIVITY_DEFAULT)
                flowOf(ACTIVITY_DEFAULT)
@@ -238,7 +237,7 @@ class WifiRepositoryImpl @Inject constructor(
                conflatedCallbackFlow {
                conflatedCallbackFlow {
                    val callback = TrafficStateCallback { state ->
                    val callback = TrafficStateCallback { state ->
                        logger.logInputChange("onTrafficStateChange", prettyPrintActivity(state))
                        logger.logInputChange("onTrafficStateChange", prettyPrintActivity(state))
                        trySend(trafficStateToWifiActivityModel(state))
                        trySend(trafficStateToDataActivityModel(state))
                    }
                    }
                    wifiManager.registerTrafficStateCallback(mainExecutor, callback)
                    wifiManager.registerTrafficStateCallback(mainExecutor, callback)
                    awaitClose { wifiManager.unregisterTrafficStateCallback(callback) }
                    awaitClose { wifiManager.unregisterTrafficStateCallback(callback) }
@@ -256,7 +255,9 @@ class WifiRepositoryImpl @Inject constructor(
                )
                )


    companion object {
    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.
        // Start out with no known wifi network.
        // Note: [WifiStatusTracker] (the old implementation of connectivity logic) does do an
        // 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
        // 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.
        // NetworkCallback inside [wifiNetwork] for our wifi network information.
        val WIFI_NETWORK_DEFAULT = WifiNetworkModel.Inactive
        val WIFI_NETWORK_DEFAULT = WifiNetworkModel.Inactive


        private fun trafficStateToWifiActivityModel(state: Int): WifiActivityModel {
        private fun trafficStateToDataActivityModel(state: Int): DataActivityModel {
            return WifiActivityModel(
            return DataActivityModel(
                hasActivityIn = state == TrafficStateCallback.DATA_ACTIVITY_IN ||
                hasActivityIn = state == TrafficStateCallback.DATA_ACTIVITY_IN ||
                    state == TrafficStateCallback.DATA_ACTIVITY_INOUT,
                    state == TrafficStateCallback.DATA_ACTIVITY_INOUT,
                hasActivityOut = state == TrafficStateCallback.DATA_ACTIVITY_OUT ||
                hasActivityOut = state == TrafficStateCallback.DATA_ACTIVITY_OUT ||
+4 −4
Original line number Original line Diff line number Diff line
@@ -19,10 +19,10 @@ package com.android.systemui.statusbar.pipeline.wifi.domain.interactor
import android.net.wifi.WifiManager
import android.net.wifi.WifiManager
import com.android.systemui.dagger.SysUISingleton
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.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.shared.data.repository.ConnectivityRepository
import com.android.systemui.statusbar.pipeline.wifi.data.model.WifiNetworkModel
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.data.repository.WifiRepository
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiActivityModel
import javax.inject.Inject
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.StateFlow
@@ -50,8 +50,8 @@ interface WifiInteractor {
    /** Our current wifi network. See [WifiNetworkModel]. */
    /** Our current wifi network. See [WifiNetworkModel]. */
    val wifiNetwork: Flow<WifiNetworkModel>
    val wifiNetwork: Flow<WifiNetworkModel>


    /** Our current wifi activity. See [WifiActivityModel]. */
    /** Our current wifi activity. See [DataActivityModel]. */
    val activity: StateFlow<WifiActivityModel>
    val activity: StateFlow<DataActivityModel>


    /** True if we're configured to force-hide the wifi icon and false otherwise. */
    /** True if we're configured to force-hide the wifi icon and false otherwise. */
    val isForceHidden: Flow<Boolean>
    val isForceHidden: Flow<Boolean>
@@ -82,7 +82,7 @@ class WifiInteractorImpl @Inject constructor(


    override val wifiNetwork: Flow<WifiNetworkModel> = wifiRepository.wifiNetwork
    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 {
    override val isForceHidden: Flow<Boolean> = connectivityRepository.forceHiddenSlots.map {
        it.contains(ConnectivitySlot.WIFI)
        it.contains(ConnectivitySlot.WIFI)
+2 −2
Original line number Original line Diff line number Diff line
@@ -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.ConnectivityConstants
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
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.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.data.model.WifiNetworkModel
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
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiActivityModel
import javax.inject.Inject
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.Flow
@@ -147,7 +147,7 @@ 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<WifiActivityModel?> =
    private val activity: Flow<DataActivityModel?> =
        if (!wifiConstants.shouldShowActivityConfig) {
        if (!wifiConstants.shouldShowActivityConfig) {
            flowOf(null)
            flowOf(null)
        } else {
        } else {
+3 −3
Original line number Original line Diff line number Diff line
@@ -16,9 +16,9 @@


package com.android.systemui.statusbar.pipeline.wifi.data.repository
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.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.ACTIVITY_DEFAULT
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiActivityModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.StateFlow


@@ -35,7 +35,7 @@ class FakeWifiRepository : WifiRepository {
    override val wifiNetwork: StateFlow<WifiNetworkModel> = _wifiNetwork
    override val wifiNetwork: StateFlow<WifiNetworkModel> = _wifiNetwork


    private val _wifiActivity = MutableStateFlow(ACTIVITY_DEFAULT)
    private val _wifiActivity = MutableStateFlow(ACTIVITY_DEFAULT)
    override val wifiActivity: StateFlow<WifiActivityModel> = _wifiActivity
    override val wifiActivity: StateFlow<DataActivityModel> = _wifiActivity


    fun setIsWifiEnabled(enabled: Boolean) {
    fun setIsWifiEnabled(enabled: Boolean) {
        _isWifiEnabled.value = enabled
        _isWifiEnabled.value = enabled
@@ -49,7 +49,7 @@ class FakeWifiRepository : WifiRepository {
        _wifiNetwork.value = wifiNetworkModel
        _wifiNetwork.value = wifiNetworkModel
    }
    }


    fun setWifiActivity(activity: WifiActivityModel) {
    fun setWifiActivity(activity: DataActivityModel) {
        _wifiActivity.value = activity
        _wifiActivity.value = activity
    }
    }
}
}
Loading