Deprecate RoleControllerService related system APIs.

The RoleControllerService is an internal implementation detail of
role, and was exposed as system API in platform before modularization
and the ability to have updatable code in system server.

Now that we have our updatable system server JAR, this should no
longer be exposed and we may refactor the implementation for better
performance/stability later. Hence deprecate them now in S for the
earliest possible removal of these APIs.

Bug: 158736025
Test: presubmit
Change-Id: I1358e16ad0e9cf875316d93dd2152001c13b84dd
diff --git a/framework-s/api/system-current.txt b/framework-s/api/system-current.txt
index e87f124..6778d48 100644
--- a/framework-s/api/system-current.txt
+++ b/framework-s/api/system-current.txt
@@ -5,17 +5,17 @@
     method public void onRoleHoldersChanged(@NonNull String, @NonNull android.os.UserHandle);
   }
 
-  public abstract class RoleControllerService extends android.app.Service {
-    ctor public RoleControllerService();
-    method @WorkerThread public abstract boolean onAddRoleHolder(@NonNull String, @NonNull String, int);
-    method @Nullable public final android.os.IBinder onBind(@Nullable android.content.Intent);
-    method @WorkerThread public abstract boolean onClearRoleHolders(@NonNull String, int);
-    method @WorkerThread public abstract boolean onGrantDefaultRoles();
+  @Deprecated public abstract class RoleControllerService extends android.app.Service {
+    ctor @Deprecated public RoleControllerService();
+    method @Deprecated @WorkerThread public abstract boolean onAddRoleHolder(@NonNull String, @NonNull String, int);
+    method @Deprecated @Nullable public final android.os.IBinder onBind(@Nullable android.content.Intent);
+    method @Deprecated @WorkerThread public abstract boolean onClearRoleHolders(@NonNull String, int);
+    method @Deprecated @WorkerThread public abstract boolean onGrantDefaultRoles();
     method @Deprecated public abstract boolean onIsApplicationQualifiedForRole(@NonNull String, @NonNull String);
-    method public boolean onIsApplicationVisibleForRole(@NonNull String, @NonNull String);
-    method public abstract boolean onIsRoleVisible(@NonNull String);
-    method @WorkerThread public abstract boolean onRemoveRoleHolder(@NonNull String, @NonNull String, int);
-    field public static final String SERVICE_INTERFACE = "android.app.role.RoleControllerService";
+    method @Deprecated public boolean onIsApplicationVisibleForRole(@NonNull String, @NonNull String);
+    method @Deprecated public abstract boolean onIsRoleVisible(@NonNull String);
+    method @Deprecated @WorkerThread public abstract boolean onRemoveRoleHolder(@NonNull String, @NonNull String, int);
+    field @Deprecated public static final String SERVICE_INTERFACE = "android.app.role.RoleControllerService";
   }
 
   public class RoleFrameworkInitializer {
@@ -25,17 +25,17 @@
   public final class RoleManager {
     method @RequiresPermission(android.Manifest.permission.OBSERVE_ROLE_HOLDERS) public void addOnRoleHoldersChangedListenerAsUser(@NonNull java.util.concurrent.Executor, @NonNull android.app.role.OnRoleHoldersChangedListener, @NonNull android.os.UserHandle);
     method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void addRoleHolderAsUser(@NonNull String, @NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean addRoleHolderFromController(@NonNull String, @NonNull String);
+    method @Deprecated @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean addRoleHolderFromController(@NonNull String, @NonNull String);
     method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void clearRoleHoldersAsUser(@NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @NonNull @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public java.util.List<java.lang.String> getHeldRolesFromController(@NonNull String);
+    method @Deprecated @NonNull @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public java.util.List<java.lang.String> getHeldRolesFromController(@NonNull String);
     method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public java.util.List<java.lang.String> getRoleHolders(@NonNull String);
     method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public java.util.List<java.lang.String> getRoleHoldersAsUser(@NonNull String, @NonNull android.os.UserHandle);
     method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void isApplicationVisibleForRole(@NonNull String, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
     method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void isRoleVisible(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
     method @RequiresPermission(android.Manifest.permission.OBSERVE_ROLE_HOLDERS) public void removeOnRoleHoldersChangedListenerAsUser(@NonNull android.app.role.OnRoleHoldersChangedListener, @NonNull android.os.UserHandle);
     method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void removeRoleHolderAsUser(@NonNull String, @NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean removeRoleHolderFromController(@NonNull String, @NonNull String);
-    method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public void setRoleNamesFromController(@NonNull java.util.List<java.lang.String>);
+    method @Deprecated @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean removeRoleHolderFromController(@NonNull String, @NonNull String);
+    method @Deprecated @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public void setRoleNamesFromController(@NonNull java.util.List<java.lang.String>);
     field public static final int MANAGE_HOLDERS_FLAG_DONT_KILL_APP = 1; // 0x1
   }
 
diff --git a/framework-s/java/android/app/role/RoleControllerService.java b/framework-s/java/android/app/role/RoleControllerService.java
index 6ef9e44..cf78729 100644
--- a/framework-s/java/android/app/role/RoleControllerService.java
+++ b/framework-s/java/android/app/role/RoleControllerService.java
@@ -44,8 +44,12 @@
  * requirements and granting or revoking relevant privileges of roles. This class can only be
  * implemented by the permission controller app which is registered in {@code PackageManager}.
  *
+ * @deprecated The role controller service is an internal implementation detail inside role, and it
+ *             may be replaced by other mechanisms in the future and no longer be called.
+ *
  * @hide
  */
+@Deprecated
 @SystemApi
 public abstract class RoleControllerService extends Service {
 
diff --git a/framework-s/java/android/app/role/RoleManager.java b/framework-s/java/android/app/role/RoleManager.java
index e545a75..ceccc4c 100644
--- a/framework-s/java/android/app/role/RoleManager.java
+++ b/framework-s/java/android/app/role/RoleManager.java
@@ -521,8 +521,12 @@
      *
      * @param roleNames the names of all the available roles
      *
+     * @deprecated This is only usable by the role controller service, which is an internal
+     *             implementation detail inside role.
+     *
      * @hide
      */
+    @Deprecated
     @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER)
     @SystemApi
     public void setRoleNamesFromController(@NonNull List<String> roleNames) {
@@ -551,8 +555,12 @@
      * @see #getRoleHolders(String)
      * @see #removeRoleHolderFromController(String, String)
      *
+     * @deprecated This is only usable by the role controller service, which is an internal
+     *             implementation detail inside role.
+     *
      * @hide
      */
+    @Deprecated
     @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER)
     @SystemApi
     public boolean addRoleHolderFromController(@NonNull String roleName,
@@ -583,8 +591,12 @@
      * @see #getRoleHolders(String)
      * @see #addRoleHolderFromController(String, String)
      *
+     * @deprecated This is only usable by the role controller service, which is an internal
+     *             implementation detail inside role.
+     *
      * @hide
      */
+    @Deprecated
     @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER)
     @SystemApi
     public boolean removeRoleHolderFromController(@NonNull String roleName,
@@ -604,8 +616,12 @@
      * @param packageName the package name
      * @return the list of role names
      *
+     * @deprecated This is only usable by the role controller service, which is an internal
+     *             implementation detail inside role.
+     *
      * @hide
      */
+    @Deprecated
     @NonNull
     @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER)
     @SystemApi