Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1ba81d6f authored by Ryan Mitchell's avatar Ryan Mitchell
Browse files

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
parent dc7efcc2
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -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);
            }
        }
    }
+34 −0
Original line number Diff line number Diff line
@@ -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