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

Commit 084ec575 authored by Jacky Wang's avatar Jacky Wang
Browse files

[Catalyst] Introduce RestrictedPreferenceHelperProvider

Bug: 377600992
Flag: EXEMPT library
Test: Manual
Change-Id: I7c1c1eac26b2cf13940048efeeee77ba6d50741a
parent 7ecd5e05
Loading
Loading
Loading
Loading
+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);
+24 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settingslib

/** Provider of [RestrictedPreferenceHelper]. */
interface RestrictedPreferenceHelperProvider {

    /** Returns the [RestrictedPreferenceHelper] applied to the preference. */
    fun getRestrictedPreferenceHelper(): RestrictedPreferenceHelper
}
+8 −4
Original line number Diff line number Diff line
@@ -32,8 +32,9 @@ import com.android.settingslib.widget.SelectorWithWidgetPreference;
/**
 * Selector with widget preference that can be disabled by a device admin using a user restriction.
 */
public class RestrictedSelectorWithWidgetPreference extends SelectorWithWidgetPreference {
    private RestrictedPreferenceHelper mHelper;
public class RestrictedSelectorWithWidgetPreference extends SelectorWithWidgetPreference implements
        RestrictedPreferenceHelperProvider {
    private final RestrictedPreferenceHelper mHelper;

    /**
     * Perform inflation from XML and apply a class-specific base style.
@@ -82,8 +83,11 @@ public class RestrictedSelectorWithWidgetPreference extends SelectorWithWidgetPr
     */
    public RestrictedSelectorWithWidgetPreference(@NonNull Context context) {
        this(context, null);
        mHelper =
                new RestrictedPreferenceHelper(context, /* preference= */ this, /* attrs= */ null);
    }

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

    @Override
+8 −2
Original line number Diff line number Diff line
@@ -45,8 +45,9 @@ import androidx.preference.SwitchPreferenceCompat;
 * Version of SwitchPreferenceCompat that can be disabled by a device admin
 * using a user restriction.
 */
public class RestrictedSwitchPreference extends SwitchPreferenceCompat {
    RestrictedPreferenceHelper mHelper;
public class RestrictedSwitchPreference extends SwitchPreferenceCompat implements
        RestrictedPreferenceHelperProvider {
    private final RestrictedPreferenceHelper mHelper;
    AppOpsManager mAppOpsManager;
    boolean mUseAdditionalSummary = false;
    CharSequence mRestrictedSwitchSummary;
@@ -98,6 +99,11 @@ public class RestrictedSwitchPreference extends SwitchPreferenceCompat {
        this(context, null);
    }

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

    @VisibleForTesting
    public void setAppOps(AppOpsManager appOps) {
        mAppOpsManager = appOps;
Loading