Allow mocking RuntimePermissionsPersistence in PM Settings.
So that tests won't crash for unable to read/write runtime permissions. Fixes: 162273062 Test: atest PackageManagerSettingsTests Change-Id: Iaeb3bab6309b921090bac6254dd4ac5ee69e62b3
This commit is contained in:
@@ -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;
|
||||
@@ -2588,7 +2589,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),
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user