Merge "Fix NPE during restore" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c9c32d5f19
@@ -570,10 +570,12 @@ abstract public class ManagedServices {
|
|||||||
protected final void migrateToXml() {
|
protected final void migrateToXml() {
|
||||||
for (UserInfo user : mUm.getUsers()) {
|
for (UserInfo user : mUm.getUsers()) {
|
||||||
final ContentResolver cr = mContext.getContentResolver();
|
final ContentResolver cr = mContext.getContentResolver();
|
||||||
addApprovedList(Settings.Secure.getStringForUser(
|
if (!TextUtils.isEmpty(getConfig().secureSettingName)) {
|
||||||
cr,
|
addApprovedList(Settings.Secure.getStringForUser(
|
||||||
getConfig().secureSettingName,
|
cr,
|
||||||
user.id), user.id, true);
|
getConfig().secureSettingName,
|
||||||
|
user.id), user.id, true);
|
||||||
|
}
|
||||||
if (!TextUtils.isEmpty(getConfig().secondarySettingName)) {
|
if (!TextUtils.isEmpty(getConfig().secondarySettingName)) {
|
||||||
addApprovedList(Settings.Secure.getStringForUser(
|
addApprovedList(Settings.Secure.getStringForUser(
|
||||||
cr,
|
cr,
|
||||||
|
|||||||
@@ -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
|
@Test
|
||||||
public void testReadXml() throws Exception {
|
public void testReadXml() throws Exception {
|
||||||
for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) {
|
for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) {
|
||||||
@@ -1766,4 +1796,25 @@ public class ManagedServicesTest extends UiServiceTestCase {
|
|||||||
return true;
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user