Merge "Fix NPE during restore" into sc-dev

This commit is contained in:
Julia Reynolds
2021-07-08 18:02:44 +00:00
committed by Android (Google) Code Review
2 changed files with 57 additions and 4 deletions

View File

@@ -570,10 +570,12 @@ abstract public class ManagedServices {
protected final void migrateToXml() {
for (UserInfo user : mUm.getUsers()) {
final ContentResolver cr = mContext.getContentResolver();
addApprovedList(Settings.Secure.getStringForUser(
cr,
getConfig().secureSettingName,
user.id), user.id, true);
if (!TextUtils.isEmpty(getConfig().secureSettingName)) {
addApprovedList(Settings.Secure.getStringForUser(
cr,
getConfig().secureSettingName,
user.id), user.id, true);
}
if (!TextUtils.isEmpty(getConfig().secondarySettingName)) {
addApprovedList(Settings.Secure.getStringForUser(
cr,

View File

@@ -278,6 +278,36 @@ public class ManagedServicesTest extends UiServiceTestCase {
}
}
@Test
public void testReadXml_noLongerMigrateFromSettings() throws Exception {
for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) {
ManagedServices service = new TestManagedServicesNoSettings(getContext(), mLock,
mUserProfiles, mIpm, approvalLevel);
// approved services aren't in xml
TypedXmlPullParser parser = Xml.newFastPullParser();
parser.setInput(new BufferedInputStream(new ByteArrayInputStream(new byte[]{})),
null);
writeExpectedValuesToSettings(approvalLevel);
service.migrateToXml();
// No crash? success
ArrayMap<Integer, String> verifyMap = approvalLevel == APPROVAL_BY_COMPONENT
? mExpectedPrimary.get(service.mApprovalLevel)
: mExpectedSecondary.get(service.mApprovalLevel);
for (int userId : verifyMap.keySet()) {
for (String verifyValue : verifyMap.get(userId).split(":")) {
if (!TextUtils.isEmpty(verifyValue)) {
assertFalse("service type " + service.mApprovalLevel + ":"
+ verifyValue + " is allowed for user " + userId,
service.isPackageOrComponentAllowed(verifyValue, userId));
}
}
}
}
}
@Test
public void testReadXml() throws Exception {
for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) {
@@ -1766,4 +1796,25 @@ public class ManagedServicesTest extends UiServiceTestCase {
return true;
}
}
class TestManagedServicesNoSettings extends TestManagedServices {
public TestManagedServicesNoSettings(Context context, Object mutex, UserProfiles userProfiles,
IPackageManager pm, int approvedServiceType) {
super(context, mutex, userProfiles, pm, approvedServiceType);
}
@Override
protected Config getConfig() {
Config c = super.getConfig();
c.secureSettingName = null;
c.secondarySettingName = null;
return c;
}
@Override
public boolean shouldReflectToSettings() {
return false;
}
}
}