Loading api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -867,6 +867,7 @@ package android.app.role { method public java.util.List<java.lang.String> getRoleHoldersAsUser(java.lang.String, android.os.UserHandle); method public void removeRoleHolderAsUser(java.lang.String, java.lang.String, android.os.UserHandle, java.util.concurrent.Executor, android.app.role.RoleManagerCallback); method public boolean removeRoleHolderFromController(java.lang.String, java.lang.String); method public void setRoleNamesFromController(java.util.List<java.lang.String>); field public static final java.lang.String EXTRA_REQUEST_ROLE_NAME = "android.app.role.extra.REQUEST_ROLE_NAME"; } Loading core/java/android/app/role/IRoleManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,8 @@ interface IRoleManager { void clearRoleHoldersAsUser(in String roleName, int userId, in IRoleManagerCallback callback); void setRoleNamesFromController(in List<String> roleNames); boolean addRoleHolderFromController(in String roleName, in String packageName); boolean removeRoleHolderFromController(in String roleName, in String packageName); Loading core/java/android/app/role/RoleManager.java +30 −6 Original line number Diff line number Diff line Loading @@ -92,8 +92,8 @@ public final class RoleManager { * * @hide */ public static final String PERMISSION_MANAGE_ROLE_HOLDERS_FROM_CONTROLLER = "com.android.permissioncontroller.permission.MANAGE_ROLE_HOLDERS_FROM_CONTROLLER"; public static final String PERMISSION_MANAGE_ROLES_FROM_CONTROLLER = "com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER"; @NonNull private final Context mContext; Loading Loading @@ -341,13 +341,37 @@ public final class RoleManager { } } /** * Set the names of all the available roles. Should only be called from * {@link android.rolecontrollerservice.RoleControllerService}. * <p> * <strong>Note:</strong> Using this API requires holding * {@link #PERMISSION_MANAGE_ROLES_FROM_CONTROLLER}. * * @param roleNames the names of all the available roles * * @throws IllegalArgumentException if the list of role names is {@code null}. * * @hide */ @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER) @SystemApi public void setRoleNamesFromController(@NonNull List<String> roleNames) { Preconditions.checkNotNull(roleNames, "roleNames cannot be null"); try { mService.setRoleNamesFromController(roleNames); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * Add a specific application to the holders of a role, only modifying records inside * {@link RoleManager}. Should only be called from * {@link android.rolecontrollerservice.RoleControllerService}. * <p> * <strong>Note:</strong> Using this API requires holding * {@link #PERMISSION_MANAGE_ROLE_HOLDERS_FROM_CONTROLLER}. * {@link #PERMISSION_MANAGE_ROLES_FROM_CONTROLLER}. * * @param roleName the name of the role to add the role holder for * @param packageName the package name of the application to add to the role holders Loading @@ -362,7 +386,7 @@ public final class RoleManager { * * @hide */ @RequiresPermission(PERMISSION_MANAGE_ROLE_HOLDERS_FROM_CONTROLLER) @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER) @SystemApi public boolean addRoleHolderFromController(@NonNull String roleName, @NonNull String packageName) { Loading @@ -381,7 +405,7 @@ public final class RoleManager { * {@link android.rolecontrollerservice.RoleControllerService}. * <p> * <strong>Note:</strong> Using this API requires holding * {@link #PERMISSION_MANAGE_ROLE_HOLDERS_FROM_CONTROLLER}. * {@link #PERMISSION_MANAGE_ROLES_FROM_CONTROLLER}. * * @param roleName the name of the role to remove the role holder for * @param packageName the package name of the application to remove from the role holders Loading @@ -396,7 +420,7 @@ public final class RoleManager { * * @hide */ @RequiresPermission(PERMISSION_MANAGE_ROLE_HOLDERS_FROM_CONTROLLER) @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER) @SystemApi public boolean removeRoleHolderFromController(@NonNull String roleName, @NonNull String packageName) { Loading services/core/java/com/android/server/role/RemoteRoleControllerService.java +1 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ public class RemoteRoleControllerService { static final boolean DEBUG = false; private static final String LOG_TAG = RemoteRoleControllerService.class.getSimpleName(); // TODO: STOPSHIP: This isn't the right thread, as we are also using it to write to disk. @NonNull private static final Handler sCallbackHandler = BackgroundThread.getHandler(); Loading services/core/java/com/android/server/role/RoleManagerService.java +16 −2 Original line number Diff line number Diff line Loading @@ -283,13 +283,27 @@ public class RoleManagerService extends SystemService { getControllerService(userId).onClearRoleHolders(roleName, callback); } @Override public void setRoleNamesFromController(@NonNull List<String> roleNames) { Preconditions.checkNotNull(roleNames, "roleNames cannot be null"); getContext().enforceCallingOrSelfPermission( RoleManager.PERMISSION_MANAGE_ROLES_FROM_CONTROLLER, "setRoleNamesFromController"); int userId = UserHandle.getCallingUserId(); synchronized (mLock) { RoleUserState userState = getUserStateLocked(userId); userState.setRoleNamesLocked(roleNames); } } @Override public boolean addRoleHolderFromController(@NonNull String roleName, @NonNull String packageName) { Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty"); Preconditions.checkStringNotEmpty(packageName, "packageName cannot be null or empty"); getContext().enforceCallingOrSelfPermission( RoleManager.PERMISSION_MANAGE_ROLE_HOLDERS_FROM_CONTROLLER, RoleManager.PERMISSION_MANAGE_ROLES_FROM_CONTROLLER, "addRoleHolderFromController"); int userId = UserHandle.getCallingUserId(); Loading @@ -305,7 +319,7 @@ public class RoleManagerService extends SystemService { Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty"); Preconditions.checkStringNotEmpty(packageName, "packageName cannot be null or empty"); getContext().enforceCallingOrSelfPermission( RoleManager.PERMISSION_MANAGE_ROLE_HOLDERS_FROM_CONTROLLER, RoleManager.PERMISSION_MANAGE_ROLES_FROM_CONTROLLER, "removeRoleHolderFromController"); int userId = UserHandle.getCallingUserId(); Loading Loading
api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -867,6 +867,7 @@ package android.app.role { method public java.util.List<java.lang.String> getRoleHoldersAsUser(java.lang.String, android.os.UserHandle); method public void removeRoleHolderAsUser(java.lang.String, java.lang.String, android.os.UserHandle, java.util.concurrent.Executor, android.app.role.RoleManagerCallback); method public boolean removeRoleHolderFromController(java.lang.String, java.lang.String); method public void setRoleNamesFromController(java.util.List<java.lang.String>); field public static final java.lang.String EXTRA_REQUEST_ROLE_NAME = "android.app.role.extra.REQUEST_ROLE_NAME"; } Loading
core/java/android/app/role/IRoleManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,8 @@ interface IRoleManager { void clearRoleHoldersAsUser(in String roleName, int userId, in IRoleManagerCallback callback); void setRoleNamesFromController(in List<String> roleNames); boolean addRoleHolderFromController(in String roleName, in String packageName); boolean removeRoleHolderFromController(in String roleName, in String packageName); Loading
core/java/android/app/role/RoleManager.java +30 −6 Original line number Diff line number Diff line Loading @@ -92,8 +92,8 @@ public final class RoleManager { * * @hide */ public static final String PERMISSION_MANAGE_ROLE_HOLDERS_FROM_CONTROLLER = "com.android.permissioncontroller.permission.MANAGE_ROLE_HOLDERS_FROM_CONTROLLER"; public static final String PERMISSION_MANAGE_ROLES_FROM_CONTROLLER = "com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER"; @NonNull private final Context mContext; Loading Loading @@ -341,13 +341,37 @@ public final class RoleManager { } } /** * Set the names of all the available roles. Should only be called from * {@link android.rolecontrollerservice.RoleControllerService}. * <p> * <strong>Note:</strong> Using this API requires holding * {@link #PERMISSION_MANAGE_ROLES_FROM_CONTROLLER}. * * @param roleNames the names of all the available roles * * @throws IllegalArgumentException if the list of role names is {@code null}. * * @hide */ @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER) @SystemApi public void setRoleNamesFromController(@NonNull List<String> roleNames) { Preconditions.checkNotNull(roleNames, "roleNames cannot be null"); try { mService.setRoleNamesFromController(roleNames); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * Add a specific application to the holders of a role, only modifying records inside * {@link RoleManager}. Should only be called from * {@link android.rolecontrollerservice.RoleControllerService}. * <p> * <strong>Note:</strong> Using this API requires holding * {@link #PERMISSION_MANAGE_ROLE_HOLDERS_FROM_CONTROLLER}. * {@link #PERMISSION_MANAGE_ROLES_FROM_CONTROLLER}. * * @param roleName the name of the role to add the role holder for * @param packageName the package name of the application to add to the role holders Loading @@ -362,7 +386,7 @@ public final class RoleManager { * * @hide */ @RequiresPermission(PERMISSION_MANAGE_ROLE_HOLDERS_FROM_CONTROLLER) @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER) @SystemApi public boolean addRoleHolderFromController(@NonNull String roleName, @NonNull String packageName) { Loading @@ -381,7 +405,7 @@ public final class RoleManager { * {@link android.rolecontrollerservice.RoleControllerService}. * <p> * <strong>Note:</strong> Using this API requires holding * {@link #PERMISSION_MANAGE_ROLE_HOLDERS_FROM_CONTROLLER}. * {@link #PERMISSION_MANAGE_ROLES_FROM_CONTROLLER}. * * @param roleName the name of the role to remove the role holder for * @param packageName the package name of the application to remove from the role holders Loading @@ -396,7 +420,7 @@ public final class RoleManager { * * @hide */ @RequiresPermission(PERMISSION_MANAGE_ROLE_HOLDERS_FROM_CONTROLLER) @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER) @SystemApi public boolean removeRoleHolderFromController(@NonNull String roleName, @NonNull String packageName) { Loading
services/core/java/com/android/server/role/RemoteRoleControllerService.java +1 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ public class RemoteRoleControllerService { static final boolean DEBUG = false; private static final String LOG_TAG = RemoteRoleControllerService.class.getSimpleName(); // TODO: STOPSHIP: This isn't the right thread, as we are also using it to write to disk. @NonNull private static final Handler sCallbackHandler = BackgroundThread.getHandler(); Loading
services/core/java/com/android/server/role/RoleManagerService.java +16 −2 Original line number Diff line number Diff line Loading @@ -283,13 +283,27 @@ public class RoleManagerService extends SystemService { getControllerService(userId).onClearRoleHolders(roleName, callback); } @Override public void setRoleNamesFromController(@NonNull List<String> roleNames) { Preconditions.checkNotNull(roleNames, "roleNames cannot be null"); getContext().enforceCallingOrSelfPermission( RoleManager.PERMISSION_MANAGE_ROLES_FROM_CONTROLLER, "setRoleNamesFromController"); int userId = UserHandle.getCallingUserId(); synchronized (mLock) { RoleUserState userState = getUserStateLocked(userId); userState.setRoleNamesLocked(roleNames); } } @Override public boolean addRoleHolderFromController(@NonNull String roleName, @NonNull String packageName) { Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty"); Preconditions.checkStringNotEmpty(packageName, "packageName cannot be null or empty"); getContext().enforceCallingOrSelfPermission( RoleManager.PERMISSION_MANAGE_ROLE_HOLDERS_FROM_CONTROLLER, RoleManager.PERMISSION_MANAGE_ROLES_FROM_CONTROLLER, "addRoleHolderFromController"); int userId = UserHandle.getCallingUserId(); Loading @@ -305,7 +319,7 @@ public class RoleManagerService extends SystemService { Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty"); Preconditions.checkStringNotEmpty(packageName, "packageName cannot be null or empty"); getContext().enforceCallingOrSelfPermission( RoleManager.PERMISSION_MANAGE_ROLE_HOLDERS_FROM_CONTROLLER, RoleManager.PERMISSION_MANAGE_ROLES_FROM_CONTROLLER, "removeRoleHolderFromController"); int userId = UserHandle.getCallingUserId(); Loading