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

Commit 9f3bb4e3 authored by Fabian Kozynski's avatar Fabian Kozynski Committed by Android (Google) Code Review
Browse files

Merge "Add logs for Brightness changes" into main

parents 6722d442 7baba0f1
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -25,15 +25,18 @@ import android.view.Display
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.brightness.data.model.LinearBrightness
import com.android.systemui.brightness.shared.model.LinearBrightness
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
import com.android.systemui.log.core.FakeLogBuffer
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.capture
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -74,6 +77,8 @@ class ScreenBrightnessDisplayManagerRepositoryTest : SysuiTestCase() {
            ScreenBrightnessDisplayManagerRepository(
                displayId,
                displayManager,
                FakeLogBuffer.Factory.create(),
                mock<TableLogBuffer>(),
                kosmos.applicationCoroutineScope,
                kosmos.testDispatcher,
            )
+13 −3
Original line number Diff line number Diff line
@@ -20,13 +20,16 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.settingslib.display.BrightnessUtils
import com.android.systemui.SysuiTestCase
import com.android.systemui.brightness.data.model.LinearBrightness
import com.android.systemui.brightness.data.repository.fakeScreenBrightnessRepository
import com.android.systemui.brightness.data.repository.screenBrightnessRepository
import com.android.systemui.brightness.shared.GammaBrightness
import com.android.systemui.brightness.shared.model.GammaBrightness
import com.android.systemui.brightness.shared.model.LinearBrightness
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.kosmos.testScope
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
@@ -41,7 +44,14 @@ class ScreenBrightnessInteractorTest : SysuiTestCase() {

    private val kosmos = testKosmos()

    private val underTest = ScreenBrightnessInteractor(kosmos.screenBrightnessRepository)
    private val underTest =
        with(kosmos) {
            ScreenBrightnessInteractor(
                screenBrightnessRepository,
                applicationCoroutineScope,
                mock<TableLogBuffer>()
            )
        }

    @Test
    fun gammaBrightness() =
+4 −2
Original line number Diff line number Diff line
@@ -20,15 +20,16 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.settingslib.display.BrightnessUtils
import com.android.systemui.SysuiTestCase
import com.android.systemui.brightness.data.model.LinearBrightness
import com.android.systemui.brightness.data.repository.fakeScreenBrightnessRepository
import com.android.systemui.brightness.domain.interactor.brightnessPolicyEnforcementInteractor
import com.android.systemui.brightness.domain.interactor.screenBrightnessInteractor
import com.android.systemui.brightness.shared.GammaBrightness
import com.android.systemui.brightness.shared.model.GammaBrightness
import com.android.systemui.brightness.shared.model.LinearBrightness
import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.common.shared.model.Text
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.kosmos.testScope
import com.android.systemui.res.R
import com.android.systemui.testKosmos
@@ -52,6 +53,7 @@ class BrightnessSliderViewModelTest : SysuiTestCase() {
            BrightnessSliderViewModel(
                screenBrightnessInteractor,
                brightnessPolicyEnforcementInteractor,
                applicationCoroutineScope,
            )
        }

+23 −0
Original line number Diff line number Diff line
@@ -20,8 +20,15 @@ import com.android.systemui.brightness.data.repository.BrightnessPolicyRepositor
import com.android.systemui.brightness.data.repository.BrightnessPolicyRepositoryImpl
import com.android.systemui.brightness.data.repository.ScreenBrightnessDisplayManagerRepository
import com.android.systemui.brightness.data.repository.ScreenBrightnessRepository
import com.android.systemui.brightness.shared.model.BrightnessLog
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.log.LogBuffer
import com.android.systemui.log.LogBufferFactory
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.log.table.TableLogBufferFactory
import dagger.Binds
import dagger.Module
import dagger.Provides

@Module
interface ScreenBrightnessModule {
@@ -33,4 +40,20 @@ interface ScreenBrightnessModule {

    @Binds
    fun bindPolicyRepository(impl: BrightnessPolicyRepositoryImpl): BrightnessPolicyRepository

    companion object {
        @Provides
        @SysUISingleton
        @BrightnessLog
        fun providesBrightnessTableLog(factory: TableLogBufferFactory): TableLogBuffer {
            return factory.create("BrightnessTableLog", 50)
        }

        @Provides
        @SysUISingleton
        @BrightnessLog
        fun providesBrightnessLog(factory: LogBufferFactory): LogBuffer {
            return factory.create("BrightnessLog", 50)
        }
    }
}
+35 −6
Original line number Diff line number Diff line
@@ -19,12 +19,18 @@ package com.android.systemui.brightness.data.repository
import android.annotation.SuppressLint
import android.hardware.display.BrightnessInfo
import android.hardware.display.DisplayManager
import com.android.systemui.brightness.data.model.LinearBrightness
import com.android.systemui.brightness.shared.model.BrightnessLog
import com.android.systemui.brightness.shared.model.LinearBrightness
import com.android.systemui.brightness.shared.model.formatBrightness
import com.android.systemui.brightness.shared.model.logDiffForTable
import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.DisplayId
import com.android.systemui.log.LogBuffer
import com.android.systemui.log.core.LogLevel
import com.android.systemui.log.table.TableLogBuffer
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
import kotlinx.coroutines.CoroutineScope
@@ -32,13 +38,13 @@ import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.Channel.Factory.UNLIMITED
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharedFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.flow.shareIn
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
@@ -78,6 +84,8 @@ class ScreenBrightnessDisplayManagerRepository
constructor(
    @DisplayId private val displayId: Int,
    private val displayManager: DisplayManager,
    @BrightnessLog private val logBuffer: LogBuffer,
    @BrightnessLog private val tableBuffer: TableLogBuffer,
    @Application private val applicationScope: CoroutineScope,
    @Background private val backgroundContext: CoroutineContext,
) : ScreenBrightnessRepository {
@@ -100,6 +108,7 @@ constructor(
                        displayManager.setBrightness(displayId, value)
                    }
                }
                logBrightnessChange(call is SetBrightnessMethod.Permanent, value)
            }
        }
    }
@@ -147,13 +156,15 @@ constructor(
        brightnessInfo
            .filterNotNull()
            .map { LinearBrightness(it.brightnessMinimum) }
            .shareIn(applicationScope, SharingStarted.WhileSubscribed())
            .logDiffForTable(tableBuffer, TABLE_PREFIX_LINEAR, TABLE_COLUMN_MIN, null)
            .stateIn(applicationScope, SharingStarted.WhileSubscribed(), LinearBrightness(0f))

    override val maxLinearBrightness =
    override val maxLinearBrightness: SharedFlow<LinearBrightness> =
        brightnessInfo
            .filterNotNull()
            .map { LinearBrightness(it.brightnessMaximum) }
            .shareIn(applicationScope, SharingStarted.WhileSubscribed())
            .logDiffForTable(tableBuffer, TABLE_PREFIX_LINEAR, TABLE_COLUMN_MAX, null)
            .stateIn(applicationScope, SharingStarted.WhileSubscribed(), LinearBrightness(1f))

    override suspend fun getMinMaxLinearBrightness(): Pair<LinearBrightness, LinearBrightness> {
        val brightnessInfo = brightnessInfo.value ?: brightnessInfoValue()
@@ -166,7 +177,8 @@ constructor(
        brightnessInfo
            .filterNotNull()
            .map { LinearBrightness(it.brightness) }
            .shareIn(applicationScope, SharingStarted.WhileSubscribed())
            .logDiffForTable(tableBuffer, TABLE_PREFIX_LINEAR, TABLE_COLUMN_BRIGHTNESS, null)
            .stateIn(applicationScope, SharingStarted.WhileSubscribed(), LinearBrightness(0f))

    override fun setTemporaryBrightness(value: LinearBrightness) {
        apiQueue.trySend(SetBrightnessMethod.Temporary(value))
@@ -183,4 +195,21 @@ constructor(
        @JvmInline
        value class Permanent(override val value: LinearBrightness) : SetBrightnessMethod
    }

    private fun logBrightnessChange(permanent: Boolean, value: Float) {
        logBuffer.log(
            LOG_BUFFER_BRIGHTNESS_CHANGE_TAG,
            if (permanent) LogLevel.DEBUG else LogLevel.VERBOSE,
            { str1 = value.formatBrightness() },
            { "Change requested: $str1" }
        )
    }

    private companion object {
        const val TABLE_COLUMN_BRIGHTNESS = "brightness"
        const val TABLE_COLUMN_MIN = "min"
        const val TABLE_COLUMN_MAX = "max"
        const val TABLE_PREFIX_LINEAR = "linear"
        const val LOG_BUFFER_BRIGHTNESS_CHANGE_TAG = "BrightnessChange"
    }
}
Loading