Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0667e270 authored by Felipe Leme's avatar Felipe Leme Committed by Android (Google) Code Review
Browse files

Merge "Fixed PackageManager.readLPw() call."

parents 385fea44 d9414bed
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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.
+4 −1
Original line number Diff line number Diff line
@@ -3095,7 +3095,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
+6 −1
Original line number Diff line number Diff line
@@ -1512,6 +1512,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());
@@ -1956,9 +1957,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);
+8 −2
Original line number Diff line number Diff line
@@ -5176,8 +5176,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
+10 −10
Original line number Diff line number Diff line
@@ -2663,13 +2663,14 @@ 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.getPermission(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);
            }

@@ -2678,7 +2679,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;
@@ -2694,7 +2695,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
@@ -2716,8 +2717,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;
                        }
@@ -2731,7 +2731,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;
//            }
@@ -2739,7 +2739,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;
            }
@@ -3068,7 +3068,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");
                                }
                            }
@@ -3083,7 +3083,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))
@@ -3096,7 +3096,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))