Loading core/proto/android/service/package.proto +12 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,16 @@ message PackageProto { optional bool is_loading = 2; } // TODO (b/170263003) refactor to permissiongr // Runtime permission state that are granted for users. message UserPermissionsProto { option (android.msg_privacy).dest = DEST_AUTOMATIC; // User id. optional int32 id = 1; // Pre-granted Android permissions. repeated string granted_permissions = 2; } // Name of package. e.g. "com.android.providers.telephony". optional string name = 1; // UID for this package as assigned by Android OS. Loading @@ -152,4 +162,6 @@ message PackageProto { optional InstallSourceProto install_source = 10; // Whether the package is startable or is still loading optional StatesProto states = 11; // Granted runtime permissions for users. repeated UserPermissionsProto user_permissions = 12; } services/core/java/com/android/server/pm/PackageSetting.java +28 −1 Original line number Diff line number Diff line Loading @@ -28,11 +28,13 @@ import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.VisibleForTesting; import com.android.server.pm.parsing.pkg.AndroidPackage; import com.android.server.pm.permission.LegacyPermissionDataProvider; import com.android.server.pm.permission.LegacyPermissionState; import com.android.server.pm.pkg.PackageStateUnserialized; import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; Loading Loading @@ -300,7 +302,8 @@ public class PackageSetting extends PackageSettingBase { return mimeGroups != null ? mimeGroups.get(mimeGroup) : null; } public void dumpDebug(ProtoOutputStream proto, long fieldId, List<UserInfo> users) { public void dumpDebug(ProtoOutputStream proto, long fieldId, List<UserInfo> users, LegacyPermissionDataProvider dataProvider) { final long packageToken = proto.start(fieldId); proto.write(PackageProto.NAME, (realName != null ? realName : name)); proto.write(PackageProto.UID, appId); Loading Loading @@ -337,9 +340,33 @@ public class PackageSetting extends PackageSettingBase { proto.write(PackageProto.StatesProto.IS_STARTABLE, incrementalStates.isStartable()); proto.write(PackageProto.StatesProto.IS_LOADING, incrementalStates.isLoading()); writeUsersInfoToProto(proto, PackageProto.USERS); writePackageUserPermissionsProto(proto, PackageProto.USER_PERMISSIONS, users, dataProvider); proto.end(packageToken); } /** * TODO (b/170263003) refactor to dump to permissiongr proto * Dumps the permissions that are granted to users for this package. */ void writePackageUserPermissionsProto(ProtoOutputStream proto, long fieldId, List<UserInfo> users, LegacyPermissionDataProvider dataProvider) { Collection<LegacyPermissionState.PermissionState> runtimePermissionStates; for (UserInfo user : users) { final long permissionsToken = proto.start(PackageProto.USER_PERMISSIONS); proto.write(PackageProto.UserPermissionsProto.ID, user.id); runtimePermissionStates = dataProvider.getLegacyPermissionState(appId) .getRuntimePermissionStates(user.id); for (LegacyPermissionState.PermissionState permission : runtimePermissionStates) { if (permission.isGranted()) { proto.write(PackageProto.UserPermissionsProto.GRANTED_PERMISSIONS, permission.getName()); } } proto.end(permissionsToken); } } /** Updates all fields in the current setting from another. */ public void updateFrom(PackageSetting other) { super.updateFrom(other); Loading services/core/java/com/android/server/pm/Settings.java +1 −1 Original line number Diff line number Diff line Loading @@ -5018,7 +5018,7 @@ public final class Settings { final int count = mPackages.size(); for (int i = 0; i < count; i++) { final PackageSetting ps = mPackages.valueAt(i); ps.dumpDebug(proto, PackageServiceDumpProto.PACKAGES, users); ps.dumpDebug(proto, PackageServiceDumpProto.PACKAGES, users, mPermissionDataProvider); } } Loading Loading
core/proto/android/service/package.proto +12 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,16 @@ message PackageProto { optional bool is_loading = 2; } // TODO (b/170263003) refactor to permissiongr // Runtime permission state that are granted for users. message UserPermissionsProto { option (android.msg_privacy).dest = DEST_AUTOMATIC; // User id. optional int32 id = 1; // Pre-granted Android permissions. repeated string granted_permissions = 2; } // Name of package. e.g. "com.android.providers.telephony". optional string name = 1; // UID for this package as assigned by Android OS. Loading @@ -152,4 +162,6 @@ message PackageProto { optional InstallSourceProto install_source = 10; // Whether the package is startable or is still loading optional StatesProto states = 11; // Granted runtime permissions for users. repeated UserPermissionsProto user_permissions = 12; }
services/core/java/com/android/server/pm/PackageSetting.java +28 −1 Original line number Diff line number Diff line Loading @@ -28,11 +28,13 @@ import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.VisibleForTesting; import com.android.server.pm.parsing.pkg.AndroidPackage; import com.android.server.pm.permission.LegacyPermissionDataProvider; import com.android.server.pm.permission.LegacyPermissionState; import com.android.server.pm.pkg.PackageStateUnserialized; import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; Loading Loading @@ -300,7 +302,8 @@ public class PackageSetting extends PackageSettingBase { return mimeGroups != null ? mimeGroups.get(mimeGroup) : null; } public void dumpDebug(ProtoOutputStream proto, long fieldId, List<UserInfo> users) { public void dumpDebug(ProtoOutputStream proto, long fieldId, List<UserInfo> users, LegacyPermissionDataProvider dataProvider) { final long packageToken = proto.start(fieldId); proto.write(PackageProto.NAME, (realName != null ? realName : name)); proto.write(PackageProto.UID, appId); Loading Loading @@ -337,9 +340,33 @@ public class PackageSetting extends PackageSettingBase { proto.write(PackageProto.StatesProto.IS_STARTABLE, incrementalStates.isStartable()); proto.write(PackageProto.StatesProto.IS_LOADING, incrementalStates.isLoading()); writeUsersInfoToProto(proto, PackageProto.USERS); writePackageUserPermissionsProto(proto, PackageProto.USER_PERMISSIONS, users, dataProvider); proto.end(packageToken); } /** * TODO (b/170263003) refactor to dump to permissiongr proto * Dumps the permissions that are granted to users for this package. */ void writePackageUserPermissionsProto(ProtoOutputStream proto, long fieldId, List<UserInfo> users, LegacyPermissionDataProvider dataProvider) { Collection<LegacyPermissionState.PermissionState> runtimePermissionStates; for (UserInfo user : users) { final long permissionsToken = proto.start(PackageProto.USER_PERMISSIONS); proto.write(PackageProto.UserPermissionsProto.ID, user.id); runtimePermissionStates = dataProvider.getLegacyPermissionState(appId) .getRuntimePermissionStates(user.id); for (LegacyPermissionState.PermissionState permission : runtimePermissionStates) { if (permission.isGranted()) { proto.write(PackageProto.UserPermissionsProto.GRANTED_PERMISSIONS, permission.getName()); } } proto.end(permissionsToken); } } /** Updates all fields in the current setting from another. */ public void updateFrom(PackageSetting other) { super.updateFrom(other); Loading
services/core/java/com/android/server/pm/Settings.java +1 −1 Original line number Diff line number Diff line Loading @@ -5018,7 +5018,7 @@ public final class Settings { final int count = mPackages.size(); for (int i = 0; i < count; i++) { final PackageSetting ps = mPackages.valueAt(i); ps.dumpDebug(proto, PackageServiceDumpProto.PACKAGES, users); ps.dumpDebug(proto, PackageServiceDumpProto.PACKAGES, users, mPermissionDataProvider); } } Loading