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

Commit 31782750 authored by Jacky Wang's avatar Jacky Wang Committed by Android (Google) Code Review
Browse files

Merge changes from topic "catalyst" into main

* changes:
  [Catalyst] Support hybrid mode screen test
  [Catalyst] Support hybrid mode
parents ec8b32dc 0ba67b65
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -41,6 +41,9 @@ open class PreferenceFragment :
        createPreferenceScreen(PreferenceScreenFactory(this))

    override fun createPreferenceScreen(factory: PreferenceScreenFactory): PreferenceScreen? {
        preferenceScreenBindingHelper?.close()
        preferenceScreenBindingHelper = null

        val context = factory.context
        fun createPreferenceScreenFromResource() =
            factory.inflate(getPreferenceScreenResId(context))?.also {
@@ -86,9 +89,13 @@ open class PreferenceFragment :

    override fun onDestroy() {
        preferenceScreenBindingHelper?.close()
        preferenceScreenBindingHelper = null
        super.onDestroy()
    }

    protected fun getPreferenceKeysInHierarchy(): Set<String> =
        preferenceScreenBindingHelper?.getPreferences()?.map { it.key }?.toSet() ?: setOf()

    companion object {
        private const val TAG = "PreferenceFragment"
    }
+3 −1
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ class PreferenceScreenBindingHelper(
    context: Context,
    private val preferenceBindingFactory: PreferenceBindingFactory,
    private val preferenceScreen: PreferenceScreen,
    preferenceHierarchy: PreferenceHierarchy,
    private val preferenceHierarchy: PreferenceHierarchy,
) : KeyedDataObservable<String>(), AutoCloseable {

    private val handler = Handler(Looper.getMainLooper())
@@ -133,6 +133,8 @@ class PreferenceScreenBindingHelper(
        }
    }

    fun getPreferences() = preferenceHierarchy.getAllPreferences()

    override fun close() {
        removeObserver(preferenceObserver)
        val context = preferenceScreen.context
+4 −4
Original line number Diff line number Diff line
@@ -49,15 +49,15 @@ abstract class CatalystScreenTestCase {
     * catalyst screen (flag is enabled).
     */
    @Test
    fun migration() {
    open fun migration() {
        enableCatalystScreen()
        assertThat(preferenceScreenCreator.isFlagEnabled(context)).isTrue()
        val catalystScreen = stringifyPreferenceScreen()
        val catalystScreen = dumpPreferenceScreen()
        Log.i("Catalyst", catalystScreen)

        disableCatalystScreen()
        assertThat(preferenceScreenCreator.isFlagEnabled(context)).isFalse()
        val legacyScreen = stringifyPreferenceScreen()
        val legacyScreen = dumpPreferenceScreen()

        assertThat(catalystScreen).isEqualTo(legacyScreen)
    }
@@ -82,7 +82,7 @@ abstract class CatalystScreenTestCase {
        setFlagsRule.disableFlags(flagName)
    }

    private fun stringifyPreferenceScreen(): String {
    private fun dumpPreferenceScreen(): String {
        @Suppress("UNCHECKED_CAST")
        val clazz = preferenceScreenCreator.fragmentClass() as Class<PreferenceFragmentCompat>
        val builder = StringBuilder()