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

Commit 9dce3214 authored by Caitlin Shkuratov's avatar Caitlin Shkuratov Committed by Android (Google) Code Review
Browse files

Merge "[Sb Refactor] Define an initial data/domain/ui layer for the status bar...

Merge "[Sb Refactor] Define an initial data/domain/ui layer for the status bar connectivity architecture for wifi." into tm-qpr-dev
parents 0e1079f6 f53aa98c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -270,7 +270,7 @@ public class LogModule {
    @SysUISingleton
    @StatusBarConnectivityLog
    public static LogBuffer provideStatusBarConnectivityBuffer(LogBufferFactory factory) {
        return factory.create("StatusBarConnectivityLog", 64);
        return factory.create("SbConnectivity", 64);
    }

    /** Allows logging buffers to be tweaked via adb on debug builds but not on prod builds. */
+1 −1
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

package com.android.systemui.statusbar.pipeline

import com.android.systemui.statusbar.pipeline.repository.NetworkCapabilityInfo
import com.android.systemui.statusbar.pipeline.wifi.data.repository.NetworkCapabilityInfo
import kotlinx.coroutines.flow.StateFlow

/**
+2 −2
Original line number Diff line number Diff line
@@ -18,9 +18,9 @@ package com.android.systemui.statusbar.pipeline

import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.statusbar.pipeline.repository.NetworkCapabilitiesRepo
import kotlinx.coroutines.CoroutineScope
import com.android.systemui.statusbar.pipeline.wifi.data.repository.NetworkCapabilitiesRepo
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.SharingStarted.Companion.Lazily
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.map
+18 −2
Original line number Diff line number Diff line
@@ -20,14 +20,18 @@ import android.content.Context
import com.android.systemui.CoreStartable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.statusbar.pipeline.repository.NetworkCapabilityInfo
import com.android.systemui.statusbar.pipeline.wifi.data.repository.NetworkCapabilityInfo
import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.WifiViewModel
import javax.inject.Inject
import javax.inject.Provider
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted.Companion.Lazily
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch

/**
 * A processor that transforms raw connectivity information that we get from callbacks and turns it
@@ -42,12 +46,16 @@ import kotlinx.coroutines.flow.stateIn
class ConnectivityInfoProcessor @Inject constructor(
        connectivityInfoCollector: ConnectivityInfoCollector,
        context: Context,
        // TODO(b/238425913): Don't use the application scope; instead, use the status bar view's
        // scope so we only do work when there's UI that cares about it.
        @Application private val scope: CoroutineScope,
        statusBarPipelineFlags: StatusBarPipelineFlags,
        private val statusBarPipelineFlags: StatusBarPipelineFlags,
        private val wifiViewModelProvider: Provider<WifiViewModel>,
) : CoreStartable(context) {
    // Note: This flow will not start running until a client calls `collect` on it, which means that
    // [connectivityInfoCollector]'s flow will also not start anything until that `collect` call
    // happens.
    // TODO(b/238425913): Delete this.
    val processedInfoFlow: Flow<ProcessedConnectivityInfo> =
            if (!statusBarPipelineFlags.isNewPipelineEnabled())
                emptyFlow()
@@ -60,6 +68,14 @@ class ConnectivityInfoProcessor @Inject constructor(
                    )

    override fun start() {
        if (!statusBarPipelineFlags.isNewPipelineEnabled()) {
            return
        }
        // TODO(b/238425913): The view binder should do this instead. For now, do it here so we can
        // see the logs.
        scope.launch {
            wifiViewModelProvider.get().isActivityInVisible.collect { }
        }
    }

    private fun RawConnectivityInfo.process(): ProcessedConnectivityInfo {
+5 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import com.android.systemui.CoreStartable
import com.android.systemui.statusbar.pipeline.ConnectivityInfoCollector
import com.android.systemui.statusbar.pipeline.ConnectivityInfoCollectorImpl
import com.android.systemui.statusbar.pipeline.ConnectivityInfoProcessor
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepository
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepositoryImpl
import dagger.Binds
import dagger.Module
import dagger.multibindings.ClassKey
@@ -37,4 +39,7 @@ abstract class StatusBarPipelineModule {
    abstract fun provideConnectivityInfoCollector(
            impl: ConnectivityInfoCollectorImpl
    ): ConnectivityInfoCollector

    @Binds
    abstract fun wifiRepository(impl: WifiRepositoryImpl): WifiRepository
}
Loading