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

Commit 248ce9be 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] Allow specify default PreferenceBindingFactory
  Implement RestrictedPreferenceHelperProvider for RestrictedSliderPreference
  [Catalyst] Introduce RestrictedPreferenceHelperProvider
parents 4af2e065 29b84978
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -115,7 +115,7 @@ interface PreferenceScreenCreator : PreferenceScreenMetadata, PreferenceScreenPr
    fun isFlagEnabled(context: Context): Boolean = true

    val preferenceBindingFactory: PreferenceBindingFactory
        get() = DefaultPreferenceBindingFactory
        get() = PreferenceBindingFactory.defaultFactory

    override fun createPreferenceScreen(factory: PreferenceScreenFactory) =
        factory.getOrCreatePreferenceScreen().apply {
+8 −2
Original line number Diff line number Diff line
@@ -45,10 +45,15 @@ interface PreferenceBindingFactory {

    /** Returns the [PreferenceBinding] associated with the [PreferenceMetadata]. */
    fun getPreferenceBinding(metadata: PreferenceMetadata): PreferenceBinding?

    companion object {
        /** Default preference binding factory. */
        @JvmStatic var defaultFactory: PreferenceBindingFactory = DefaultPreferenceBindingFactory()
    }
}

/** Default [PreferenceBindingFactory]. */
object DefaultPreferenceBindingFactory : PreferenceBindingFactory {
open class DefaultPreferenceBindingFactory : PreferenceBindingFactory {

    override fun getPreferenceBinding(metadata: PreferenceMetadata) =
        metadata as? PreferenceBinding
@@ -66,5 +71,6 @@ class KeyedPreferenceBindingFactory(private val bindings: Map<String, Preference
    PreferenceBindingFactory {

    override fun getPreferenceBinding(metadata: PreferenceMetadata) =
        bindings[metadata.key] ?: DefaultPreferenceBindingFactory.getPreferenceBinding(metadata)
        bindings[metadata.key]
            ?: PreferenceBindingFactory.defaultFactory.getPreferenceBinding(metadata)
}
+1 −1
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ import com.android.settingslib.metadata.PreferenceMetadata
/** Creates [Preference] widget and binds with metadata. */
@VisibleForTesting
fun <P : Preference> PreferenceMetadata.createAndBindWidget(context: Context): P {
    val binding = DefaultPreferenceBindingFactory.getPreferenceBinding(this)
    val binding = PreferenceBindingFactory.defaultFactory.getPreferenceBinding(this)!!
    return (binding.createWidget(context) as P).also {
        if (this is PersistentPreference<*>) {
            storage(context)?.let { keyValueStore ->
+8 −2
Original line number Diff line number Diff line
@@ -22,14 +22,20 @@ import androidx.annotation.NonNull;
import androidx.preference.DropDownPreference;
import androidx.preference.PreferenceViewHolder;

public class RestrictedDropDownPreference extends DropDownPreference {
    RestrictedPreferenceHelper mHelper;
public class RestrictedDropDownPreference extends DropDownPreference implements
        RestrictedPreferenceHelperProvider {
    private final RestrictedPreferenceHelper mHelper;

    public RestrictedDropDownPreference(@NonNull Context context) {
        super(context);
        mHelper = new RestrictedPreferenceHelper(context, this, null);
    }

    @Override
    public @NonNull RestrictedPreferenceHelper getRestrictedPreferenceHelper() {
        return mHelper;
    }

    /**
     * Checks if the given setting is subject to Enhanced Confirmation Mode restrictions for this
     * package. Marks the preference as disabled if so.
+8 −1
Original line number Diff line number Diff line
@@ -34,7 +34,9 @@ import com.android.settingslib.widget.TwoTargetPreference;
 * Preference class that supports being disabled by a user restriction
 * set by a device admin.
 */
public class RestrictedPreference extends TwoTargetPreference {
public class RestrictedPreference extends TwoTargetPreference implements
        RestrictedPreferenceHelperProvider {

    RestrictedPreferenceHelper mHelper;

    public RestrictedPreference(Context context, AttributeSet attrs,
@@ -66,6 +68,11 @@ public class RestrictedPreference extends TwoTargetPreference {
                android.R.attr.preferenceStyle), 0, packageName, uid);
    }

    @Override
    public @NonNull RestrictedPreferenceHelper getRestrictedPreferenceHelper() {
        return mHelper;
    }

    @Override
    public void onBindViewHolder(PreferenceViewHolder holder) {
        super.onBindViewHolder(holder);
Loading