summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Hai Zhang <zhanghai@google.com> 2021-01-25 07:06:09 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-01-25 07:06:09 +0000
commit490f3915b0c1c51993bb40d8a93a845cdfaec42c (patch)
tree9930c78eebecd468ecdd13a99631984c4c882c6c
parent922f2c43309694c2e49ec0db108550df3216fac9 (diff)
parent61545a7efd635fb0701c4376e5abf6611e76cd4f (diff)
Merge changes from topic "role-mainline"
* changes: Deprecate RoleControllerService related system APIs. Move role into module.
-rw-r--r--Android.bp35
-rw-r--r--apex/permission/Android.bp5
-rw-r--r--apex/permission/framework-s/Android.bp25
-rw-r--r--apex/permission/framework-s/api/current.txt18
-rw-r--r--apex/permission/framework-s/api/module-lib-current.txt10
-rw-r--r--apex/permission/framework-s/api/system-current.txt42
-rw-r--r--apex/permission/framework-s/java/android/app/role/IOnRoleHoldersChangedListener.aidl (renamed from core/java/android/app/role/IOnRoleHoldersChangedListener.aidl)0
-rw-r--r--apex/permission/framework-s/java/android/app/role/IRoleController.aidl (renamed from core/java/android/app/role/IRoleController.aidl)0
-rw-r--r--apex/permission/framework-s/java/android/app/role/IRoleManager.aidl (renamed from core/java/android/app/role/IRoleManager.aidl)0
-rw-r--r--apex/permission/framework-s/java/android/app/role/OnRoleHoldersChangedListener.java (renamed from core/java/android/app/role/OnRoleHoldersChangedListener.java)0
-rw-r--r--apex/permission/framework-s/java/android/app/role/RoleControllerManager.java (renamed from core/java/android/app/role/RoleControllerManager.java)0
-rw-r--r--apex/permission/framework-s/java/android/app/role/RoleControllerService.java (renamed from core/java/android/app/role/RoleControllerService.java)4
-rw-r--r--apex/permission/framework-s/java/android/app/role/RoleFrameworkInitializer.java (renamed from core/java/android/app/role/RoleFrameworkInitializer.java)3
-rw-r--r--apex/permission/framework-s/java/android/app/role/RoleManager.java (renamed from core/java/android/app/role/RoleManager.java)26
-rw-r--r--apex/permission/framework-s/java/android/app/role/TEST_MAPPING (renamed from core/java/android/app/role/TEST_MAPPING)0
-rw-r--r--apex/permission/jarjar-rules.txt5
-rw-r--r--apex/permission/service/Android.bp60
-rw-r--r--apex/permission/service/api/system-server-current.txt8
-rw-r--r--apex/permission/service/java/com/android/permission/compat/UserHandleCompat.java (renamed from services/core/java/com/android/server/role/compat/UserHandleCompat.java)2
-rw-r--r--apex/permission/service/java/com/android/permission/compat/package-info.java (renamed from apex/permission/framework-s/java/android/app/role/RoleFrameworkPlaceholder.java)10
-rw-r--r--apex/permission/service/java/com/android/permission/util/ArrayUtils.java (renamed from services/core/java/com/android/server/role/util/ArrayUtils.java)2
-rw-r--r--apex/permission/service/java/com/android/permission/util/BackgroundThread.java (renamed from services/core/java/com/android/server/role/util/BackgroundThread.java)2
-rw-r--r--apex/permission/service/java/com/android/permission/util/CollectionUtils.java (renamed from services/core/java/com/android/server/role/util/CollectionUtils.java)2
-rw-r--r--apex/permission/service/java/com/android/permission/util/ForegroundThread.java (renamed from services/core/java/com/android/server/role/util/ForegroundThread.java)2
-rw-r--r--apex/permission/service/java/com/android/permission/util/ThrottledRunnable.java (renamed from core/java/com/android/internal/infra/ThrottledRunnable.java)2
-rw-r--r--apex/permission/service/java/com/android/permission/util/package-info.java22
-rw-r--r--apex/permission/service/java/com/android/role/RoleManagerLocal.java (renamed from services/core/java/com/android/server/role/RoleManagerLocal.java)5
-rw-r--r--apex/permission/service/java/com/android/role/RoleService.java (renamed from services/core/java/com/android/server/role/RoleService.java)15
-rw-r--r--apex/permission/service/java/com/android/role/RoleShellCommand.java (renamed from services/core/java/com/android/server/role/RoleShellCommand.java)4
-rw-r--r--apex/permission/service/java/com/android/role/RoleUserState.java (renamed from services/core/java/com/android/server/role/RoleUserState.java)7
-rw-r--r--apex/permission/service/java/com/android/role/TEST_MAPPING (renamed from services/core/java/com/android/server/role/TEST_MAPPING)0
-rw-r--r--apex/permission/service/java/com/android/role/package-info.java22
-rw-r--r--apex/permission/service/proto/com/android/role/roleservice.proto (renamed from core/proto/android/server/rolemanagerservice.proto)4
-rw-r--r--core/api/current.txt18
-rw-r--r--core/api/module-lib-current.txt8
-rw-r--r--core/api/system-current.txt36
-rw-r--r--core/api/test-current.txt10
-rw-r--r--core/api/test-lint-baseline.txt16
-rw-r--r--core/java/android/app/role/OWNERS4
-rw-r--r--core/proto/android/os/incident.proto4
-rw-r--r--services/api/current.txt17
-rw-r--r--services/core/java/com/android/server/role/RoleServicePlatformHelper.java3
-rw-r--r--services/core/java/com/android/server/role/package-info.java22
-rw-r--r--services/core/java/com/android/server/stats/pull/StatsPullAtomService.java2
-rw-r--r--services/java/com/android/server/SystemServer.java2
45 files changed, 351 insertions, 133 deletions
diff --git a/Android.bp b/Android.bp
index c957aed4a8b9..d170913150c5 100644
--- a/Android.bp
+++ b/Android.bp
@@ -761,6 +761,7 @@ gensrcs {
":libstats_atom_enum_protos",
"core/proto/**/*.proto",
"libs/incident/**/*.proto",
+ ":service-permission-protos",
],
output_extension: "srcjar",
}
@@ -788,6 +789,7 @@ gensrcs {
":libstats_atom_enum_protos",
"core/proto/**/*.proto",
"libs/incident/**/*.proto",
+ ":service-permission-protos",
],
output_extension: "proto.h",
@@ -796,6 +798,9 @@ gensrcs {
filegroup {
name: "framework-annotations",
srcs: [
+ "core/java/android/annotation/AnyThread.java",
+ "core/java/android/annotation/AppIdInt.java",
+ "core/java/android/annotation/CallSuper.java",
"core/java/android/annotation/CallbackExecutor.java",
"core/java/android/annotation/CheckResult.java",
"core/java/android/annotation/CurrentTimeMillisLong.java",
@@ -803,6 +808,7 @@ filegroup {
"core/java/android/annotation/IntDef.java",
"core/java/android/annotation/IntRange.java",
"core/java/android/annotation/LongDef.java",
+ "core/java/android/annotation/MainThread.java",
"core/java/android/annotation/NonNull.java",
"core/java/android/annotation/Nullable.java",
"core/java/android/annotation/RequiresPermission.java",
@@ -812,6 +818,7 @@ filegroup {
"core/java/android/annotation/SystemApi.java",
"core/java/android/annotation/SystemService.java",
"core/java/android/annotation/TestApi.java",
+ "core/java/android/annotation/UserIdInt.java",
"core/java/android/annotation/WorkerThread.java",
"core/java/com/android/internal/annotations/GuardedBy.java",
"core/java/com/android/internal/annotations/VisibleForTesting.java",
@@ -906,6 +913,30 @@ filegroup {
],
}
+// Keep these files in sync with the apex/permission/jarjar-rules.txt for the permission module.
+filegroup {
+ name: "framework-permission-s-shared-srcs",
+ srcs: [
+ "core/java/com/android/internal/infra/AndroidFuture.java",
+ "core/java/com/android/internal/infra/ServiceConnector.java",
+ "core/java/com/android/internal/util/Preconditions.java",
+ "core/java/com/android/internal/infra/AndroidFuture.aidl",
+ "core/java/com/android/internal/infra/IAndroidFuture.aidl",
+ "core/java/android/os/HandlerExecutor.java",
+ ],
+ path: "core/java",
+}
+
+// Keep these files in sync with the apex/permission/jarjar-rules.txt for the permission module.
+filegroup {
+ name: "service-permission-shared-srcs",
+ srcs: [
+ "core/java/android/util/IndentingPrintWriter.java",
+ "core/java/com/android/internal/util/dump/DualDumpOutputStream.java",
+ ],
+ path: "core/java",
+}
+
// Build ext.jar
// ============================================================
java_library {
@@ -932,6 +963,7 @@ java_library_host {
"cmds/statsd/src/**/*.proto",
"core/proto/**/*.proto",
"libs/incident/proto/**/*.proto",
+ ":service-permission-protos",
],
proto: {
include_dirs: [
@@ -965,6 +997,7 @@ java_library {
":libstats_atom_enum_protos",
"core/proto/**/*.proto",
"libs/incident/proto/android/os/**/*.proto",
+ ":service-permission-protos",
],
}
@@ -981,6 +1014,7 @@ java_library {
":libstats_atom_enum_protos",
"core/proto/**/*.proto",
"libs/incident/proto/android/os/**/*.proto",
+ ":service-permission-protos",
],
exclude_srcs: [
"core/proto/android/privacy.proto",
@@ -1015,6 +1049,7 @@ cc_defaults {
":ipconnectivity-proto-src",
":libstats_atom_enum_protos",
"core/proto/**/*.proto",
+ ":service-permission-protos",
],
}
diff --git a/apex/permission/Android.bp b/apex/permission/Android.bp
index d839df3708da..be51143e4730 100644
--- a/apex/permission/Android.bp
+++ b/apex/permission/Android.bp
@@ -42,3 +42,8 @@ android_app_certificate {
name: "com.android.permission.certificate",
certificate: "com.android.permission",
}
+
+filegroup {
+ name: "permission-jarjar-rules",
+ srcs: ["jarjar-rules.txt"],
+}
diff --git a/apex/permission/framework-s/Android.bp b/apex/permission/framework-s/Android.bp
index c621a04cad49..89840f74b098 100644
--- a/apex/permission/framework-s/Android.bp
+++ b/apex/permission/framework-s/Android.bp
@@ -22,12 +22,34 @@ filegroup {
visibility: ["//frameworks/base"],
}
+java_library {
+ name: "framework-permission-s-shared",
+ srcs: [":framework-permission-s-shared-srcs"],
+ libs: [
+ "framework-annotations-lib",
+ "unsupportedappusage",
+ ],
+ apex_available: [
+ "com.android.permission",
+ "test_com.android.permission",
+ ],
+ installable: false,
+ min_sdk_version: "30",
+ sdk_version: "module_current",
+}
+
java_sdk_library {
name: "framework-permission-s",
defaults: ["framework-module-defaults"],
srcs: [
":framework-permission-s-sources",
],
+ libs: [
+ "framework-annotations-lib"
+ ],
+ static_libs: [
+ "framework-permission-s-shared",
+ ],
apex_available: [
"com.android.permission",
"test_com.android.permission",
@@ -36,9 +58,12 @@ java_sdk_library {
// Restrict access to implementation library.
impl_library_visibility: ["//frameworks/base/apex/permission:__subpackages__"],
installable: true,
+ jarjar_rules: ":permission-jarjar-rules",
min_sdk_version: "30",
permitted_packages: [
"android.permission",
"android.app.role",
+ // For com.android.permission.jarjar.
+ "com.android.permission",
],
}
diff --git a/apex/permission/framework-s/api/current.txt b/apex/permission/framework-s/api/current.txt
index d802177e249b..4ecc98980c43 100644
--- a/apex/permission/framework-s/api/current.txt
+++ b/apex/permission/framework-s/api/current.txt
@@ -1 +1,19 @@
// Signature format: 2.0
+package android.app.role {
+
+ public final class RoleManager {
+ method @NonNull public android.content.Intent createRequestRoleIntent(@NonNull String);
+ method public boolean isRoleAvailable(@NonNull String);
+ method public boolean isRoleHeld(@NonNull String);
+ field public static final String ROLE_ASSISTANT = "android.app.role.ASSISTANT";
+ field public static final String ROLE_BROWSER = "android.app.role.BROWSER";
+ field public static final String ROLE_CALL_REDIRECTION = "android.app.role.CALL_REDIRECTION";
+ field public static final String ROLE_CALL_SCREENING = "android.app.role.CALL_SCREENING";
+ field public static final String ROLE_DIALER = "android.app.role.DIALER";
+ field public static final String ROLE_EMERGENCY = "android.app.role.EMERGENCY";
+ field public static final String ROLE_HOME = "android.app.role.HOME";
+ field public static final String ROLE_SMS = "android.app.role.SMS";
+ }
+
+}
+
diff --git a/apex/permission/framework-s/api/module-lib-current.txt b/apex/permission/framework-s/api/module-lib-current.txt
index d802177e249b..d7c9a2395c04 100644
--- a/apex/permission/framework-s/api/module-lib-current.txt
+++ b/apex/permission/framework-s/api/module-lib-current.txt
@@ -1 +1,11 @@
// Signature format: 2.0
+package android.app.role {
+
+ public final class RoleManager {
+ method @Nullable public String getBrowserRoleHolder(int);
+ method @Nullable public String getSmsRoleHolder(int);
+ method @Nullable @RequiresPermission(android.Manifest.permission.SET_PREFERRED_APPLICATIONS) public boolean setBrowserRoleHolder(@Nullable String, int);
+ }
+
+}
+
diff --git a/apex/permission/framework-s/api/system-current.txt b/apex/permission/framework-s/api/system-current.txt
index d802177e249b..6778d4826841 100644
--- a/apex/permission/framework-s/api/system-current.txt
+++ b/apex/permission/framework-s/api/system-current.txt
@@ -1 +1,43 @@
// Signature format: 2.0
+package android.app.role {
+
+ public interface OnRoleHoldersChangedListener {
+ method public void onRoleHoldersChanged(@NonNull String, @NonNull android.os.UserHandle);
+ }
+
+ @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 @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 {
+ method public static void registerServiceWrappers();
+ }
+
+ 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 @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 @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 @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/core/java/android/app/role/IOnRoleHoldersChangedListener.aidl b/apex/permission/framework-s/java/android/app/role/IOnRoleHoldersChangedListener.aidl
index 6cf961fad2c4..6cf961fad2c4 100644
--- a/core/java/android/app/role/IOnRoleHoldersChangedListener.aidl
+++ b/apex/permission/framework-s/java/android/app/role/IOnRoleHoldersChangedListener.aidl
diff --git a/core/java/android/app/role/IRoleController.aidl b/apex/permission/framework-s/java/android/app/role/IRoleController.aidl
index 8a43d7fa9036..8a43d7fa9036 100644
--- a/core/java/android/app/role/IRoleController.aidl
+++ b/apex/permission/framework-s/java/android/app/role/IRoleController.aidl
diff --git a/core/java/android/app/role/IRoleManager.aidl b/apex/permission/framework-s/java/android/app/role/IRoleManager.aidl
index 5fc25f0422e2..5fc25f0422e2 100644
--- a/core/java/android/app/role/IRoleManager.aidl
+++ b/apex/permission/framework-s/java/android/app/role/IRoleManager.aidl
diff --git a/core/java/android/app/role/OnRoleHoldersChangedListener.java b/apex/permission/framework-s/java/android/app/role/OnRoleHoldersChangedListener.java
index 5958debc86dd..5958debc86dd 100644
--- a/core/java/android/app/role/OnRoleHoldersChangedListener.java
+++ b/apex/permission/framework-s/java/android/app/role/OnRoleHoldersChangedListener.java
diff --git a/core/java/android/app/role/RoleControllerManager.java b/apex/permission/framework-s/java/android/app/role/RoleControllerManager.java
index 93a7ae0c82c0..93a7ae0c82c0 100644
--- a/core/java/android/app/role/RoleControllerManager.java
+++ b/apex/permission/framework-s/java/android/app/role/RoleControllerManager.java
diff --git a/core/java/android/app/role/RoleControllerService.java b/apex/permission/framework-s/java/android/app/role/RoleControllerService.java
index 6ef9e445d1c9..cf7872913f26 100644
--- a/core/java/android/app/role/RoleControllerService.java
+++ b/apex/permission/framework-s/java/android/app/role/RoleControllerService.java
@@ -44,8 +44,12 @@ import java.util.concurrent.Executor;
* 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/core/java/android/app/role/RoleFrameworkInitializer.java b/apex/permission/framework-s/java/android/app/role/RoleFrameworkInitializer.java
index 15a324f050c8..7a97770ecf0f 100644
--- a/core/java/android/app/role/RoleFrameworkInitializer.java
+++ b/apex/permission/framework-s/java/android/app/role/RoleFrameworkInitializer.java
@@ -16,6 +16,7 @@
package android.app.role;
+import android.annotation.SystemApi;
import android.app.SystemServiceRegistry;
import android.content.Context;
@@ -24,7 +25,7 @@ import android.content.Context;
*
* @hide
*/
-//@SystemApi
+@SystemApi
public class RoleFrameworkInitializer {
private RoleFrameworkInitializer() {}
diff --git a/core/java/android/app/role/RoleManager.java b/apex/permission/framework-s/java/android/app/role/RoleManager.java
index 73f9c747b074..ceccc4cfc9f7 100644
--- a/core/java/android/app/role/RoleManager.java
+++ b/apex/permission/framework-s/java/android/app/role/RoleManager.java
@@ -24,7 +24,6 @@ import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.SystemService;
-import android.annotation.TestApi;
import android.annotation.UserIdInt;
import android.content.Context;
import android.content.Intent;
@@ -522,8 +521,12 @@ public final class RoleManager {
*
* @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) {
@@ -552,8 +555,12 @@ public final class RoleManager {
* @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,
@@ -584,8 +591,12 @@ public final class RoleManager {
* @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,
@@ -605,8 +616,12 @@ public final class RoleManager {
* @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
@@ -630,7 +645,7 @@ public final class RoleManager {
* @hide
*/
@Nullable
- //@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
public String getBrowserRoleHolder(@UserIdInt int userId) {
try {
return mService.getBrowserRoleHolder(userId);
@@ -653,7 +668,7 @@ public final class RoleManager {
*/
@Nullable
@RequiresPermission(Manifest.permission.SET_PREFERRED_APPLICATIONS)
- //@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
public boolean setBrowserRoleHolder(@Nullable String packageName, @UserIdInt int userId) {
try {
return mService.setBrowserRoleHolder(packageName, userId);
@@ -674,7 +689,6 @@ public final class RoleManager {
*/
@Nullable
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
- @TestApi
public String getSmsRoleHolder(@UserIdInt int userId) {
try {
return mService.getSmsRoleHolder(userId);
@@ -693,7 +707,7 @@ public final class RoleManager {
* @hide
*/
@RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
- @TestApi
+ @SystemApi
public void isRoleVisible(@NonNull String roleName,
@NonNull @CallbackExecutor Executor executor, @NonNull Consumer<Boolean> callback) {
getRoleControllerManager().isRoleVisible(roleName, executor, callback);
@@ -714,7 +728,7 @@ public final class RoleManager {
* @hide
*/
@RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
- @TestApi
+ @SystemApi
public void isApplicationVisibleForRole(@NonNull String roleName, @NonNull String packageName,
@NonNull @CallbackExecutor Executor executor, @NonNull Consumer<Boolean> callback) {
getRoleControllerManager().isApplicationVisibleForRole(roleName, packageName, executor,
diff --git a/core/java/android/app/role/TEST_MAPPING b/apex/permission/framework-s/java/android/app/role/TEST_MAPPING
index f8f140dd716e..f8f140dd716e 100644
--- a/core/java/android/app/role/TEST_MAPPING
+++ b/apex/permission/framework-s/java/android/app/role/TEST_MAPPING
diff --git a/apex/permission/jarjar-rules.txt b/apex/permission/jarjar-rules.txt
new file mode 100644
index 000000000000..4729ed13dc4c
--- /dev/null
+++ b/apex/permission/jarjar-rules.txt
@@ -0,0 +1,5 @@
+rule android.os.HandlerExecutor com.android.permission.jarjar.@0
+rule android.util.IndentingPrintWriter com.android.permission.jarjar.@0
+rule com.android.internal.** com.android.permission.jarjar.@0
+rule com.android.modules.** com.android.permission.jarjar.@0
+rule com.android.role.*Proto com.android.permission.jarjar.@0
diff --git a/apex/permission/service/Android.bp b/apex/permission/service/Android.bp
index 349eeb422401..b7f808214507 100644
--- a/apex/permission/service/Android.bp
+++ b/apex/permission/service/Android.bp
@@ -21,6 +21,56 @@ filegroup {
visibility: ["//frameworks/base/services"],
}
+filegroup {
+ name: "service-permission-protos",
+ srcs: [
+ "proto/**/*.proto",
+ ],
+ visibility: ["//frameworks/base"],
+}
+
+gensrcs {
+ name: "service-permission-javastream-protos",
+ depfile: true,
+
+ tools: [
+ "aprotoc",
+ "protoc-gen-javastream",
+ "soong_zip",
+ ],
+
+ cmd: "mkdir -p $(genDir)/$(in) " +
+ "&& $(location aprotoc) " +
+ " --plugin=$(location protoc-gen-javastream) " +
+ " --dependency_out=$(depfile) " +
+ " --javastream_out=$(genDir)/$(in) " +
+ " -Iexternal/protobuf/src " +
+ " -I . " +
+ " $(in) " +
+ "&& $(location soong_zip) -jar -o $(out) -C $(genDir)/$(in) -D $(genDir)/$(in)",
+
+ srcs: [
+ ":service-permission-protos",
+ ],
+ output_extension: "srcjar",
+}
+
+java_library {
+ name: "service-permission-shared",
+ srcs: [":service-permission-shared-srcs"],
+ libs: [
+ "framework-annotations-lib",
+ "framework-permission-s-shared",
+ ],
+ apex_available: [
+ "com.android.permission",
+ "test_com.android.permission",
+ ],
+ installable: false,
+ min_sdk_version: "30",
+ sdk_version: "system_server_current",
+}
+
java_sdk_library {
name: "service-permission",
defaults: ["framework-system-server-module-defaults"],
@@ -31,10 +81,20 @@ java_sdk_library {
],
srcs: [
":service-permission-sources",
+ ":service-permission-javastream-protos",
],
libs: [
"framework-permission",
+ "framework-permission-s.impl",
+ "framework-permission-s-shared",
+ ],
+ static_libs: [
+ "modules-utils-os",
+ "service-permission-shared",
],
+ jarjar_rules: ":permission-jarjar-rules",
+ min_sdk_version: "30",
+ sdk_version: "system_server_current",
apex_available: [
"com.android.permission",
"test_com.android.permission",
diff --git a/apex/permission/service/api/system-server-current.txt b/apex/permission/service/api/system-server-current.txt
index c76cc3275737..b1869c2c731d 100644
--- a/apex/permission/service/api/system-server-current.txt
+++ b/apex/permission/service/api/system-server-current.txt
@@ -26,6 +26,14 @@ package com.android.permission.persistence {
}
+package com.android.role {
+
+ public interface RoleManagerLocal {
+ method @NonNull public java.util.Map<java.lang.String,java.util.Set<java.lang.String>> getRolesAndHolders(int);
+ }
+
+}
+
package com.android.role.persistence {
public interface RolesPersistence {
diff --git a/services/core/java/com/android/server/role/compat/UserHandleCompat.java b/apex/permission/service/java/com/android/permission/compat/UserHandleCompat.java
index 8f14c1fcfca7..7c711d301f00 100644
--- a/services/core/java/com/android/server/role/compat/UserHandleCompat.java
+++ b/apex/permission/service/java/com/android/permission/compat/UserHandleCompat.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server.role.compat;
+package com.android.permission.compat;
import android.annotation.UserIdInt;
import android.os.UserHandle;
diff --git a/apex/permission/framework-s/java/android/app/role/RoleFrameworkPlaceholder.java b/apex/permission/service/java/com/android/permission/compat/package-info.java
index fb7ba3eee2b4..c89cc8eabb92 100644
--- a/apex/permission/framework-s/java/android/app/role/RoleFrameworkPlaceholder.java
+++ b/apex/permission/service/java/com/android/permission/compat/package-info.java
@@ -14,13 +14,9 @@
* limitations under the License.
*/
-package android.app.role;
-
/**
- * Temporary placeholder class inside framework-permission-s for compilation to pass.
- *
* @hide
+ * TODO(b/146466118) remove this javadoc tag
*/
-public class RoleFrameworkPlaceholder {
- private RoleFrameworkPlaceholder() {}
-}
+@android.annotation.Hide
+package com.android.permission.compat;
diff --git a/services/core/java/com/android/server/role/util/ArrayUtils.java b/apex/permission/service/java/com/android/permission/util/ArrayUtils.java
index 8b7c07b7473c..5d5cd78201bd 100644
--- a/services/core/java/com/android/server/role/util/ArrayUtils.java
+++ b/apex/permission/service/java/com/android/permission/util/ArrayUtils.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server.role.util;
+package com.android.permission.util;
import android.annotation.Nullable;
diff --git a/services/core/java/com/android/server/role/util/BackgroundThread.java b/apex/permission/service/java/com/android/permission/util/BackgroundThread.java
index 385595b950ab..7308eec98500 100644
--- a/services/core/java/com/android/server/role/util/BackgroundThread.java
+++ b/apex/permission/service/java/com/android/permission/util/BackgroundThread.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server.role.util;
+package com.android.permission.util;
import android.annotation.NonNull;
import android.os.Handler;
diff --git a/services/core/java/com/android/server/role/util/CollectionUtils.java b/apex/permission/service/java/com/android/permission/util/CollectionUtils.java
index f924fbc39177..ea4952404179 100644
--- a/services/core/java/com/android/server/role/util/CollectionUtils.java
+++ b/apex/permission/service/java/com/android/permission/util/CollectionUtils.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server.role.util;
+package com.android.permission.util;
import android.annotation.Nullable;
diff --git a/services/core/java/com/android/server/role/util/ForegroundThread.java b/apex/permission/service/java/com/android/permission/util/ForegroundThread.java
index 05da59e7c4ef..cd6f6057030b 100644
--- a/services/core/java/com/android/server/role/util/ForegroundThread.java
+++ b/apex/permission/service/java/com/android/permission/util/ForegroundThread.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server.role.util;
+package com.android.permission.util;
import android.annotation.NonNull;
import android.os.Handler;
diff --git a/core/java/com/android/internal/infra/ThrottledRunnable.java b/apex/permission/service/java/com/android/permission/util/ThrottledRunnable.java
index 9846fa9815ec..ba1c3939f73e 100644
--- a/core/java/com/android/internal/infra/ThrottledRunnable.java
+++ b/apex/permission/service/java/com/android/permission/util/ThrottledRunnable.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.internal.infra;
+package com.android.permission.util;
import android.annotation.NonNull;
import android.os.Handler;
diff --git a/apex/permission/service/java/com/android/permission/util/package-info.java b/apex/permission/service/java/com/android/permission/util/package-info.java
new file mode 100644
index 000000000000..18fada534424
--- /dev/null
+++ b/apex/permission/service/java/com/android/permission/util/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @hide
+ * TODO(b/146466118) remove this javadoc tag
+ */
+@android.annotation.Hide
+package com.android.permission.util;
diff --git a/services/core/java/com/android/server/role/RoleManagerLocal.java b/apex/permission/service/java/com/android/role/RoleManagerLocal.java
index f11d99d43061..e243e2e0db66 100644
--- a/services/core/java/com/android/server/role/RoleManagerLocal.java
+++ b/apex/permission/service/java/com/android/role/RoleManagerLocal.java
@@ -14,9 +14,10 @@
* limitations under the License.
*/
-package com.android.server.role;
+package com.android.role;
import android.annotation.NonNull;
+import android.annotation.SystemApi;
import android.annotation.UserIdInt;
import java.util.Map;
@@ -27,7 +28,7 @@ import java.util.Set;
*
* @hide
*/
-//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
+@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
public interface RoleManagerLocal {
/**
* Get all roles and their holders.
diff --git a/services/core/java/com/android/server/role/RoleService.java b/apex/permission/service/java/com/android/role/RoleService.java
index 944ebf0f77c0..5f7eb22a42a7 100644
--- a/services/core/java/com/android/server/role/RoleService.java
+++ b/apex/permission/service/java/com/android/role/RoleService.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server.role;
+package com.android.role;
import android.Manifest;
import android.annotation.AnyThread;
@@ -51,15 +51,16 @@ import android.util.proto.ProtoOutputStream;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.infra.AndroidFuture;
-import com.android.internal.infra.ThrottledRunnable;
import com.android.internal.util.Preconditions;
import com.android.internal.util.dump.DualDumpOutputStream;
+import com.android.permission.compat.UserHandleCompat;
+import com.android.permission.util.ArrayUtils;
+import com.android.permission.util.CollectionUtils;
+import com.android.permission.util.ForegroundThread;
+import com.android.permission.util.ThrottledRunnable;
import com.android.server.LocalManagerRegistry;
import com.android.server.SystemService;
-import com.android.server.role.compat.UserHandleCompat;
-import com.android.server.role.util.ArrayUtils;
-import com.android.server.role.util.CollectionUtils;
-import com.android.server.role.util.ForegroundThread;
+import com.android.server.role.RoleServicePlatformHelper;
import java.io.FileDescriptor;
import java.io.FileOutputStream;
@@ -701,7 +702,7 @@ public class RoleService extends SystemService implements RoleUserState.Callback
final RoleUserState userState = mUserStates.valueAt(i);
userState.dump(dumpOutputStream, "user_states",
- RoleManagerServiceDumpProto.USER_STATES);
+ RoleServiceDumpProto.USER_STATES);
}
}
diff --git a/services/core/java/com/android/server/role/RoleShellCommand.java b/apex/permission/service/java/com/android/role/RoleShellCommand.java
index 6e0d81a605f3..03b7c76d2df5 100644
--- a/services/core/java/com/android/server/role/RoleShellCommand.java
+++ b/apex/permission/service/java/com/android/role/RoleShellCommand.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server.role;
+package com.android.role;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -23,7 +23,7 @@ import android.os.RemoteCallback;
import android.os.RemoteException;
import com.android.modules.utils.BasicShellCommandHandler;
-import com.android.server.role.compat.UserHandleCompat;
+import com.android.permission.compat.UserHandleCompat;
import java.io.PrintWriter;
import java.util.concurrent.CompletableFuture;
diff --git a/services/core/java/com/android/server/role/RoleUserState.java b/apex/permission/service/java/com/android/role/RoleUserState.java
index 52861c5e59e4..78d8d15bbe60 100644
--- a/services/core/java/com/android/server/role/RoleUserState.java
+++ b/apex/permission/service/java/com/android/role/RoleUserState.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server.role;
+package com.android.role;
import android.annotation.CheckResult;
import android.annotation.NonNull;
@@ -29,10 +29,11 @@ import android.util.Log;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.dump.DualDumpOutputStream;
+import com.android.permission.util.BackgroundThread;
+import com.android.permission.util.CollectionUtils;
import com.android.role.persistence.RolesPersistence;
import com.android.role.persistence.RolesState;
-import com.android.server.role.util.BackgroundThread;
-import com.android.server.role.util.CollectionUtils;
+import com.android.server.role.RoleServicePlatformHelper;
import java.util.ArrayList;
import java.util.List;
diff --git a/services/core/java/com/android/server/role/TEST_MAPPING b/apex/permission/service/java/com/android/role/TEST_MAPPING
index 0d7bc1476bd1..0d7bc1476bd1 100644
--- a/services/core/java/com/android/server/role/TEST_MAPPING
+++ b/apex/permission/service/java/com/android/role/TEST_MAPPING
diff --git a/apex/permission/service/java/com/android/role/package-info.java b/apex/permission/service/java/com/android/role/package-info.java
new file mode 100644
index 000000000000..8b5b2516105f
--- /dev/null
+++ b/apex/permission/service/java/com/android/role/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @hide
+ * TODO(b/146466118) remove this javadoc tag
+ */
+@android.annotation.Hide
+package com.android.role;
diff --git a/core/proto/android/server/rolemanagerservice.proto b/apex/permission/service/proto/com/android/role/roleservice.proto
index 146522ce9c8b..79c42299207c 100644
--- a/core/proto/android/server/rolemanagerservice.proto
+++ b/apex/permission/service/proto/com/android/role/roleservice.proto
@@ -16,13 +16,13 @@
syntax = "proto2";
-package com.android.server.role;
+package com.android.role;
option java_multiple_files = true;
import "frameworks/base/core/proto/android/privacy.proto";
-message RoleManagerServiceDumpProto {
+message RoleServiceDumpProto {
option (.android.msg_privacy).dest = DEST_AUTOMATIC;
// List of per-user states for all users.
diff --git a/core/api/current.txt b/core/api/current.txt
index 03ec4167c680..e0e2762cdd56 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -7907,24 +7907,6 @@ package android.app.people {
}
-package android.app.role {
-
- public final class RoleManager {
- method @NonNull public android.content.Intent createRequestRoleIntent(@NonNull String);
- method public boolean isRoleAvailable(@NonNull String);
- method public boolean isRoleHeld(@NonNull String);
- field public static final String ROLE_ASSISTANT = "android.app.role.ASSISTANT";
- field public static final String ROLE_BROWSER = "android.app.role.BROWSER";
- field public static final String ROLE_CALL_REDIRECTION = "android.app.role.CALL_REDIRECTION";
- field public static final String ROLE_CALL_SCREENING = "android.app.role.CALL_SCREENING";
- field public static final String ROLE_DIALER = "android.app.role.DIALER";
- field public static final String ROLE_EMERGENCY = "android.app.role.EMERGENCY";
- field public static final String ROLE_HOME = "android.app.role.HOME";
- field public static final String ROLE_SMS = "android.app.role.SMS";
- }
-
-}
-
package android.app.slice {
public final class Slice implements android.os.Parcelable {
diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt
index 5d61aca0a123..4acbf74aafe4 100644
--- a/core/api/module-lib-current.txt
+++ b/core/api/module-lib-current.txt
@@ -32,14 +32,6 @@ package android.app {
}
-package android.app.role {
-
- public final class RoleManager {
- method @Nullable public String getSmsRoleHolder(int);
- }
-
-}
-
package android.content {
public abstract class Context {
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 802e4ab5a717..96069f93c2fe 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -1357,42 +1357,6 @@ package android.app.prediction {
}
-package android.app.role {
-
- public interface OnRoleHoldersChangedListener {
- 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();
- 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";
- }
-
- 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 @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 @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.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>);
- field public static final int MANAGE_HOLDERS_FLAG_DONT_KILL_APP = 1; // 0x1
- }
-
-}
-
package android.app.search {
public final class Query implements android.os.Parcelable {
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 2efa87e4d793..d6abbeca4480 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -544,16 +544,6 @@ package android.app.prediction {
}
-package android.app.role {
-
- public final class RoleManager {
- method @Nullable public String getSmsRoleHolder(int);
- 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>);
- }
-
-}
-
package android.app.usage {
public class NetworkStatsManager {
diff --git a/core/api/test-lint-baseline.txt b/core/api/test-lint-baseline.txt
index 216d34069083..3c67e44ff41f 100644
--- a/core/api/test-lint-baseline.txt
+++ b/core/api/test-lint-baseline.txt
@@ -2843,10 +2843,6 @@ RethrowRemoteException: android.telephony.mbms.vendor.MbmsStreamingServiceBase#s
SamShouldBeLast: android.app.ActivityManager#addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int):
-SamShouldBeLast: android.app.role.RoleManager#addOnRoleHoldersChangedListenerAsUser(java.util.concurrent.Executor, android.app.role.OnRoleHoldersChangedListener, android.os.UserHandle):
-
-SamShouldBeLast: android.app.role.RoleManager#removeOnRoleHoldersChangedListenerAsUser(android.app.role.OnRoleHoldersChangedListener, android.os.UserHandle):
-
SamShouldBeLast: android.database.sqlite.SQLiteDebug#dump(android.util.Printer, String[]):
SamShouldBeLast: android.database.sqlite.SQLiteDirectCursorDriver#query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]):
@@ -2973,18 +2969,6 @@ UserHandle: android.app.ActivityManager#switchUser(android.os.UserHandle):
UserHandle: android.app.admin.DevicePolicyManager#getOwnerInstalledCaCerts(android.os.UserHandle):
-UserHandle: android.app.role.RoleManager#addOnRoleHoldersChangedListenerAsUser(java.util.concurrent.Executor, android.app.role.OnRoleHoldersChangedListener, android.os.UserHandle):
-
-UserHandle: android.app.role.RoleManager#addRoleHolderAsUser(String, String, int, android.os.UserHandle, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Boolean>):
-
-UserHandle: android.app.role.RoleManager#clearRoleHoldersAsUser(String, int, android.os.UserHandle, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Boolean>):
-
-UserHandle: android.app.role.RoleManager#getRoleHoldersAsUser(String, android.os.UserHandle):
-
-UserHandle: android.app.role.RoleManager#removeOnRoleHoldersChangedListenerAsUser(android.app.role.OnRoleHoldersChangedListener, android.os.UserHandle):
-
-UserHandle: android.app.role.RoleManager#removeRoleHolderAsUser(String, String, int, android.os.UserHandle, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Boolean>):
-
UserHandle: android.app.usage.StorageStatsManager#queryCratesForPackage(java.util.UUID, String, android.os.UserHandle):
UserHandle: android.app.usage.StorageStatsManager#queryCratesForUser(java.util.UUID, android.os.UserHandle):
diff --git a/core/java/android/app/role/OWNERS b/core/java/android/app/role/OWNERS
deleted file mode 100644
index b807636658eb..000000000000
--- a/core/java/android/app/role/OWNERS
+++ /dev/null
@@ -1,4 +0,0 @@
-# Bug component: 137825
-
-zhanghai@google.com
-moltmann@google.com
diff --git a/core/proto/android/os/incident.proto b/core/proto/android/os/incident.proto
index 944edb0ff750..48094198c2e9 100644
--- a/core/proto/android/os/incident.proto
+++ b/core/proto/android/os/incident.proto
@@ -41,7 +41,7 @@ import "frameworks/base/core/proto/android/server/jobscheduler.proto";
import "frameworks/base/core/proto/android/server/location/context_hub.proto";
import "frameworks/base/core/proto/android/server/powermanagerservice.proto";
import "frameworks/base/core/proto/android/server/powerstatsservice.proto";
-import "frameworks/base/core/proto/android/server/rolemanagerservice.proto";
+import "frameworks/base/apex/permission/service/proto/com/android/role/roleservice.proto";
import "frameworks/base/core/proto/android/server/windowmanagerservice.proto";
import "frameworks/base/core/proto/android/service/appwidget.proto";
import "frameworks/base/core/proto/android/service/battery.proto";
@@ -362,7 +362,7 @@ message IncidentProto {
(section).userdebug_and_eng_only = true
];
- optional com.android.server.role.RoleManagerServiceDumpProto role = 3024 [
+ optional com.android.role.RoleServiceDumpProto role = 3024 [
(section).type = SECTION_DUMPSYS,
(section).args = "role --proto"
];
diff --git a/services/api/current.txt b/services/api/current.txt
index 17ca369c62ab..7e8f7a20bd64 100644
--- a/services/api/current.txt
+++ b/services/api/current.txt
@@ -26,6 +26,14 @@ package com.android.permission.persistence {
}
+package com.android.role {
+
+ public interface RoleManagerLocal {
+ method @NonNull public java.util.Map<java.lang.String,java.util.Set<java.lang.String>> getRolesAndHolders(int);
+ }
+
+}
+
package com.android.role.persistence {
public interface RolesPersistence {
@@ -80,6 +88,15 @@ package com.android.server {
}
+package com.android.server.role {
+
+ public interface RoleServicePlatformHelper {
+ method @NonNull public String computePackageStateHash(int);
+ method @NonNull public java.util.Map<java.lang.String,java.util.Set<java.lang.String>> getLegacyRoleState(int);
+ }
+
+}
+
package com.android.server.wifi {
public class SupplicantManager {
diff --git a/services/core/java/com/android/server/role/RoleServicePlatformHelper.java b/services/core/java/com/android/server/role/RoleServicePlatformHelper.java
index d804d130fc6b..8f4cc023dc27 100644
--- a/services/core/java/com/android/server/role/RoleServicePlatformHelper.java
+++ b/services/core/java/com/android/server/role/RoleServicePlatformHelper.java
@@ -17,6 +17,7 @@
package com.android.server.role;
import android.annotation.NonNull;
+import android.annotation.SystemApi;
import android.annotation.UserIdInt;
import java.util.Map;
@@ -27,7 +28,7 @@ import java.util.Set;
*
* @hide
*/
-//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
+@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
public interface RoleServicePlatformHelper {
/**
* Get the legacy role state stored in the platform.
diff --git a/services/core/java/com/android/server/role/package-info.java b/services/core/java/com/android/server/role/package-info.java
new file mode 100644
index 000000000000..c0fede9c67b1
--- /dev/null
+++ b/services/core/java/com/android/server/role/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @hide
+ * TODO(b/146466118) remove this javadoc tag
+ */
+@android.annotation.Hide
+package com.android.server.role;
diff --git a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
index 14855aee2991..0cc2a6c52b1d 100644
--- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
+++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
@@ -154,6 +154,7 @@ import com.android.internal.os.ProcessCpuTracker;
import com.android.internal.os.StoragedUidIoStatsReader;
import com.android.internal.util.CollectionUtils;
import com.android.internal.util.FrameworkStatsLog;
+import com.android.role.RoleManagerLocal;
import com.android.server.BatteryService;
import com.android.server.BinderCallsStatsService;
import com.android.server.LocalManagerRegistry;
@@ -162,7 +163,6 @@ import com.android.server.SystemService;
import com.android.server.SystemServiceManager;
import com.android.server.am.MemoryStatUtil.MemoryStat;
import com.android.server.notification.NotificationManagerService;
-import com.android.server.role.RoleManagerLocal;
import com.android.server.stats.pull.IonMemoryUtil.IonAllocations;
import com.android.server.stats.pull.ProcfsMemoryUtil.MemorySnapshot;
import com.android.server.stats.pull.netstats.NetworkStatsExt;
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 7839274904ad..2e0c16638685 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -353,7 +353,7 @@ public final class SystemServer implements Dumpable {
"com.android.server.ConnectivityServiceInitializer";
private static final String IP_CONNECTIVITY_METRICS_CLASS =
"com.android.server.connectivity.IpConnectivityMetrics";
- private static final String ROLE_SERVICE_CLASS = "com.android.server.role.RoleService";
+ private static final String ROLE_SERVICE_CLASS = "com.android.role.RoleService";
private static final String TETHERING_CONNECTOR_CLASS = "android.net.ITetheringConnector";