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

Commit cdde529a authored by Oleg Petšjonkin's avatar Oleg Petšjonkin Committed by Android (Google) Code Review
Browse files

Merge "ColorFade draw should not be called after PowerState stopped" into main

parents 680ef6ba d2a40270
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -333,6 +333,8 @@ final class DisplayPowerState {
    public void stop() {
        mStopped = true;
        mPhotonicModulator.interrupt();
        mColorFadePrepared = false;
        mColorFadeReady = true;
        if (mColorFade != null) {
            mAsyncDestroyExecutor.execute(mColorFade::destroy);
        }
@@ -419,7 +421,8 @@ final class DisplayPowerState {
        }
    };

    private final Runnable mColorFadeDrawRunnable = new Runnable() {
    @VisibleForTesting
    final Runnable mColorFadeDrawRunnable = new Runnable() {
        @Override
        public void run() {
            mColorFadeDrawPending = false;
+40 −0
Original line number Diff line number Diff line
@@ -16,16 +16,24 @@

package com.android.server.display

import android.content.Context
import android.os.Looper
import android.view.Display
import androidx.test.filters.SmallTest
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.mockito.ArgumentMatchers.anyFloat
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.ArgumentMatchers.eq
import org.mockito.junit.MockitoJUnit

import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.clearInvocations
import org.mockito.kotlin.mock
import org.mockito.kotlin.never
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
import java.util.concurrent.Executor

@SmallTest
@@ -39,11 +47,16 @@ class DisplayPowerStateTest {
    private val mockBlanker = mock<DisplayBlanker>()
    private val mockColorFade = mock<ColorFade>()
    private val mockExecutor = mock<Executor>()
    private val mockContext = mock<Context>()

    @Before
    fun setUp() {
        if (Looper.myLooper() == null) {
            Looper.prepare()
        }
        displayPowerState = DisplayPowerState(mockBlanker, mockColorFade, 123, Display.STATE_ON,
                mockExecutor)
        whenever(mockColorFade.prepare(eq(mockContext), anyInt())).thenReturn(true)
    }

    @Test
@@ -56,4 +69,31 @@ class DisplayPowerStateTest {

        verify(mockColorFade).destroy()
    }

    @Test
    fun `GIVEN not prepared WHEN draw runnable is called THEN colorFade not drawn`() {
        displayPowerState.mColorFadeDrawRunnable.run()

        verify(mockColorFade, never()).draw(anyFloat())
    }
    @Test
    fun `GIVEN prepared WHEN draw runnable is called THEN colorFade is drawn`() {
        displayPowerState.prepareColorFade(mockContext, ColorFade.MODE_FADE)
        clearInvocations(mockColorFade)

        displayPowerState.mColorFadeDrawRunnable.run()

        verify(mockColorFade).draw(anyFloat())
    }

    @Test
    fun `GIVEN prepared AND stopped WHEN draw runnable is called THEN colorFade is not drawn`() {
        displayPowerState.prepareColorFade(mockContext, ColorFade.MODE_FADE)
        clearInvocations(mockColorFade)
        displayPowerState.stop()

        displayPowerState.mColorFadeDrawRunnable.run()

        verify(mockColorFade, never()).draw(anyFloat())
    }
}
 No newline at end of file