diff options
| author | 2020-02-07 14:08:26 -0800 | |
|---|---|---|
| committer | 2020-02-07 14:13:41 -0800 | |
| commit | 1ba81d6fcf6ac08e3c0b8b5d338effca1c8c61d9 (patch) | |
| tree | d7ec354b74081567672585c0493bc7bd1ff821fe | |
| parent | dc7efcc2ce8a57ae0a5d57825e08e8d6ad23583f (diff) | |
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
| -rw-r--r-- | core/java/com/android/server/SystemConfig.java | 6 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/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 = + "<permissions>" + + " <component-override package=\"com.android.package1\">\n" + + " <component class=\"com.android.package1.Full\" enabled=\"true\"/>" + + " <component class=\".Relative\" enabled=\"false\" />\n" + + " </component-override>" + + " <component-override package=\"com.android.package2\" >\n" + + " <component class=\"com.android.package3.Relative2\" enabled=\"yes\" />\n" + + " </component-override>\n" + + "</permissions>"; + + final File folder = createTempSubfolder("folder"); + createTempFile(folder, "component-override.xml", contents); + + mSysConfig.readPermissions(folder, /* No permission needed anyway */ 0); + + final ArrayMap<String, Boolean> packageOneExpected = new ArrayMap<>(); + packageOneExpected.put("com.android.package1.Full", true); + packageOneExpected.put("com.android.package1.Relative", false); + + final ArrayMap<String, Boolean> packageTwoExpected = new ArrayMap<>(); + packageTwoExpected.put("com.android.package3.Relative2", true); + + final Map<String, Boolean> packageOne = mSysConfig.getComponentsEnabledStates( + "com.android.package1"); + assertEquals(packageOneExpected, packageOne); + + final Map<String, Boolean> 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 |