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

Commit 28c29851 authored by Caitlin Shkuratov's avatar Caitlin Shkuratov Committed by Automerger Merge Worker
Browse files

Merge changes I7922b475,Id73df747,Ie8d492c5,If608a313 into udc-dev am: f9d5d4c9

parents 5054fe50 f9d5d4c9
Loading
Loading
Loading
Loading
+0 −21
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.systemui.statusbar.pipeline.mobile.data

import android.net.Network
import android.net.NetworkCapabilities
import android.telephony.ServiceState
import android.telephony.SignalStrength
import android.telephony.TelephonyDisplayInfo
@@ -27,7 +25,6 @@ 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. */
@@ -37,24 +34,6 @@ class MobileInputLogger
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, isDefaultNetworkCallback: Boolean) {
        LoggerHelper.logOnLost(buffer, TAG, network, isDefaultNetworkCallback)
    }

    fun logOnServiceStateChanged(serviceState: ServiceState, subId: Int) {
        buffer.log(
            TAG,
+0 −49
Original line number Diff line number Diff line
/*
 * 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.data.model

import android.net.NetworkCapabilities
import com.android.systemui.log.table.Diffable
import com.android.systemui.log.table.TableRowLogger

/** Provides information about a mobile network connection */
data class MobileConnectivityModel(
    /** Whether mobile is the connected transport see [NetworkCapabilities.TRANSPORT_CELLULAR] */
    val isConnected: Boolean = false,
    /** Whether the mobile transport is validated [NetworkCapabilities.NET_CAPABILITY_VALIDATED] */
    val isValidated: Boolean = false,
) : Diffable<MobileConnectivityModel> {
    // TODO(b/267767715): Can we implement [logDiffs] and [logFull] generically for data classes?
    override fun logDiffs(prevVal: MobileConnectivityModel, row: TableRowLogger) {
        if (prevVal.isConnected != isConnected) {
            row.logChange(COL_IS_CONNECTED, isConnected)
        }
        if (prevVal.isValidated != isValidated) {
            row.logChange(COL_IS_VALIDATED, isValidated)
        }
    }

    override fun logFull(row: TableRowLogger) {
        row.logChange(COL_IS_CONNECTED, isConnected)
        row.logChange(COL_IS_VALIDATED, isValidated)
    }

    companion object {
        private const val COL_IS_CONNECTED = "isConnected"
        private const val COL_IS_VALIDATED = "isValidated"
    }
}
+11 −3
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import android.telephony.SubscriptionManager
import com.android.settingslib.SignalIcon.MobileIconGroup
import com.android.settingslib.mobile.MobileMappings
import com.android.settingslib.mobile.MobileMappings.Config
import com.android.systemui.statusbar.pipeline.mobile.data.model.MobileConnectivityModel
import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.StateFlow
@@ -52,8 +51,17 @@ interface MobileConnectionsRepository {
    /** Tracks [SubscriptionManager.getDefaultDataSubscriptionId] */
    val defaultDataSubId: StateFlow<Int>

    /** The current connectivity status for the default mobile network connection */
    val defaultMobileNetworkConnectivity: StateFlow<MobileConnectivityModel>
    /**
     * True if the default network connection is a mobile-like connection and false otherwise.
     *
     * This is typically shown by having [android.net.NetworkCapabilities.TRANSPORT_CELLULAR], but
     * there are edge cases (like carrier merged wifi) that could also result in the default
     * connection being mobile-like.
     */
    val mobileIsDefault: StateFlow<Boolean>

    /** True if the default network connection is validated and false otherwise. */
    val defaultConnectionIsValidated: StateFlow<Boolean>

    /** Get or create a repository for the line of service for the given subscription ID */
    fun getRepoForSubId(subId: Int): MobileConnectionRepository
+8 −4
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCall
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.demomode.DemoMode
import com.android.systemui.demomode.DemoModeController
import com.android.systemui.statusbar.pipeline.mobile.data.model.MobileConnectivityModel
import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
import com.android.systemui.statusbar.pipeline.mobile.data.repository.demo.DemoMobileConnectionsRepository
import com.android.systemui.statusbar.pipeline.mobile.data.repository.prod.MobileConnectionsRepositoryImpl
@@ -155,13 +154,18 @@ constructor(
            .flatMapLatest { it.defaultDataSubId }
            .stateIn(scope, SharingStarted.WhileSubscribed(), realRepository.defaultDataSubId.value)

    override val defaultMobileNetworkConnectivity: StateFlow<MobileConnectivityModel> =
    override val mobileIsDefault: StateFlow<Boolean> =
        activeRepo
            .flatMapLatest { it.defaultMobileNetworkConnectivity }
            .flatMapLatest { it.mobileIsDefault }
            .stateIn(scope, SharingStarted.WhileSubscribed(), realRepository.mobileIsDefault.value)

    override val defaultConnectionIsValidated: StateFlow<Boolean> =
        activeRepo
            .flatMapLatest { it.defaultConnectionIsValidated }
            .stateIn(
                scope,
                SharingStarted.WhileSubscribed(),
                realRepository.defaultMobileNetworkConnectivity.value
                realRepository.defaultConnectionIsValidated.value
            )

    override fun getRepoForSubId(subId: Int): MobileConnectionRepository {
+4 −3
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import com.android.settingslib.mobile.MobileMappings
import com.android.settingslib.mobile.TelephonyIcons
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.log.table.TableLogBufferFactory
import com.android.systemui.statusbar.pipeline.mobile.data.model.MobileConnectivityModel
import com.android.systemui.statusbar.pipeline.mobile.data.model.ResolvedNetworkType
import com.android.systemui.statusbar.pipeline.mobile.data.model.ResolvedNetworkType.DefaultNetworkType
import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
@@ -158,8 +157,10 @@ constructor(
    override val defaultDataSubId = MutableStateFlow(INVALID_SUBSCRIPTION_ID)

    // TODO(b/261029387): not yet supported
    override val defaultMobileNetworkConnectivity =
        MutableStateFlow(MobileConnectivityModel(isConnected = true, isValidated = true))
    override val mobileIsDefault: StateFlow<Boolean> = MutableStateFlow(true)

    // TODO(b/261029387): not yet supported
    override val defaultConnectionIsValidated: StateFlow<Boolean> = MutableStateFlow(true)

    override fun getRepoForSubId(subId: Int): DemoMobileConnectionRepository {
        val current = connectionRepoCache[subId]?.repo
Loading