summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ryan Mitchell <rtmitchell@google.com> 2020-02-07 14:08:26 -0800
committer Ryan Mitchell <rtmitchell@google.com> 2020-02-07 14:13:41 -0800
commit1ba81d6fcf6ac08e3c0b8b5d338effca1c8c61d9 (patch)
treed7ec354b74081567672585c0493bc7bd1ff821fe
parentdc7efcc2ce8a57ae0a5d57825e08e8d6ad23583f (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.java6
-rw-r--r--services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java34
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