[Catalyst] Use hybrid mode for display screen

Bug: 368359268
Flag: com.android.settings.flags.catalyst_display_settings_screen
Test: atest DisplayScreenTest
Change-Id: I5eed12ee5c596bee4c21c6e3aa9f3db0e0227bff
This commit is contained in:
Jacky Wang
2024-10-12 16:16:44 +08:00
parent 20558e21bd
commit 92ce82809e
2 changed files with 29 additions and 7 deletions

View File

@@ -34,6 +34,8 @@ class DisplayScreen : PreferenceScreenCreator, PreferenceAvailabilityProvider {
override fun isFlagEnabled(context: Context) = Flags.catalystDisplaySettingsScreen() override fun isFlagEnabled(context: Context) = Flags.catalystDisplaySettingsScreen()
override fun hasCompleteHierarchy() = false
override fun fragmentClass() = DisplaySettings::class.java override fun fragmentClass() = DisplaySettings::class.java
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {} override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}

View File

@@ -17,24 +17,32 @@ package com.android.settings.display
import android.content.ContextWrapper import android.content.ContextWrapper
import android.content.res.Resources import android.content.res.Resources
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4 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 com.google.common.truth.Truth.assertThat
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyInt import org.mockito.ArgumentMatchers.anyInt
import org.mockito.kotlin.any
import org.mockito.kotlin.doReturn import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock import org.mockito.kotlin.mock
import org.mockito.kotlin.stub import org.mockito.kotlin.stub
@RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class)
class DisplayScreenTest { class DisplayScreenTest : CatalystScreenTestCase() {
val preferenceScreenCreator = DisplayScreen()
override val preferenceScreenCreator = DisplayScreen()
override val flagName: String
get() = Flags.FLAG_CATALYST_DISPLAY_SETTINGS_SCREEN
private val mockResources = mock<Resources>() private val mockResources = mock<Resources>()
private val context = private val contextWrapper =
object : ContextWrapper(ApplicationProvider.getApplicationContext()) { object : ContextWrapper(context) {
override fun getResources(): Resources = mockResources override fun getResources(): Resources = mockResources
} }
@@ -47,13 +55,25 @@ class DisplayScreenTest {
fun isAvailable_configTrue_shouldReturnTrue() { fun isAvailable_configTrue_shouldReturnTrue() {
mockResources.stub { on { getBoolean(anyInt()) } doReturn true } mockResources.stub { on { getBoolean(anyInt()) } doReturn true }
assertThat(preferenceScreenCreator.isAvailable(context)).isTrue() assertThat(preferenceScreenCreator.isAvailable(contextWrapper)).isTrue()
} }
@Test @Test
fun isAvailable_configFalse_shouldReturnFalse() { fun isAvailable_configFalse_shouldReturnFalse() {
mockResources.stub { on { getBoolean(anyInt()) } doReturn false } 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()
} }
} }