Loading services/core/java/android/os/UserManagerInternal.java +8 −0 Original line number Diff line number Diff line Loading @@ -226,6 +226,14 @@ public abstract class UserManagerInternal { */ public abstract @NonNull List<UserInfo> getUsers(boolean excludeDying); /** * Internal implementation of getUsers does not check permissions. * This improves performance for calls from inside system server which already have permissions * checked. */ public abstract @NonNull List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying, boolean excludePreCreated); /** * Checks if the {@code callingUserId} and {@code targetUserId} are same or in same group * and that the {@code callingUserId} is not a profile and {@code targetUserId} is enabled. Loading services/core/java/com/android/server/pm/PackageManagerService.java +4 −1 Original line number Diff line number Diff line Loading @@ -2991,7 +2991,10 @@ public class PackageManagerService extends IPackageManager.Stub t.traceEnd(); t.traceBegin("read user settings"); mFirstBoot = !mSettings.readLPw(mInjector.getUserManagerInternal().getUsers(false)); mFirstBoot = !mSettings.readLPw(mInjector.getUserManagerInternal().getUsers( /* excludePartial= */ true, /* excludeDying= */ false, /* excludePreCreated= */ false)); t.traceEnd(); // Clean up orphaned packages for which the code path doesn't exist services/core/java/com/android/server/pm/Settings.java +6 −1 Original line number Diff line number Diff line Loading @@ -1613,6 +1613,7 @@ public final class Settings { return; } str = new FileInputStream(userPackagesStateFile); if (DEBUG_MU) Log.i(TAG, "Reading " + userPackagesStateFile); } final XmlPullParser parser = Xml.newPullParser(); parser.setInput(str, StandardCharsets.UTF_8.name()); Loading Loading @@ -2057,9 +2058,13 @@ public final class Settings { serializer.startTag(null, TAG_PACKAGE_RESTRICTIONS); if (DEBUG_MU) Log.i(TAG, "Writing " + userPackagesStateFile); for (final PackageSetting pkg : mPackages.values()) { final PackageUserState ustate = pkg.readUserState(userId); if (DEBUG_MU) Log.i(TAG, " pkg=" + pkg.name + ", state=" + ustate.enabled); if (DEBUG_MU) { Log.i(TAG, " pkg=" + pkg.name + ", installed=" + ustate.installed + ", state=" + ustate.enabled); } serializer.startTag(null, TAG_PACKAGE); serializer.attribute(null, ATTR_NAME, pkg.name); Loading services/core/java/com/android/server/pm/UserManagerService.java +8 −2 Original line number Diff line number Diff line Loading @@ -5102,8 +5102,14 @@ public class UserManagerService extends IUserManager.Stub { @Override public @NonNull List<UserInfo> getUsers(boolean excludeDying) { return UserManagerService.this.getUsersInternal(/*excludePartial= */ true, excludeDying, /* excludePreCreated= */ true); return getUsers(/*excludePartial= */ true, excludeDying, /* excludePreCreated= */ true); } @Override public @NonNull List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying, boolean excludePreCreated) { return UserManagerService.this.getUsersInternal(excludePartial, excludeDying, excludePreCreated); } @Override Loading services/core/java/com/android/server/pm/permission/PermissionManagerService.java +11 −12 Original line number Diff line number Diff line Loading @@ -2603,13 +2603,13 @@ public class PermissionManagerService extends IPermissionManager.Stub { final int N = pkg.getRequestedPermissions().size(); for (int i = 0; i < N; i++) { final String permName = pkg.getRequestedPermissions().get(i); final String friendlyName = pkg.getPackageName() + "(" + pkg.getUid() + ")"; final BasePermission bp = mSettings.getPermissionLocked(permName); final boolean appSupportsRuntimePermissions = pkg.getTargetSdkVersion() >= Build.VERSION_CODES.M; String upgradedActivityRecognitionPermission = null; if (DEBUG_INSTALL && bp != null) { Log.i(TAG, "Package " + pkg.getPackageName() Log.i(TAG, "Package " + friendlyName + " checking " + permName + ": " + bp); } Loading @@ -2618,7 +2618,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { pkg.getPackageName())) { if (DEBUG_PERMISSIONS) { Slog.i(TAG, "Unknown permission " + permName + " in package " + pkg.getPackageName()); + " in package " + friendlyName); } } continue; Loading @@ -2634,7 +2634,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { newImplicitPermissions.add(permName); if (DEBUG_PERMISSIONS) { Slog.i(TAG, permName + " is newly added for " + pkg.getPackageName()); Slog.i(TAG, permName + " is newly added for " + friendlyName); } } else { // Special case for Activity Recognition permission. Even if AR permission Loading @@ -2656,8 +2656,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { newImplicitPermissions.add(permName); if (DEBUG_PERMISSIONS) { Slog.i(TAG, permName + " is newly added for " + pkg.getPackageName()); Slog.i(TAG, permName + " is newly added for " + friendlyName); } break; } Loading @@ -2671,7 +2670,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { // if (/*pkg.isInstantApp()*/ false && !bp.isInstant()) { // if (DEBUG_PERMISSIONS) { // Log.i(TAG, "Denying non-ephemeral permission " + bp.getName() // + " for package " + pkg.getPackageName()); // + " for package " + friendlyName); // } // continue; // } Loading @@ -2679,7 +2678,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (bp.isRuntimeOnly() && !appSupportsRuntimePermissions) { if (DEBUG_PERMISSIONS) { Log.i(TAG, "Denying runtime-only permission " + bp.getName() + " for package " + pkg.getPackageName()); + " for package " + friendlyName); } continue; } Loading Loading @@ -2716,7 +2715,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (DEBUG_PERMISSIONS) { Slog.i(TAG, "Considering granting permission " + perm + " to package " + pkg.getPackageName()); + friendlyName); } if (grant != GRANT_DENIED) { Loading Loading @@ -3005,7 +3004,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { || packageOfInterest.equals(pkg.getPackageName())) { if (DEBUG_PERMISSIONS) { Slog.i(TAG, "Not granting permission " + perm + " to package " + pkg.getPackageName() + " to package " + friendlyName + " because it was previously installed without"); } } Loading @@ -3020,7 +3019,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { changedInstallPermission = true; if (DEBUG_PERMISSIONS) { Slog.i(TAG, "Un-granting permission " + perm + " from package " + pkg.getPackageName() + " from package " + friendlyName + " (protectionLevel=" + bp.getProtectionLevel() + " flags=0x" + Integer.toHexString(PackageInfoUtils.appInfoFlags(pkg, ps)) Loading @@ -3033,7 +3032,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { && (packageOfInterest == null || packageOfInterest.equals(pkg.getPackageName()))) { Slog.i(TAG, "Not granting permission " + perm + " to package " + pkg.getPackageName() + " to package " + friendlyName + " (protectionLevel=" + bp.getProtectionLevel() + " flags=0x" + Integer.toHexString(PackageInfoUtils.appInfoFlags(pkg, ps)) Loading Loading
services/core/java/android/os/UserManagerInternal.java +8 −0 Original line number Diff line number Diff line Loading @@ -226,6 +226,14 @@ public abstract class UserManagerInternal { */ public abstract @NonNull List<UserInfo> getUsers(boolean excludeDying); /** * Internal implementation of getUsers does not check permissions. * This improves performance for calls from inside system server which already have permissions * checked. */ public abstract @NonNull List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying, boolean excludePreCreated); /** * Checks if the {@code callingUserId} and {@code targetUserId} are same or in same group * and that the {@code callingUserId} is not a profile and {@code targetUserId} is enabled. Loading
services/core/java/com/android/server/pm/PackageManagerService.java +4 −1 Original line number Diff line number Diff line Loading @@ -2991,7 +2991,10 @@ public class PackageManagerService extends IPackageManager.Stub t.traceEnd(); t.traceBegin("read user settings"); mFirstBoot = !mSettings.readLPw(mInjector.getUserManagerInternal().getUsers(false)); mFirstBoot = !mSettings.readLPw(mInjector.getUserManagerInternal().getUsers( /* excludePartial= */ true, /* excludeDying= */ false, /* excludePreCreated= */ false)); t.traceEnd(); // Clean up orphaned packages for which the code path doesn't exist
services/core/java/com/android/server/pm/Settings.java +6 −1 Original line number Diff line number Diff line Loading @@ -1613,6 +1613,7 @@ public final class Settings { return; } str = new FileInputStream(userPackagesStateFile); if (DEBUG_MU) Log.i(TAG, "Reading " + userPackagesStateFile); } final XmlPullParser parser = Xml.newPullParser(); parser.setInput(str, StandardCharsets.UTF_8.name()); Loading Loading @@ -2057,9 +2058,13 @@ public final class Settings { serializer.startTag(null, TAG_PACKAGE_RESTRICTIONS); if (DEBUG_MU) Log.i(TAG, "Writing " + userPackagesStateFile); for (final PackageSetting pkg : mPackages.values()) { final PackageUserState ustate = pkg.readUserState(userId); if (DEBUG_MU) Log.i(TAG, " pkg=" + pkg.name + ", state=" + ustate.enabled); if (DEBUG_MU) { Log.i(TAG, " pkg=" + pkg.name + ", installed=" + ustate.installed + ", state=" + ustate.enabled); } serializer.startTag(null, TAG_PACKAGE); serializer.attribute(null, ATTR_NAME, pkg.name); Loading
services/core/java/com/android/server/pm/UserManagerService.java +8 −2 Original line number Diff line number Diff line Loading @@ -5102,8 +5102,14 @@ public class UserManagerService extends IUserManager.Stub { @Override public @NonNull List<UserInfo> getUsers(boolean excludeDying) { return UserManagerService.this.getUsersInternal(/*excludePartial= */ true, excludeDying, /* excludePreCreated= */ true); return getUsers(/*excludePartial= */ true, excludeDying, /* excludePreCreated= */ true); } @Override public @NonNull List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying, boolean excludePreCreated) { return UserManagerService.this.getUsersInternal(excludePartial, excludeDying, excludePreCreated); } @Override Loading
services/core/java/com/android/server/pm/permission/PermissionManagerService.java +11 −12 Original line number Diff line number Diff line Loading @@ -2603,13 +2603,13 @@ public class PermissionManagerService extends IPermissionManager.Stub { final int N = pkg.getRequestedPermissions().size(); for (int i = 0; i < N; i++) { final String permName = pkg.getRequestedPermissions().get(i); final String friendlyName = pkg.getPackageName() + "(" + pkg.getUid() + ")"; final BasePermission bp = mSettings.getPermissionLocked(permName); final boolean appSupportsRuntimePermissions = pkg.getTargetSdkVersion() >= Build.VERSION_CODES.M; String upgradedActivityRecognitionPermission = null; if (DEBUG_INSTALL && bp != null) { Log.i(TAG, "Package " + pkg.getPackageName() Log.i(TAG, "Package " + friendlyName + " checking " + permName + ": " + bp); } Loading @@ -2618,7 +2618,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { pkg.getPackageName())) { if (DEBUG_PERMISSIONS) { Slog.i(TAG, "Unknown permission " + permName + " in package " + pkg.getPackageName()); + " in package " + friendlyName); } } continue; Loading @@ -2634,7 +2634,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { newImplicitPermissions.add(permName); if (DEBUG_PERMISSIONS) { Slog.i(TAG, permName + " is newly added for " + pkg.getPackageName()); Slog.i(TAG, permName + " is newly added for " + friendlyName); } } else { // Special case for Activity Recognition permission. Even if AR permission Loading @@ -2656,8 +2656,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { newImplicitPermissions.add(permName); if (DEBUG_PERMISSIONS) { Slog.i(TAG, permName + " is newly added for " + pkg.getPackageName()); Slog.i(TAG, permName + " is newly added for " + friendlyName); } break; } Loading @@ -2671,7 +2670,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { // if (/*pkg.isInstantApp()*/ false && !bp.isInstant()) { // if (DEBUG_PERMISSIONS) { // Log.i(TAG, "Denying non-ephemeral permission " + bp.getName() // + " for package " + pkg.getPackageName()); // + " for package " + friendlyName); // } // continue; // } Loading @@ -2679,7 +2678,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (bp.isRuntimeOnly() && !appSupportsRuntimePermissions) { if (DEBUG_PERMISSIONS) { Log.i(TAG, "Denying runtime-only permission " + bp.getName() + " for package " + pkg.getPackageName()); + " for package " + friendlyName); } continue; } Loading Loading @@ -2716,7 +2715,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (DEBUG_PERMISSIONS) { Slog.i(TAG, "Considering granting permission " + perm + " to package " + pkg.getPackageName()); + friendlyName); } if (grant != GRANT_DENIED) { Loading Loading @@ -3005,7 +3004,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { || packageOfInterest.equals(pkg.getPackageName())) { if (DEBUG_PERMISSIONS) { Slog.i(TAG, "Not granting permission " + perm + " to package " + pkg.getPackageName() + " to package " + friendlyName + " because it was previously installed without"); } } Loading @@ -3020,7 +3019,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { changedInstallPermission = true; if (DEBUG_PERMISSIONS) { Slog.i(TAG, "Un-granting permission " + perm + " from package " + pkg.getPackageName() + " from package " + friendlyName + " (protectionLevel=" + bp.getProtectionLevel() + " flags=0x" + Integer.toHexString(PackageInfoUtils.appInfoFlags(pkg, ps)) Loading @@ -3033,7 +3032,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { && (packageOfInterest == null || packageOfInterest.equals(pkg.getPackageName()))) { Slog.i(TAG, "Not granting permission " + perm + " to package " + pkg.getPackageName() + " to package " + friendlyName + " (protectionLevel=" + bp.getProtectionLevel() + " flags=0x" + Integer.toHexString(PackageInfoUtils.appInfoFlags(pkg, ps)) Loading