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

Commit 92ce8280 authored by Jacky Wang's avatar Jacky Wang
Browse files

[Catalyst] Use hybrid mode for display screen

Bug: 368359268
Flag: com.android.settings.flags.catalyst_display_settings_screen
Test: atest DisplayScreenTest
Change-Id: I5eed12ee5c596bee4c21c6e3aa9f3db0e0227bff
parent 20558e21
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -34,6 +34,8 @@ class DisplayScreen : PreferenceScreenCreator, PreferenceAvailabilityProvider {

    override fun isFlagEnabled(context: Context) = Flags.catalystDisplaySettingsScreen()

    override fun hasCompleteHierarchy() = false

    override fun fragmentClass() = DisplaySettings::class.java

    override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+27 −7
Original line number Diff line number Diff line
@@ -17,24 +17,32 @@ package com.android.settings.display

import android.content.ContextWrapper
import android.content.res.Resources
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.internal.widget.LockPatternUtils
import com.android.settings.flags.Flags
import com.android.settings.testutils.FakeFeatureFactory
import com.android.settingslib.preference.CatalystScreenTestCase
import com.google.common.truth.Truth.assertThat
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.kotlin.any
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
import org.mockito.kotlin.stub

@RunWith(AndroidJUnit4::class)
class DisplayScreenTest {
    val preferenceScreenCreator = DisplayScreen()
class DisplayScreenTest : CatalystScreenTestCase() {

    override val preferenceScreenCreator = DisplayScreen()

    override val flagName: String
        get() = Flags.FLAG_CATALYST_DISPLAY_SETTINGS_SCREEN

    private val mockResources = mock<Resources>()

    private val context =
        object : ContextWrapper(ApplicationProvider.getApplicationContext()) {
    private val contextWrapper =
        object : ContextWrapper(context) {
            override fun getResources(): Resources = mockResources
        }

@@ -47,13 +55,25 @@ class DisplayScreenTest {
    fun isAvailable_configTrue_shouldReturnTrue() {
        mockResources.stub { on { getBoolean(anyInt()) } doReturn true }

        assertThat(preferenceScreenCreator.isAvailable(context)).isTrue()
        assertThat(preferenceScreenCreator.isAvailable(contextWrapper)).isTrue()
    }

    @Test
    fun isAvailable_configFalse_shouldReturnFalse() {
        mockResources.stub { on { getBoolean(anyInt()) } doReturn false }

        assertThat(preferenceScreenCreator.isAvailable(context)).isFalse()
        assertThat(preferenceScreenCreator.isAvailable(contextWrapper)).isFalse()
    }

    override fun migration() {
        // avoid UnsupportedOperationException when getDisplay from context
        System.setProperty("robolectric.createActivityContexts", "true")

        val lockPatternUtils = mock<LockPatternUtils> { on { isSecure(anyInt()) } doReturn true }
        FakeFeatureFactory.setupForTest().securityFeatureProvider.stub {
            on { getLockPatternUtils(any()) } doReturn lockPatternUtils
        }

        super.migration()
    }
}