diff options
Diffstat (limited to 'PermissionController/role-controller/java')
10 files changed, 30 insertions, 15 deletions
diff --git a/PermissionController/role-controller/java/com/android/role/controller/behavior/AssistantRoleBehavior.java b/PermissionController/role-controller/java/com/android/role/controller/behavior/AssistantRoleBehavior.java index d025d1b03..1dc0aea48 100644 --- a/PermissionController/role-controller/java/com/android/role/controller/behavior/AssistantRoleBehavior.java +++ b/PermissionController/role-controller/java/com/android/role/controller/behavior/AssistantRoleBehavior.java @@ -230,7 +230,7 @@ public class AssistantRoleBehavior implements RoleBehavior { } @Override - public boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, + public Boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, @NonNull Context context) { return VisibilityMixin.isVisible("config_showDefaultAssistant", false, user, context); } diff --git a/PermissionController/role-controller/java/com/android/role/controller/behavior/BrowserRoleBehavior.java b/PermissionController/role-controller/java/com/android/role/controller/behavior/BrowserRoleBehavior.java index 0261e1eee..95b86f0ca 100644 --- a/PermissionController/role-controller/java/com/android/role/controller/behavior/BrowserRoleBehavior.java +++ b/PermissionController/role-controller/java/com/android/role/controller/behavior/BrowserRoleBehavior.java @@ -157,7 +157,7 @@ public class BrowserRoleBehavior implements RoleBehavior { } @Override - public boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, + public Boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, @NonNull Context context) { return VisibilityMixin.isVisible("config_showBrowserRole", true, user, context); } diff --git a/PermissionController/role-controller/java/com/android/role/controller/behavior/DialerRoleBehavior.java b/PermissionController/role-controller/java/com/android/role/controller/behavior/DialerRoleBehavior.java index 153f4a6b4..aa0902136 100644 --- a/PermissionController/role-controller/java/com/android/role/controller/behavior/DialerRoleBehavior.java +++ b/PermissionController/role-controller/java/com/android/role/controller/behavior/DialerRoleBehavior.java @@ -80,7 +80,7 @@ public class DialerRoleBehavior implements RoleBehavior { } @Override - public boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, + public Boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, @NonNull Context context) { return VisibilityMixin.isVisible("config_showDialerRole", true, user, context); } diff --git a/PermissionController/role-controller/java/com/android/role/controller/behavior/EmergencyRoleBehavior.java b/PermissionController/role-controller/java/com/android/role/controller/behavior/EmergencyRoleBehavior.java index f19c86596..4a52b0b03 100644 --- a/PermissionController/role-controller/java/com/android/role/controller/behavior/EmergencyRoleBehavior.java +++ b/PermissionController/role-controller/java/com/android/role/controller/behavior/EmergencyRoleBehavior.java @@ -71,7 +71,7 @@ public class EmergencyRoleBehavior implements RoleBehavior { } @Override - public boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, + public Boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, @NonNull Context context) { return VisibilityMixin.isVisible("config_showDefaultEmergency", false, user, context); } diff --git a/PermissionController/role-controller/java/com/android/role/controller/behavior/HomeRoleBehavior.java b/PermissionController/role-controller/java/com/android/role/controller/behavior/HomeRoleBehavior.java index 8c1446b50..b226674a0 100644 --- a/PermissionController/role-controller/java/com/android/role/controller/behavior/HomeRoleBehavior.java +++ b/PermissionController/role-controller/java/com/android/role/controller/behavior/HomeRoleBehavior.java @@ -186,7 +186,7 @@ public class HomeRoleBehavior implements RoleBehavior { } @Override - public boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, + public Boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, @NonNull Context context) { return VisibilityMixin.isVisible("config_showDefaultHome", false, user, context); } diff --git a/PermissionController/role-controller/java/com/android/role/controller/behavior/ReservedForTestingProfileGroupExclusivityRoleBehavior.java b/PermissionController/role-controller/java/com/android/role/controller/behavior/ReservedForTestingProfileGroupExclusivityRoleBehavior.java index f02b4d90c..5299886f6 100644 --- a/PermissionController/role-controller/java/com/android/role/controller/behavior/ReservedForTestingProfileGroupExclusivityRoleBehavior.java +++ b/PermissionController/role-controller/java/com/android/role/controller/behavior/ReservedForTestingProfileGroupExclusivityRoleBehavior.java @@ -49,7 +49,7 @@ public class ReservedForTestingProfileGroupExclusivityRoleBehavior implements Ro } @Override - public boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, + public Boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, @NonNull Context context) { if (RoleFlags.isProfileGroupExclusivityAvailable()) { Context userContext = UserUtils.getUserContext(context, user); diff --git a/PermissionController/role-controller/java/com/android/role/controller/behavior/SmsRoleBehavior.java b/PermissionController/role-controller/java/com/android/role/controller/behavior/SmsRoleBehavior.java index 4aff8a163..ee429c10e 100644 --- a/PermissionController/role-controller/java/com/android/role/controller/behavior/SmsRoleBehavior.java +++ b/PermissionController/role-controller/java/com/android/role/controller/behavior/SmsRoleBehavior.java @@ -133,7 +133,7 @@ public class SmsRoleBehavior implements RoleBehavior { } @Override - public boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, + public Boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, @NonNull Context context) { return VisibilityMixin.isVisible("config_showSmsRole", true, user, context); } diff --git a/PermissionController/role-controller/java/com/android/role/controller/model/Role.java b/PermissionController/role-controller/java/com/android/role/controller/model/Role.java index 9773b93a9..5109e505b 100644 --- a/PermissionController/role-controller/java/com/android/role/controller/model/Role.java +++ b/PermissionController/role-controller/java/com/android/role/controller/model/Role.java @@ -1098,11 +1098,23 @@ public class Role { * @return whether this role should be visible to user */ public boolean isVisibleAsUser(@NonNull UserHandle user, @NonNull Context context) { - RoleBehavior behavior = getBehavior(); - if (behavior == null) { - return isVisible(); + if (mBehavior != null) { + Boolean isVisibleAsUser = mBehavior.isVisibleAsUser(this, user, context); + if (isVisibleAsUser != null) { + if (isVisibleAsUser && mStatic) { + throw new IllegalArgumentException("static=\"true\" is invalid for a visible " + + "role: " + mName); + } + if (isVisibleAsUser && (mDescriptionResource == 0 + || mLabelResource == 0 + || mShortLabelResource == 0)) { + throw new IllegalArgumentException("description, label, and shortLabel are " + + "required for a visible role: " + mName); + } + return isVisibleAsUser; + } } - return isVisible() && behavior.isVisibleAsUser(this, user, context); + return isVisible(); } /** diff --git a/PermissionController/role-controller/java/com/android/role/controller/model/RoleBehavior.java b/PermissionController/role-controller/java/com/android/role/controller/model/RoleBehavior.java index 86ca8e2ce..3b08265d1 100644 --- a/PermissionController/role-controller/java/com/android/role/controller/model/RoleBehavior.java +++ b/PermissionController/role-controller/java/com/android/role/controller/model/RoleBehavior.java @@ -23,7 +23,6 @@ import android.os.UserHandle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import java.util.Collections; import java.util.List; /** @@ -129,11 +128,12 @@ public interface RoleBehavior { * @param user the user to check for * @param context the `Context` to retrieve system services * - * @return whether this role should be visible to user + * @return whether this role should be visible to user, or {@code null} if not overridden */ - default boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, + @Nullable + default Boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user, @NonNull Context context) { - return true; + return null; } /** diff --git a/PermissionController/role-controller/java/com/android/role/controller/model/RoleParser.java b/PermissionController/role-controller/java/com/android/role/controller/model/RoleParser.java index 4b05554e3..9c3746b79 100644 --- a/PermissionController/role-controller/java/com/android/role/controller/model/RoleParser.java +++ b/PermissionController/role-controller/java/com/android/role/controller/model/RoleParser.java @@ -413,6 +413,9 @@ public class RoleParser { skipCurrentTag(parser); return null; } + } else if (behavior != null) { + labelResource = getAttributeResourceValue(parser, ATTRIBUTE_LABEL, 0); + shortLabelResource = getAttributeResourceValue(parser, ATTRIBUTE_SHORT_LABEL, 0); } else { labelResource = 0; shortLabelResource = 0; |