Make sure that common role behavior applies to all roles.
Specifically this will fix a problem when `DISALLOW_CONFIG_DEFAULT_APPS`
restriction doesn't work when there is no custom UI behavior.
Test: manual
Bug: 286450745
Change-Id: I1a733b145a2cc39069d0a7cf5bcfaf4ad2ab11da
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/DialerRoleUiBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/DialerRoleUiBehavior.java
index 8a5c8bd..e6b8dab 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/DialerRoleUiBehavior.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/DialerRoleUiBehavior.java
@@ -40,9 +40,6 @@
public void prepareApplicationPreferenceAsUser(@NonNull Role role,
@NonNull Preference preference, @NonNull ApplicationInfo applicationInfo,
@NonNull UserHandle user, @NonNull Context context) {
- RoleUiBehavior.super.prepareApplicationPreferenceAsUser(
- role, preference, applicationInfo, user, context);
-
TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
String systemPackageName = telecomManager.getSystemDialerPackage();
if (Objects.equals(applicationInfo.packageName, systemPackageName)) {
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/HomeRoleUiBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/HomeRoleUiBehavior.java
index 36bbd1c..d0e7c0e 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/HomeRoleUiBehavior.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/HomeRoleUiBehavior.java
@@ -56,8 +56,6 @@
@Override
public void preparePreferenceAsUser(@NonNull Role role, @NonNull TwoTargetPreference preference,
@NonNull UserHandle user, @NonNull Context context) {
- RoleUiBehavior.super.preparePreferenceAsUser(role, preference, user, context);
-
TwoTargetPreference.OnSecondTargetClickListener listener = null;
RoleManager roleManager = context.getSystemService(RoleManager.class);
String packageName = CollectionUtils.firstOrNull(roleManager.getRoleHoldersAsUser(
@@ -95,9 +93,6 @@
public void prepareApplicationPreferenceAsUser(@NonNull Role role,
@NonNull Preference preference, @NonNull ApplicationInfo applicationInfo,
@NonNull UserHandle user, @NonNull Context context) {
- RoleUiBehavior.super.prepareApplicationPreferenceAsUser(
- role, preference, applicationInfo, user, context);
-
boolean missingWorkProfileSupport = isMissingWorkProfileSupport(applicationInfo, context);
if (preference.isEnabled()) {
preference.setEnabled(!missingWorkProfileSupport);
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/RoleUiBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/RoleUiBehavior.java
index 13343e9..6e3b47f 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/RoleUiBehavior.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/RoleUiBehavior.java
@@ -20,13 +20,11 @@
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.os.UserHandle;
-import android.os.UserManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.Preference;
-import com.android.modules.utils.build.SdkLevel;
import com.android.permissioncontroller.role.ui.TwoTargetPreference;
import com.android.role.controller.model.Role;
@@ -75,13 +73,7 @@
default void preparePreferenceAsUser(@NonNull Role role,
@NonNull TwoTargetPreference preference,
@NonNull UserHandle user,
- @NonNull Context context) {
- if (SdkLevel.isAtLeastU() && role.isExclusive()) {
- final UserManager userManager = context.getSystemService(UserManager.class);
- preference.setEnabled(!userManager.hasUserRestrictionForUser(
- UserManager.DISALLOW_CONFIG_DEFAULT_APPS, user));
- }
- }
+ @NonNull Context context) {}
/**
* Check whether a qualifying application should be visible to user.
@@ -108,13 +100,7 @@
*/
default void prepareApplicationPreferenceAsUser(@NonNull Role role,
@NonNull Preference preference, @NonNull ApplicationInfo applicationInfo,
- @NonNull UserHandle user, @NonNull Context context) {
- if (SdkLevel.isAtLeastU() && role.isExclusive()) {
- final UserManager userManager = context.getSystemService(UserManager.class);
- preference.setEnabled(!userManager.hasUserRestrictionForUser(
- UserManager.DISALLOW_CONFIG_DEFAULT_APPS, user));
- }
- }
+ @NonNull UserHandle user, @NonNull Context context) {}
/**
* Get the confirmation message for adding an application as a holder of this role.
diff --git a/PermissionController/src/com/android/permissioncontroller/role/utils/RoleUiBehaviorUtils.java b/PermissionController/src/com/android/permissioncontroller/role/utils/RoleUiBehaviorUtils.java
index e60bc6d..40088c7 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/utils/RoleUiBehaviorUtils.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/utils/RoleUiBehaviorUtils.java
@@ -21,12 +21,14 @@
import android.content.pm.ApplicationInfo;
import android.os.Process;
import android.os.UserHandle;
+import android.os.UserManager;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.Preference;
+import com.android.modules.utils.build.SdkLevel;
import com.android.permissioncontroller.role.ui.TwoTargetPreference;
import com.android.permissioncontroller.role.ui.behavior.RoleUiBehavior;
import com.android.role.controller.model.Role;
@@ -102,6 +104,12 @@
public static void preparePreferenceAsUser(@NonNull Role role,
@NonNull TwoTargetPreference preference, @NonNull UserHandle user,
@NonNull Context context) {
+ if (SdkLevel.isAtLeastU() && role.isExclusive()) {
+ final UserManager userManager = context.getSystemService(UserManager.class);
+ preference.setEnabled(!userManager.hasUserRestrictionForUser(
+ UserManager.DISALLOW_CONFIG_DEFAULT_APPS, user));
+ }
+
RoleUiBehavior uiBehavior = getUiBehavior(role);
if (uiBehavior == null) {
return;
@@ -128,6 +136,12 @@
public static void prepareApplicationPreferenceAsUser(@NonNull Role role,
@NonNull Preference preference, @NonNull ApplicationInfo applicationInfo,
@NonNull UserHandle user, @NonNull Context context) {
+ if (SdkLevel.isAtLeastU() && role.isExclusive()) {
+ final UserManager userManager = context.getSystemService(UserManager.class);
+ preference.setEnabled(!userManager.hasUserRestrictionForUser(
+ UserManager.DISALLOW_CONFIG_DEFAULT_APPS, user));
+ }
+
RoleUiBehavior uiBehavior = getUiBehavior(role);
if (uiBehavior == null) {
return;