diff options
| -rw-r--r-- | services/core/java/com/android/server/notification/ManagedServices.java | 10 | ||||
| -rw-r--r-- | services/tests/uiservicestests/src/com/android/server/notification/ManagedServicesTest.java | 51 |
2 files changed, 57 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/notification/ManagedServices.java b/services/core/java/com/android/server/notification/ManagedServices.java index a3daae4d854b..bccc52fe350a 100644 --- a/services/core/java/com/android/server/notification/ManagedServices.java +++ b/services/core/java/com/android/server/notification/ManagedServices.java @@ -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, diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ManagedServicesTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ManagedServicesTest.java index 825e53e15ea8..f9663f200b56 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/ManagedServicesTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/ManagedServicesTest.java @@ -279,6 +279,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}) { ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, @@ -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; + } + } } |