Merge changes from topic "role-mainline"

* changes:
  Deprecate RoleControllerService related system APIs.
  Move role into module.
This commit is contained in:
Hai Zhang
2021-01-25 07:06:09 +00:00
committed by Android (Google) Code Review
45 changed files with 351 additions and 133 deletions

View File

@@ -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",
],
}

View File

@@ -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"],
}

View File

@@ -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",
],
}

View File

@@ -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";
}
}

View File

@@ -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);
}
}

View File

@@ -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
}
}

View File

@@ -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 {

View File

@@ -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() {}

View File

@@ -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,

View File

@@ -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

View File

@@ -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",

View File

@@ -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 {

View File

@@ -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;

View File

@@ -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;

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.android.server.role.util;
package com.android.permission.util;
import android.annotation.Nullable;

View File

@@ -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;

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.android.server.role.util;
package com.android.permission.util;
import android.annotation.Nullable;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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.

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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.

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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):

View File

@@ -1,4 +0,0 @@
# Bug component: 137825
zhanghai@google.com
moltmann@google.com

View File

@@ -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"
];

View File

@@ -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 {

View File

@@ -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.

View File

@@ -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;

View File

@@ -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;

View File

@@ -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";