summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/notification/ManagedServices.java10
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/ManagedServicesTest.java51
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;
+ }
+ }
}