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

Commit 594f208d authored by Xiaohui Chen's avatar Xiaohui Chen
Browse files

Clean up USER_OWNER reference in pm/Settings

Bug: 19913735
Change-Id: I538ed443b945e9cbb731520450bf5ef39882ae37
parent 530ea0df
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -1925,8 +1925,7 @@ public class PackageManagerService extends IPackageManager.Stub {
            mFoundPolicyFile = SELinuxMMAC.readInstallPolicy();
            mRestoredSettings = mSettings.readLPw(this, sUserManager.getUsers(false),
                    mSdkVersion, mOnlyCore);
            mRestoredSettings = mSettings.readLPw(sUserManager.getUsers(false));
            String customResolverActivity = Resources.getSystem().getString(
                    R.string.config_customResolverActivity);
+11 −25
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import static android.os.Process.SYSTEM_UID;
import static android.os.Process.PACKAGE_INFO_GID;
import static com.android.server.pm.PackageManagerService.DEBUG_DOMAIN_VERIFICATION;

import android.annotation.NonNull;
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.content.pm.IntentFilterVerificationInfo;
@@ -2486,8 +2487,7 @@ final class Settings {
        }
    }

    boolean readLPw(PackageManagerService service, List<UserInfo> users, int sdkVersion,
            boolean onlyCore) {
    boolean readLPw(@NonNull List<UserInfo> users) {
        FileInputStream str = null;
        if (mBackupSettingsFilename.exists()) {
            try {
@@ -2583,7 +2583,7 @@ final class Settings {
                    String userStr = parser.getAttributeValue(null, ATTR_USER);
                    String codeStr = parser.getAttributeValue(null, ATTR_CODE);
                    if (name != null) {
                        int userId = 0;
                        int userId = UserHandle.USER_SYSTEM;
                        boolean andCode = true;
                        try {
                            if (userStr != null) {
@@ -2672,14 +2672,8 @@ final class Settings {
        if (PackageManagerService.CLEAR_RUNTIME_PERMISSIONS_ON_UPGRADE) {
            final VersionInfo internal = getInternalVersion();
            if (!Build.FINGERPRINT.equals(internal.fingerprint)) {
                if (users == null) {
                    mRuntimePermissionsPersistence.deleteUserRuntimePermissionsFile(
                            UserHandle.USER_OWNER);
                } else {
                for (UserInfo user : users) {
                        mRuntimePermissionsPersistence.deleteUserRuntimePermissionsFile(
                                user.id);
                    }
                    mRuntimePermissionsPersistence.deleteUserRuntimePermissionsFile(user.id);
                }
            }
        }
@@ -2722,24 +2716,16 @@ final class Settings {
            mBackupStoppedPackagesFilename.delete();
            mStoppedPackagesFilename.delete();
            // Migrate to new file format
            writePackageRestrictionsLPr(0);
        } else {
            if (users == null) {
                readPackageRestrictionsLPr(0);
            writePackageRestrictionsLPr(UserHandle.USER_SYSTEM);
        } else {
            for (UserInfo user : users) {
                readPackageRestrictionsLPr(user.id);
            }
        }
        }

        if (users == null) {
            mRuntimePermissionsPersistence.readStateForUserSyncLPr(UserHandle.USER_OWNER);
        } else {
        for (UserInfo user : users) {
            mRuntimePermissionsPersistence.readStateForUserSyncLPr(user.id);
        }
        }

        /*
         * Make sure all the updated system packages have their shared users
@@ -4321,7 +4307,7 @@ final class Settings {
            pw.print("    sourcePackage="); pw.println(p.sourcePackage);
            pw.print("    uid="); pw.print(p.uid);
                    pw.print(" gids="); pw.print(Arrays.toString(
                            p.computeGids(UserHandle.USER_OWNER)));
                            p.computeGids(UserHandle.USER_SYSTEM)));
                    pw.print(" type="); pw.print(p.type);
                    pw.print(" prot=");
                    pw.println(PermissionInfo.protectionToString(p.protectionLevel));
+2 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.server.pm;

import android.annotation.NonNull;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManagerNative;
@@ -280,7 +281,7 @@ public class UserManagerService extends IUserManager.Stub {
    }

    @Override
    public List<UserInfo> getUsers(boolean excludeDying) {
    public @NonNull List<UserInfo> getUsers(boolean excludeDying) {
        checkManageUsersPermission("query users");
        synchronized (mPackagesLock) {
            ArrayList<UserInfo> users = new ArrayList<UserInfo>(mUsers.size());
+18 −7
Original line number Diff line number Diff line
@@ -21,8 +21,11 @@ import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED;

import android.annotation.NonNull;
import android.content.Context;
import android.content.pm.PackageParser;
import android.content.pm.UserInfo;
import android.os.UserHandle;
import android.test.AndroidTestCase;
import android.util.ArrayMap;
import android.util.ArraySet;
@@ -36,6 +39,8 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.security.PublicKey;
import java.util.ArrayList;
import java.util.List;

public class PackageManagerSettingsTests extends AndroidTestCase {
    private static final String PACKAGE_NAME_2 = "com.google.app2";
@@ -45,6 +50,12 @@ public class PackageManagerSettingsTests extends AndroidTestCase {
    public static final String TAG = "PackageManagerSettingsTests";
    protected final String PREFIX = "android.content.pm";

    private @NonNull List<UserInfo> createFakeUsers() {
        ArrayList<UserInfo> users = new ArrayList<>();
        users.add(new UserInfo(UserHandle.USER_SYSTEM, "test user", UserInfo.FLAG_INITIALIZED));
        return users;
    }

    private void writeFile(File file, byte[] data) {
        file.mkdirs();
        try {
@@ -245,7 +256,7 @@ public class PackageManagerSettingsTests extends AndroidTestCase {
        writeOldFiles();
        createUserManagerServiceRef();
        Settings settings = new Settings(getContext().getFilesDir(), new Object());
        assertEquals(true, settings.readLPw(null, null, 0, false));
        assertEquals(true, settings.readLPw(createFakeUsers()));
        verifyKeySetMetaData(settings);
    }

@@ -257,11 +268,11 @@ public class PackageManagerSettingsTests extends AndroidTestCase {
        writeOldFiles();
        createUserManagerServiceRef();
        Settings settings = new Settings(getContext().getFilesDir(), new Object());
        assertEquals(true, settings.readLPw(null, null, 0, false));
        assertEquals(true, settings.readLPw(createFakeUsers()));

        /* write out, read back in and verify the same */
        settings.writeLPr();
        assertEquals(true, settings.readLPw(null, null, 0, false));
        assertEquals(true, settings.readLPw(createFakeUsers()));
        verifyKeySetMetaData(settings);
    }

@@ -269,7 +280,7 @@ public class PackageManagerSettingsTests extends AndroidTestCase {
        // Write the package files and make sure they're parsed properly the first time
        writeOldFiles();
        Settings settings = new Settings(getContext().getFilesDir(), new Object());
        assertEquals(true, settings.readLPw(null, null, 0, false));
        assertEquals(true, settings.readLPw(createFakeUsers()));
        assertNotNull(settings.peekPackageLPr(PACKAGE_NAME_3));
        assertNotNull(settings.peekPackageLPr(PACKAGE_NAME_1));

@@ -289,12 +300,12 @@ public class PackageManagerSettingsTests extends AndroidTestCase {
        writeOldFiles();
        createUserManagerServiceRef();
        Settings settings = new Settings(getContext().getFilesDir(), new Object());
        assertEquals(true, settings.readLPw(null, null, 0, false));
        assertEquals(true, settings.readLPw(createFakeUsers()));
        settings.writeLPr();

        // Create Settings again to make it read from the new files
        settings = new Settings(getContext().getFilesDir(), new Object());
        assertEquals(true, settings.readLPw(null, null, 0, false));
        assertEquals(true, settings.readLPw(createFakeUsers()));

        PackageSetting ps = settings.peekPackageLPr(PACKAGE_NAME_2);
        assertEquals(COMPONENT_ENABLED_STATE_DISABLED_USER, ps.getEnabled(0));
@@ -305,7 +316,7 @@ public class PackageManagerSettingsTests extends AndroidTestCase {
        // Write the package files and make sure they're parsed properly the first time
        writeOldFiles();
        Settings settings = new Settings(getContext().getFilesDir(), new Object());
        assertEquals(true, settings.readLPw(null, null, 0, false));
        assertEquals(true, settings.readLPw(createFakeUsers()));

        // Enable/Disable a package
        PackageSetting ps = settings.peekPackageLPr(PACKAGE_NAME_1);