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

Commit 6cdf9112 authored by Lucas Dupin's avatar Lucas Dupin Committed by Android (Google) Code Review
Browse files

Merge "Testing for Region Sampling Instance"

parents 57476de6 55ea2b62
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -128,6 +128,14 @@ public class RegionSamplingHelper implements View.OnAttachStateChangeListener,
        mCallback = samplingCallback;
    }

    /**
     * Make callback accessible
     */
    @VisibleForTesting
    public SamplingCallback getCallback() {
        return mCallback;
    }

    private void onDraw() {
        if (mWaitingOnDraw) {
            mWaitingOnDraw = false;
+14 −10
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.systemui.shared.regionsampling

import android.graphics.Rect
import android.view.View
import androidx.annotation.VisibleForTesting
import com.android.systemui.plugins.RegionDarkness
import com.android.systemui.shared.navigationbar.RegionSamplingHelper
import com.android.systemui.shared.navigationbar.RegionSamplingHelper.SamplingCallback
@@ -26,7 +27,7 @@ import java.util.concurrent.Executor
/**
 * Class for instance of RegionSamplingHelper
 */
class RegionSamplingInstance(
open class RegionSamplingInstance(
        sampledView: View?,
        mainExecutor: Executor?,
        bgExecutor: Executor?,
@@ -35,7 +36,7 @@ class RegionSamplingInstance(
) {
    private var isDark = RegionDarkness.DEFAULT
    private var samplingBounds = Rect()
    private var regionSampler: RegionSamplingHelper? = null
    @VisibleForTesting var regionSampler: RegionSamplingHelper? = null

    /**
     * Interface for method to be passed into RegionSamplingHelper
@@ -48,6 +49,16 @@ class RegionSamplingInstance(
        fun updateColors()
    }

    @VisibleForTesting
    open fun createRegionSamplingHelper(
            sampledView: View,
            callback: SamplingCallback,
            mainExecutor: Executor?,
            bgExecutor: Executor?
    ): RegionSamplingHelper {
        return RegionSamplingHelper(sampledView, callback, mainExecutor, bgExecutor)
    }

    private fun convertToClockDarkness(isRegionDark: Boolean): RegionDarkness {
        return if (isRegionDark) {
            RegionDarkness.DARK
@@ -81,16 +92,9 @@ class RegionSamplingInstance(
        regionSampler?.dump(pw)
    }

    /**
     * Restart
     */
    fun restart(sampledView: View?) {
        regionSampler?.onViewAttachedToWindow(sampledView)
    }

    init {
        if (regionSamplingEnabled && sampledView != null) {
            regionSampler = RegionSamplingHelper(sampledView,
            regionSampler = createRegionSamplingHelper(sampledView,
                    object : SamplingCallback {
                        override fun onRegionDarknessChanged(isRegionDark: Boolean) {
                            isDark = convertToClockDarkness(isRegionDark)
+113 −0
Original line number Diff line number Diff line
package com.android.systemui.shared.regionsampling

import android.graphics.Rect
import android.testing.AndroidTestingRunner
import android.view.View
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.shared.navigationbar.RegionSamplingHelper
import java.io.PrintWriter
import java.util.concurrent.Executor
import org.junit.Assert
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.clearInvocations
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when` as whenever
import org.mockito.junit.MockitoJUnit

@RunWith(AndroidTestingRunner::class)
@SmallTest
class RegionSamplingInstanceTest : SysuiTestCase() {

    @JvmField @Rule
    val mockito = MockitoJUnit.rule()

    @Mock private lateinit var sampledView: View
    @Mock private lateinit var mainExecutor: Executor
    @Mock private lateinit var bgExecutor: Executor
    @Mock private lateinit var regionSampler: RegionSamplingHelper
    @Mock private lateinit var updateFun: RegionSamplingInstance.UpdateColorCallback
    @Mock private lateinit var pw: PrintWriter
    @Mock private lateinit var callback: RegionSamplingHelper.SamplingCallback

    private lateinit var regionSamplingInstance: RegionSamplingInstance

    @Before
    fun setUp() {
        whenever(sampledView.isAttachedToWindow).thenReturn(true)
        whenever(regionSampler.callback).thenReturn(this@RegionSamplingInstanceTest.callback)

        regionSamplingInstance = object : RegionSamplingInstance(
                sampledView,
                mainExecutor,
                bgExecutor,
                true,
                updateFun
        ) {
            override fun createRegionSamplingHelper(
                    sampledView: View,
                    callback: RegionSamplingHelper.SamplingCallback,
                    mainExecutor: Executor?,
                    bgExecutor: Executor?
            ): RegionSamplingHelper {
                return this@RegionSamplingInstanceTest.regionSampler
            }
        }
    }

    @Test
    fun testStartRegionSampler() {
        regionSamplingInstance.startRegionSampler()

        verify(regionSampler).start(Rect(0, 0, 0, 0))
    }

    @Test
    fun testStopRegionSampler() {
        regionSamplingInstance.stopRegionSampler()

        verify(regionSampler).stop()
    }

    @Test
    fun testDump() {
        regionSamplingInstance.dump(pw)

        verify(regionSampler).dump(pw)
    }

    @Test
    fun testUpdateColorCallback() {
        regionSampler.callback.onRegionDarknessChanged(false)
        verify(regionSampler.callback).onRegionDarknessChanged(false)
        clearInvocations(regionSampler.callback)
        regionSampler.callback.onRegionDarknessChanged(true)
        verify(regionSampler.callback).onRegionDarknessChanged(true)
    }

    @Test
    fun testFlagFalse() {
        regionSamplingInstance = object : RegionSamplingInstance(
                sampledView,
                mainExecutor,
                bgExecutor,
                false,
                updateFun
        ) {
            override fun createRegionSamplingHelper(
                    sampledView: View,
                    callback: RegionSamplingHelper.SamplingCallback,
                    mainExecutor: Executor?,
                    bgExecutor: Executor?
            ): RegionSamplingHelper {
                return this@RegionSamplingInstanceTest.regionSampler
            }
        }

        Assert.assertEquals(regionSamplingInstance.regionSampler, null)
    }
}