From 4552300ef2ee59c8f03f2bcdc087d48cb7a58bd3 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Tue, 12 Sep 2017 09:43:57 -0400 Subject: [PATCH] Trim invalid users Change-Id: Ie7eab5c38ed7c6a58dcf2fa8c568fb576306852a Fixes: 64725440 Test: runtest systemui-notification --- .../server/notification/ManagedServices.java | 6 +++++- .../server/notification/ManagedServicesTest.java | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/notification/ManagedServices.java b/services/core/java/com/android/server/notification/ManagedServices.java index 91ecb3aad26e8..add4184fc129d 100644 --- a/services/core/java/com/android/server/notification/ManagedServices.java +++ b/services/core/java/com/android/server/notification/ManagedServices.java @@ -99,6 +99,7 @@ abstract public class ManagedServices { protected final Object mMutex; private final UserProfiles mUserProfiles; private final IPackageManager mPm; + private final UserManager mUm; private final Config mConfig; // contains connections to all connected services, including app services @@ -138,6 +139,7 @@ abstract public class ManagedServices { mPm = pm; mConfig = getConfig(); mApprovalLevel = APPROVAL_BY_COMPONENT; + mUm = (UserManager) mContext.getSystemService(Context.USER_SERVICE); } abstract protected Config getConfig(); @@ -296,7 +298,9 @@ abstract public class ManagedServices { final int userId = XmlUtils.readIntAttribute(parser, ATT_USER_ID, 0); final boolean isPrimary = XmlUtils.readBooleanAttribute(parser, ATT_IS_PRIMARY, true); - addApprovedList(approved, userId, isPrimary); + if (mUm.getUserInfo(userId) != null) { + addApprovedList(approved, userId, isPrimary); + } mUseXml = true; } } diff --git a/services/tests/notification/src/com/android/server/notification/ManagedServicesTest.java b/services/tests/notification/src/com/android/server/notification/ManagedServicesTest.java index 613f01c203000..a4b9b256aa075 100644 --- a/services/tests/notification/src/com/android/server/notification/ManagedServicesTest.java +++ b/services/tests/notification/src/com/android/server/notification/ManagedServicesTest.java @@ -254,6 +254,14 @@ public class ManagedServicesTest extends NotificationTestCase { loadXml(service); verifyExpectedApprovedEntries(service); + + int[] invalidUsers = new int[] {98, 99}; + for (int invalidUser : invalidUsers) { + assertFalse("service type " + service.mApprovalLevel + ":" + + invalidUser + " is allowed for user " + invalidUser, + service.isPackageOrComponentAllowed( + String.valueOf(invalidUser), invalidUser)); + } } } @@ -616,6 +624,14 @@ public class ManagedServicesTest extends NotificationTestCase { xml.append(getXmlEntry( mExpectedSecondary.get(service.mApprovalLevel).get(userId), userId, false)); } + xml.append("<" + ManagedServices.TAG_MANAGED_SERVICES + " " + + ManagedServices.ATT_USER_ID + "=\"99\" " + + ManagedServices.ATT_IS_PRIMARY + "=\"true\" " + + ManagedServices.ATT_APPROVED_LIST + "=\"99\" />\n"); + xml.append("<" + ManagedServices.TAG_MANAGED_SERVICES + " " + + ManagedServices.ATT_USER_ID + "=\"98\" " + + ManagedServices.ATT_IS_PRIMARY + "=\"false\" " + + ManagedServices.ATT_APPROVED_LIST + "=\"98\" />\n"); xml.append(""); XmlPullParser parser = Xml.newPullParser();