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

Commit e0628557 authored by Hai Zhang's avatar Hai Zhang Committed by Android (Google) Code Review
Browse files

Merge "Allow mocking RuntimePermissionsPersistence in PM Settings."

parents 78e4347e b2827240
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -331,6 +331,7 @@ import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.FrameworkStatsLog;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;
import com.android.permission.persistence.RuntimePermissionsPersistence;
import com.android.server.AttributeCache;
import com.android.server.DeviceIdleInternal;
import com.android.server.EventLogTags;
@@ -2590,7 +2591,7 @@ public class PackageManagerService extends IPackageManager.Stub
                (i, pm) ->
                        new Settings(Environment.getDataDirectory(),
                                i.getPermissionManagerServiceInternal().getPermissionSettings(),
                                lock),
                                RuntimePermissionsPersistence.createInstance(), lock),
                new Injector.LocalServicesProducer<>(ActivityTaskManagerInternal.class),
                new Injector.LocalServicesProducer<>(ActivityManagerInternal.class),
                new Injector.LocalServicesProducer<>(DeviceIdleInternal.class),
+7 −5
Original line number Diff line number Diff line
@@ -435,10 +435,11 @@ public final class Settings {
    }

    Settings(File dataDir, PermissionSettings permission,
            Object lock) {
            RuntimePermissionsPersistence runtimePermissionsPersistence, Object lock) {
        mLock = lock;
        mPermissions = permission;
        mRuntimePermissionsPersistence = new RuntimePermissionPersistence(mLock);
        mRuntimePermissionsPersistence = new RuntimePermissionPersistence(
                runtimePermissionsPersistence, mLock);

        mSystemDir = new File(dataDir, "system");
        mSystemDir.mkdirs();
@@ -5381,8 +5382,7 @@ public final class Settings {

        private String mExtendedFingerprint;

        private final RuntimePermissionsPersistence mPersistence =
                RuntimePermissionsPersistence.createInstance();
        private final RuntimePermissionsPersistence mPersistence;

        private final Handler mHandler = new MyHandler();

@@ -5407,7 +5407,9 @@ public final class Settings {
        // The mapping keys are user ids.
        private final SparseBooleanArray mPermissionUpgradeNeeded = new SparseBooleanArray();

        public RuntimePermissionPersistence(Object persistenceLock) {
        public RuntimePermissionPersistence(RuntimePermissionsPersistence persistence,
                Object persistenceLock) {
            mPersistence = persistence;
            mPersistenceLock = persistenceLock;
        }

+25 −14
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;

import com.android.permission.persistence.RuntimePermissionsPersistence;
import com.android.server.LocalServices;
import com.android.server.pm.permission.PermissionSettings;

@@ -86,6 +87,8 @@ public class PackageManagerSettingsTests {

    @Mock
    PermissionSettings mPermissionSettings;
    @Mock
    RuntimePermissionsPersistence mRuntimePermissionsPersistence;

    @Before
    public void initializeMocks() {
@@ -106,7 +109,8 @@ public class PackageManagerSettingsTests {
        writeOldFiles();
        final Context context = InstrumentationRegistry.getContext();
        final Object lock = new Object();
        Settings settings = new Settings(context.getFilesDir(), mPermissionSettings, lock);
        Settings settings = new Settings(context.getFilesDir(), mPermissionSettings,
                mRuntimePermissionsPersistence, lock);
        assertThat(settings.readLPw(createFakeUsers()), is(true));
        verifyKeySetMetaData(settings);
    }
@@ -119,7 +123,8 @@ public class PackageManagerSettingsTests {
        writeOldFiles();
        final Context context = InstrumentationRegistry.getContext();
        final Object lock = new Object();
        Settings settings = new Settings(context.getFilesDir(), mPermissionSettings, lock);
        Settings settings = new Settings(context.getFilesDir(), mPermissionSettings,
                mRuntimePermissionsPersistence, lock);
        assertThat(settings.readLPw(createFakeUsers()), is(true));

        // write out, read back in and verify the same
@@ -134,7 +139,8 @@ public class PackageManagerSettingsTests {
        writeOldFiles();
        final Context context = InstrumentationRegistry.getContext();
        final Object lock = new Object();
        Settings settings = new Settings(context.getFilesDir(), mPermissionSettings, lock);
        Settings settings = new Settings(context.getFilesDir(), mPermissionSettings,
                mRuntimePermissionsPersistence, lock);
        assertThat(settings.readLPw(createFakeUsers()), is(true));
        assertThat(settings.getPackageLPr(PACKAGE_NAME_3), is(notNullValue()));
        assertThat(settings.getPackageLPr(PACKAGE_NAME_1), is(notNullValue()));
@@ -155,12 +161,14 @@ public class PackageManagerSettingsTests {
        writeOldFiles();
        final Context context = InstrumentationRegistry.getContext();
        final Object lock = new Object();
        Settings settings = new Settings(context.getFilesDir(), mPermissionSettings, lock);
        Settings settings = new Settings(context.getFilesDir(), mPermissionSettings,
                mRuntimePermissionsPersistence, lock);
        assertThat(settings.readLPw(createFakeUsers()), is(true));
        settings.writeLPr();

        // Create Settings again to make it read from the new files
        settings = new Settings(context.getFilesDir(), mPermissionSettings, lock);
        settings = new Settings(context.getFilesDir(), mPermissionSettings,
                mRuntimePermissionsPersistence, lock);
        assertThat(settings.readLPw(createFakeUsers()), is(true));

        PackageSetting ps = settings.getPackageLPr(PACKAGE_NAME_2);
@@ -183,7 +191,7 @@ public class PackageManagerSettingsTests {
        writePackageRestrictions_noSuspendingPackageXml(0);
        final Object lock = new Object();
        final Context context = InstrumentationRegistry.getTargetContext();
        final Settings settingsUnderTest = new Settings(context.getFilesDir(), null, lock);
        final Settings settingsUnderTest = new Settings(context.getFilesDir(), null, null, lock);
        settingsUnderTest.mPackages.put(PACKAGE_NAME_1, createPackageSetting(PACKAGE_NAME_1));
        settingsUnderTest.mPackages.put(PACKAGE_NAME_2, createPackageSetting(PACKAGE_NAME_2));
        settingsUnderTest.readPackageRestrictionsLPr(0);
@@ -206,7 +214,7 @@ public class PackageManagerSettingsTests {
        writePackageRestrictions_noSuspendParamsMapXml(0);
        final Object lock = new Object();
        final Context context = InstrumentationRegistry.getTargetContext();
        final Settings settingsUnderTest = new Settings(context.getFilesDir(), null, lock);
        final Settings settingsUnderTest = new Settings(context.getFilesDir(), null, null, lock);
        settingsUnderTest.mPackages.put(PACKAGE_NAME_1, createPackageSetting(PACKAGE_NAME_1));
        settingsUnderTest.readPackageRestrictionsLPr(0);

@@ -233,7 +241,8 @@ public class PackageManagerSettingsTests {
    @Test
    public void testReadWritePackageRestrictions_suspendInfo() {
        final Context context = InstrumentationRegistry.getTargetContext();
        final Settings settingsUnderTest = new Settings(context.getFilesDir(), null, new Object());
        final Settings settingsUnderTest = new Settings(context.getFilesDir(), null, null,
                new Object());
        final PackageSetting ps1 = createPackageSetting(PACKAGE_NAME_1);
        final PackageSetting ps2 = createPackageSetting(PACKAGE_NAME_2);
        final PackageSetting ps3 = createPackageSetting(PACKAGE_NAME_3);
@@ -330,7 +339,8 @@ public class PackageManagerSettingsTests {
    @Test
    public void testReadWritePackageRestrictions_distractionFlags() {
        final Context context = InstrumentationRegistry.getTargetContext();
        final Settings settingsUnderTest = new Settings(context.getFilesDir(), null, new Object());
        final Settings settingsUnderTest = new Settings(context.getFilesDir(), null, null,
                new Object());
        final PackageSetting ps1 = createPackageSetting(PACKAGE_NAME_1);
        final PackageSetting ps2 = createPackageSetting(PACKAGE_NAME_2);
        final PackageSetting ps3 = createPackageSetting(PACKAGE_NAME_3);
@@ -381,7 +391,8 @@ public class PackageManagerSettingsTests {
        writeOldFiles();
        final Context context = InstrumentationRegistry.getContext();
        final Object lock = new Object();
        Settings settings = new Settings(context.getFilesDir(), mPermissionSettings, lock);
        Settings settings = new Settings(context.getFilesDir(), mPermissionSettings,
                mRuntimePermissionsPersistence, lock);
        assertThat(settings.readLPw(createFakeUsers()), is(true));

        // Enable/Disable a package
@@ -558,8 +569,8 @@ public class PackageManagerSettingsTests {
    public void testUpdatePackageSetting03() {
        final Context context = InstrumentationRegistry.getContext();
        final Object lock = new Object();
        final Settings testSettings01 =
                new Settings(context.getFilesDir(), mPermissionSettings, lock);
        final Settings testSettings01 = new Settings(context.getFilesDir(), mPermissionSettings,
                mRuntimePermissionsPersistence, lock);
        final SharedUserSetting testUserSetting01 = createSharedUserSetting(
                testSettings01, "TestUser", 10064, 0 /*pkgFlags*/, 0 /*pkgPrivateFlags*/);
        final PackageSetting testPkgSetting01 =
@@ -673,8 +684,8 @@ public class PackageManagerSettingsTests {
    public void testCreateNewSetting03() {
        final Context context = InstrumentationRegistry.getContext();
        final Object lock = new Object();
        final Settings testSettings01 =
                new Settings(context.getFilesDir(), mPermissionSettings, lock);
        final Settings testSettings01 = new Settings(context.getFilesDir(), mPermissionSettings,
                mRuntimePermissionsPersistence, lock);
        final SharedUserSetting testUserSetting01 = createSharedUserSetting(
                testSettings01, "TestUser", 10064, 0 /*pkgFlags*/, 0 /*pkgPrivateFlags*/);
        final PackageSetting testPkgSetting01 = Settings.createNewSetting(