From 1ba81d6fcf6ac08e3c0b8b5d338effca1c8c61d9 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Fri, 7 Feb 2020 14:08:26 -0800 Subject: Fix tag skip and add tests for component-override Add SystemConfig parsing tests for component-override. Also fix an issue where component-override causes the next tag to be skipped. Bug: 148297212 Bug: 138458609 Test: atest SystemConfigTest Change-Id: Ifc0d02f705f3f0ffe710729310779a1d41226acb --- core/java/com/android/server/SystemConfig.java | 6 +--- .../server/systemconfig/SystemConfigTest.java | 34 ++++++++++++++++++++++ 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/core/java/com/android/server/SystemConfig.java b/core/java/com/android/server/SystemConfig.java index 74b481c938c3..14ec5f8fded1 100644 --- a/core/java/com/android/server/SystemConfig.java +++ b/core/java/com/android/server/SystemConfig.java @@ -902,7 +902,6 @@ public class SystemConfig { } break; case "component-override": { readComponentOverrides(parser, permFile); - XmlUtils.skipCurrentTag(parser); } break; case "backup-transport-whitelisted-service": { if (allowFeatures) { @@ -1398,8 +1397,7 @@ public class SystemConfig { final int depth = parser.getDepth(); while (XmlUtils.nextElementWithin(parser, depth)) { - String name = parser.getName(); - if ("component".equals(name)) { + if ("component".equals(parser.getName())) { String clsname = parser.getAttributeValue(null, "class"); String enabled = parser.getAttributeValue(null, "enabled"); if (clsname == null) { @@ -1427,8 +1425,6 @@ public class SystemConfig { } componentEnabledStates.put(clsname, !"false".equals(enabled)); - } else { - XmlUtils.skipCurrentTag(parser); } } } diff --git a/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java b/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java index fde0ddffa365..4d0481be20b3 100644 --- a/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java +++ b/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java @@ -144,6 +144,40 @@ public class SystemConfigTest { assertEquals("Incorrect blacklist", expectedBlack, actualBlack); } + @Test + public void testComponentOverride() throws Exception { + final String contents = + "" + + " \n" + + " " + + " \n" + + " " + + " \n" + + " \n" + + " \n" + + ""; + + final File folder = createTempSubfolder("folder"); + createTempFile(folder, "component-override.xml", contents); + + mSysConfig.readPermissions(folder, /* No permission needed anyway */ 0); + + final ArrayMap packageOneExpected = new ArrayMap<>(); + packageOneExpected.put("com.android.package1.Full", true); + packageOneExpected.put("com.android.package1.Relative", false); + + final ArrayMap packageTwoExpected = new ArrayMap<>(); + packageTwoExpected.put("com.android.package3.Relative2", true); + + final Map packageOne = mSysConfig.getComponentsEnabledStates( + "com.android.package1"); + assertEquals(packageOneExpected, packageOne); + + final Map packageTwo = mSysConfig.getComponentsEnabledStates( + "com.android.package2"); + assertEquals(packageTwoExpected, packageTwo); + } + /** * Creates folderName/fileName in the mTemporaryFolder and fills it with the contents. * @param folderName subdirectory of mTemporaryFolder to put the file, creating if needed -- cgit v1.2.3-59-g8ed1b