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

Commit ded43d4e authored by Lucas Silva's avatar Lucas Silva Committed by Android (Google) Code Review
Browse files

Merge "Increasing screen brightness on home panel dream" into main

parents 85b089eb a3ff6961
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@ import com.android.systemui.log.logcatLogBuffer
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.wakelock.WakeLockFake
import com.google.common.truth.Truth.assertThat
import java.util.Optional
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -44,6 +46,9 @@ class HomeControlsDreamServiceTest : SysuiTestCase() {
    private val kosmos = testKosmos()
    private val testScope = kosmos.testScope

    private lateinit var fakeWakeLockBuilder: WakeLockFake.Builder
    private lateinit var fakeWakeLock: WakeLockFake

    @Mock private lateinit var taskFragmentComponentFactory: TaskFragmentComponent.Factory
    @Mock private lateinit var taskFragmentComponent: TaskFragmentComponent
    @Mock private lateinit var activity: Activity
@@ -57,6 +62,10 @@ class HomeControlsDreamServiceTest : SysuiTestCase() {
            whenever(taskFragmentComponentFactory.create(any(), any(), any(), any()))
                .thenReturn(taskFragmentComponent)

            fakeWakeLock = WakeLockFake()
            fakeWakeLockBuilder = WakeLockFake.Builder(context)
            fakeWakeLockBuilder.setWakeLock(fakeWakeLock)

            whenever(controlsComponent.getControlsListingController())
                .thenReturn(Optional.of(controlsListingController))

@@ -87,12 +96,29 @@ class HomeControlsDreamServiceTest : SysuiTestCase() {
            verify(taskFragmentComponentFactory, never()).create(any(), any(), any(), any())
        }

    @Test
    fun testAttachWindow_wakeLockAcquired() =
        testScope.runTest {
            underTest.onAttachedToWindow()
            assertThat(fakeWakeLock.isHeld).isTrue()
        }
    @Test
    fun testDetachWindow_wakeLockCanBeReleased() =
        testScope.runTest {
            underTest.onAttachedToWindow()
            assertThat(fakeWakeLock.isHeld).isTrue()

            underTest.onDetachedFromWindow()
            assertThat(fakeWakeLock.isHeld).isFalse()
        }

    private fun buildService(activityProvider: DreamActivityProvider): HomeControlsDreamService =
        with(kosmos) {
            return HomeControlsDreamService(
                controlsSettingsRepository = FakeControlsSettingsRepository(),
                taskFragmentFactory = taskFragmentComponentFactory,
                homeControlsComponentInteractor = homeControlsComponentInteractor,
                fakeWakeLockBuilder,
                dreamActivityProvider = activityProvider,
                bgDispatcher = testDispatcher,
                logBuffer = logcatLogBuffer("HomeControlsDreamServiceTest")
+17 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.dreams.homecontrols

import android.content.Intent
import android.os.PowerManager
import android.service.controls.ControlsProviderService
import android.service.dreams.DreamService
import android.window.TaskFragmentInfo
@@ -27,6 +28,8 @@ import com.android.systemui.dreams.homecontrols.domain.interactor.HomeControlsCo
import com.android.systemui.dreams.homecontrols.domain.interactor.HomeControlsComponentInteractor.Companion.MAX_UPDATE_CORRELATION_DELAY
import com.android.systemui.log.LogBuffer
import com.android.systemui.log.dagger.DreamLog
import com.android.systemui.util.wakelock.WakeLock
import com.android.systemui.util.wakelock.WakeLock.Builder.NO_TIMEOUT
import javax.inject.Inject
import kotlin.time.Duration.Companion.seconds
import kotlinx.coroutines.CoroutineDispatcher
@@ -42,14 +45,23 @@ constructor(
    private val controlsSettingsRepository: ControlsSettingsRepository,
    private val taskFragmentFactory: TaskFragmentComponent.Factory,
    private val homeControlsComponentInteractor: HomeControlsComponentInteractor,
    private val wakeLockBuilder: WakeLock.Builder,
    private val dreamActivityProvider: DreamActivityProvider,
    @Background private val bgDispatcher: CoroutineDispatcher,
    @DreamLog logBuffer: LogBuffer
) : DreamService() {

    private val serviceJob = SupervisorJob()
    private val serviceScope = CoroutineScope(bgDispatcher + serviceJob)
    private val logger = DreamLogger(logBuffer, "HomeControlsDreamService")
    private val logger = DreamLogger(logBuffer, TAG)
    private lateinit var taskFragmentComponent: TaskFragmentComponent
    private val wakeLock: WakeLock by lazy {
        wakeLockBuilder
            .setMaxTimeout(NO_TIMEOUT)
            .setTag(TAG)
            .setLevelsAndFlags(PowerManager.SCREEN_BRIGHT_WAKE_LOCK)
            .build()
    }

    override fun onAttachedToWindow() {
        super.onAttachedToWindow()
@@ -72,6 +84,8 @@ constructor(
                    hide = { finish() }
                )
                .apply { createTaskFragment() }

        wakeLock.acquire(TAG)
    }

    private fun onTaskFragmentInfoChanged(taskFragmentInfo: TaskFragmentInfo) {
@@ -100,6 +114,7 @@ constructor(

    override fun onDetachedFromWindow() {
        super.onDetachedFromWindow()
        wakeLock.release(TAG)
        taskFragmentComponent.destroy()
        serviceScope.launch {
            delay(CANCELLATION_DELAY_AFTER_DETACHED)
@@ -115,5 +130,6 @@ constructor(
         * complete.
         */
        val CANCELLATION_DELAY_AFTER_DETACHED = 5.seconds
        const val TAG = "HomeControlsDreamService"
    }
}
+6 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.util.wakelock

import android.os.PowerManager
import android.util.Log
import com.android.systemui.util.wakelock.WakeLock.Builder.NO_TIMEOUT
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.atomic.AtomicInteger

@@ -36,8 +37,12 @@ class ClientTrackingWakeLock(
    override fun acquire(why: String) {
        val count = activeClients.computeIfAbsent(why) { _ -> AtomicInteger(0) }.incrementAndGet()
        logger?.logAcquire(pmWakeLock, why, count)
        if (maxTimeout == NO_TIMEOUT) {
            pmWakeLock.acquire()
        } else {
            pmWakeLock.acquire(maxTimeout)
        }
    }

    override fun release(why: String) {
        val count = activeClients[why]?.decrementAndGet() ?: -1
+6 −1
Original line number Diff line number Diff line
@@ -130,8 +130,12 @@ public interface WakeLock {
                if (logger != null) {
                    logger.logAcquire(inner, why, count);
                }
                if (maxTimeout == Builder.NO_TIMEOUT) {
                    inner.acquire();
                } else {
                    inner.acquire(maxTimeout);
                }
            }

            /** @see PowerManager.WakeLock#release() */
            public void release(String why) {
@@ -169,6 +173,7 @@ public interface WakeLock {
     * An injectable Builder that wraps {@link #createPartial(Context, String, long)}.
     */
    class Builder {
        public static final long NO_TIMEOUT = -1;
        private final Context mContext;
        private final WakeLockLogger mLogger;
        private String mTag;