Ensure only one approved NAS

Bug: 186565970
Test: atest NotificationAssistantsTest
Change-Id: I72ef874bd215396de068d0d989d4d7491848c8c5
This commit is contained in:
Chloris Kuo
2021-05-10 16:03:54 -07:00
parent d74e0b8f19
commit fc50baebdb
2 changed files with 32 additions and 0 deletions

View File

@@ -9473,6 +9473,19 @@ public class NotificationManagerService extends SystemService {
}
}
@Override
protected void addApprovedList(String approved, int userId, boolean isPrimary,
String userSet) {
if (!TextUtils.isEmpty(approved)) {
String[] approvedArray = approved.split(ENABLED_SERVICES_SEPARATOR);
if (approvedArray.length > 1) {
Slog.d(TAG, "More than one approved assistants");
approved = approvedArray[0];
}
}
super.addApprovedList(approved, userId, isPrimary, userSet);
}
public NotificationAssistants(Context context, Object lock, UserProfiles up,
IPackageManager pm) {
super(context, lock, up, pm);

View File

@@ -177,6 +177,25 @@ public class NotificationAssistantsTest extends UiServiceTestCase {
assertTrue(mAssistants.mIsUserChanged.get(0));
}
@Test
public void testReadXml_multiApproved() throws Exception {
String xml = "<enabled_assistants version=\"4\" defaults=\"b/b\">"
+ "<service_listing approved=\"a/a:b/b\" user=\"0\" primary=\"true\""
+ "user_changed=\"true\"/>"
+ "</enabled_assistants>";
final TypedXmlPullParser parser = Xml.newFastPullParser();
parser.setInput(new BufferedInputStream(
new ByteArrayInputStream(xml.toString().getBytes())), null);
parser.nextTag();
mAssistants.readXml(parser, null, false, UserHandle.USER_ALL);
assertEquals(1, mAssistants.getAllowedComponents(0).size());
assertEquals(new ArrayList(Arrays.asList(new ComponentName("a", "a"))),
mAssistants.getAllowedComponents(0));
}
@Test
public void testXmlUpgradeExistingApprovedComponents() throws Exception {
String xml = "<enabled_assistants version=\"2\" defaults=\"b\\b\">"