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

Commit 4201898c authored by Jacky Wang's avatar Jacky Wang
Browse files

[Catalyst] Add PreferenceScreenCreator.launchFragmentScenario

Simplify the test for catalyst integration.

Bug: 370394101
Flag: TEST_ONLY
Test: atest
Change-Id: I3afe6fa3dff500cb77d777fefa7254c37b1f6d22
parent fe584a5d
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -17,9 +17,14 @@
package com.android.settingslib.preference

import android.content.Context
import android.os.Bundle
import androidx.annotation.VisibleForTesting
import androidx.fragment.app.testing.FragmentScenario
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.PreferenceScreen
import com.android.settingslib.metadata.EXTRA_BINDING_SCREEN_ARGS
import com.android.settingslib.metadata.EXTRA_BINDING_SCREEN_KEY
import com.android.settingslib.metadata.PersistentPreference
import com.android.settingslib.metadata.PreferenceMetadata
import com.android.settingslib.metadata.PreferenceScreenMetadata
@@ -46,3 +51,14 @@ fun <P : Preference> PreferenceMetadata.createAndBindWidget(
        binding.bind(it, this)
    }
}

/** Launches fragment for given [PreferenceScreenCreator]. */
@Suppress("UNCHECKED_CAST")
fun PreferenceScreenCreator.launchFragmentScenario() =
    FragmentScenario.launchInContainer(
        fragmentClass() as Class<out PreferenceFragmentCompat>,
        Bundle(2).also {
            it.putString(EXTRA_BINDING_SCREEN_KEY, key)
            it.putBundle(EXTRA_BINDING_SCREEN_ARGS, arguments)
        },
    )