Loading services/core/java/com/android/server/pm/PackageManagerService.java +2 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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), services/core/java/com/android/server/pm/Settings.java +7 −5 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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(); Loading @@ -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; } Loading services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java +25 −14 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -86,6 +87,8 @@ public class PackageManagerSettingsTests { @Mock PermissionSettings mPermissionSettings; @Mock RuntimePermissionsPersistence mRuntimePermissionsPersistence; @Before public void initializeMocks() { Loading @@ -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); } Loading @@ -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 Loading @@ -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())); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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 Loading Loading @@ -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 = Loading Loading @@ -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( Loading Loading
services/core/java/com/android/server/pm/PackageManagerService.java +2 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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),
services/core/java/com/android/server/pm/Settings.java +7 −5 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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(); Loading @@ -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; } Loading
services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java +25 −14 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -86,6 +87,8 @@ public class PackageManagerSettingsTests { @Mock PermissionSettings mPermissionSettings; @Mock RuntimePermissionsPersistence mRuntimePermissionsPersistence; @Before public void initializeMocks() { Loading @@ -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); } Loading @@ -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 Loading @@ -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())); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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 Loading Loading @@ -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 = Loading Loading @@ -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( Loading