From 3551614bafae5e9a2401dd2e4ee31df0aac3eb81 Mon Sep 17 00:00:00 2001 From: Jacky Wang Date: Wed, 6 Nov 2024 11:43:42 +0800 Subject: [PATCH] Implement RestrictedPreferenceHelperProvider for restricted preference Bug: 377600992 Flag: EXEMPT library Test: Manual Change-Id: I73e60ea7a392aac96e701b9d7f0ff617e449f3b2 --- .../android/settings/RestrictedListPreference.java | 11 ++++++++++- .../datausage/UnrestrictedDataAccessPreference.java | 8 +++++++- .../settings/notification/app/BubblePreference.java | 9 ++++++++- .../settings/widget/RestrictedAppPreference.java | 9 ++++++++- .../settings/widget/SettingsMainSwitchPreference.java | 9 ++++++++- 5 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/RestrictedListPreference.java b/src/com/android/settings/RestrictedListPreference.java index d75f1b8fae9..d5bc3418627 100644 --- a/src/com/android/settings/RestrictedListPreference.java +++ b/src/com/android/settings/RestrictedListPreference.java @@ -33,6 +33,7 @@ import android.widget.CheckedTextView; import android.widget.ListAdapter; import android.widget.ListView; +import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog.Builder; import androidx.preference.ListPreferenceDialogFragmentCompat; @@ -40,11 +41,14 @@ import androidx.preference.PreferenceViewHolder; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedPreferenceHelper; +import com.android.settingslib.RestrictedPreferenceHelperProvider; import java.util.ArrayList; import java.util.List; -public class RestrictedListPreference extends CustomListPreference { +public class RestrictedListPreference extends CustomListPreference implements + RestrictedPreferenceHelperProvider { + private final RestrictedPreferenceHelper mHelper; private final List mRestrictedItems = new ArrayList<>(); private boolean mRequiresActiveUnlockedProfile = false; @@ -61,6 +65,11 @@ public class RestrictedListPreference extends CustomListPreference { mHelper = new RestrictedPreferenceHelper(context, this, attrs); } + @Override + public @NonNull RestrictedPreferenceHelper getRestrictedPreferenceHelper() { + return mHelper; + } + @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); diff --git a/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java b/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java index b3e66a9ce06..bb84c1804e9 100644 --- a/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java +++ b/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java @@ -30,6 +30,7 @@ import com.android.settings.applications.appinfo.AppInfoDashboardFragment; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import com.android.settingslib.RestrictedPreferenceHelper; +import com.android.settingslib.RestrictedPreferenceHelperProvider; import com.android.settingslib.applications.AppUtils; import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.applications.ApplicationsState.AppEntry; @@ -37,7 +38,7 @@ import com.android.settingslib.utils.ThreadUtils; import com.android.settingslib.widget.AppSwitchPreference; public class UnrestrictedDataAccessPreference extends AppSwitchPreference implements - DataSaverBackend.Listener { + DataSaverBackend.Listener, RestrictedPreferenceHelperProvider { private static final String ECM_SETTING_IDENTIFIER = "android:unrestricted_data_access"; private final ApplicationsState mApplicationsState; @@ -78,6 +79,11 @@ public class UnrestrictedDataAccessPreference extends AppSwitchPreference implem return entry.info.packageName + "|" + entry.info.uid; } + @Override + public @NonNull RestrictedPreferenceHelper getRestrictedPreferenceHelper() { + return mHelper; + } + @Override public void onAttached() { super.onAttached(); diff --git a/src/com/android/settings/notification/app/BubblePreference.java b/src/com/android/settings/notification/app/BubblePreference.java index 17deef9e6f0..73f4582034b 100644 --- a/src/com/android/settings/notification/app/BubblePreference.java +++ b/src/com/android/settings/notification/app/BubblePreference.java @@ -33,11 +33,13 @@ import androidx.preference.PreferenceViewHolder; import com.android.settings.R; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedPreferenceHelper; +import com.android.settingslib.RestrictedPreferenceHelperProvider; /** * A tri-state preference allowing a user to specify what gets to bubble. */ -public class BubblePreference extends Preference implements RadioGroup.OnCheckedChangeListener { +public class BubblePreference extends Preference implements RadioGroup.OnCheckedChangeListener, + RestrictedPreferenceHelperProvider { RestrictedPreferenceHelper mHelper; private int mSelectedPreference; @@ -64,6 +66,11 @@ public class BubblePreference extends Preference implements RadioGroup.OnChecked setLayoutResource(R.layout.bubble_preference); } + @Override + public @NonNull RestrictedPreferenceHelper getRestrictedPreferenceHelper() { + return mHelper; + } + public void setSelectedPreference(int preference) { mSelectedPreference = preference; notifyChanged(); diff --git a/src/com/android/settings/widget/RestrictedAppPreference.java b/src/com/android/settings/widget/RestrictedAppPreference.java index c76a5de4535..86552422467 100644 --- a/src/com/android/settings/widget/RestrictedAppPreference.java +++ b/src/com/android/settings/widget/RestrictedAppPreference.java @@ -27,6 +27,7 @@ import androidx.preference.PreferenceViewHolder; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedPreferenceHelper; +import com.android.settingslib.RestrictedPreferenceHelperProvider; import com.android.settingslib.widget.AppPreference; /** @@ -34,7 +35,8 @@ import com.android.settingslib.widget.AppPreference; * {@link com.android.settingslib.RestrictedPreferenceHelper}. * Used to show policy transparency on {@link AppPreference}. */ -public class RestrictedAppPreference extends AppPreference { +public class RestrictedAppPreference extends AppPreference implements + RestrictedPreferenceHelperProvider { private RestrictedPreferenceHelper mHelper; private String userRestriction; @@ -58,6 +60,11 @@ public class RestrictedAppPreference extends AppPreference { this.userRestriction = userRestriction; } + @Override + public @NonNull RestrictedPreferenceHelper getRestrictedPreferenceHelper() { + return mHelper; + } + @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); diff --git a/src/com/android/settings/widget/SettingsMainSwitchPreference.java b/src/com/android/settings/widget/SettingsMainSwitchPreference.java index 9f6d787e841..17d5fc88915 100644 --- a/src/com/android/settings/widget/SettingsMainSwitchPreference.java +++ b/src/com/android/settings/widget/SettingsMainSwitchPreference.java @@ -23,12 +23,14 @@ import android.util.AttributeSet; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; +import androidx.annotation.NonNull; import androidx.preference.PreferenceViewHolder; import androidx.preference.TwoStatePreference; import com.android.settings.R; import com.android.settings.widget.SettingsMainSwitchBar.OnBeforeCheckedChangeListener; import com.android.settingslib.RestrictedPreferenceHelper; +import com.android.settingslib.RestrictedPreferenceHelperProvider; import com.android.settingslib.core.instrumentation.SettingsJankMonitor; import java.util.ArrayList; @@ -40,7 +42,7 @@ import java.util.List; * to enable or disable the preferences on the page. */ public class SettingsMainSwitchPreference extends TwoStatePreference implements - OnCheckedChangeListener { + OnCheckedChangeListener, RestrictedPreferenceHelperProvider { private final List mBeforeCheckedChangeListeners = new ArrayList<>(); @@ -71,6 +73,11 @@ public class SettingsMainSwitchPreference extends TwoStatePreference implements init(context, attrs); } + @Override + public @NonNull RestrictedPreferenceHelper getRestrictedPreferenceHelper() { + return mRestrictedHelper; + } + @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder);