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

Commit 5c5e049a authored by android-build-team Robot's avatar android-build-team Robot Committed by Android (Google) Code Review
Browse files

Merge "OMS: ensure framework overlays affect newly installed apps" into pi-dev

parents 7f1944a3 a3bd3491
Loading
Loading
Loading
Loading
+22 −1
Original line number Original line Diff line number Diff line
@@ -118,7 +118,7 @@ public class InstallOverlayTests extends BaseHostJUnit4Test {


    @Test
    @Test
    public void installPlatformSignedFrameworkOverlayAndUpdate() throws Exception {
    public void installPlatformSignedFrameworkOverlayAndUpdate() throws Exception {
        assertTrue(runDeviceTests(DEVICE_TEST_PKG, DEVICE_TEST_CLS, "expectAppResource"));
        assertTrue(runDeviceTests(DEVICE_TEST_PKG, DEVICE_TEST_CLS, "expectFrameworkResource"));


        installPackage("OverlayHostTests_FrameworkOverlayV1.apk");
        installPackage("OverlayHostTests_FrameworkOverlayV1.apk");
        setOverlayEnabled(FRAMEWORK_OVERLAY_PACKAGE_NAME, true);
        setOverlayEnabled(FRAMEWORK_OVERLAY_PACKAGE_NAME, true);
@@ -138,6 +138,27 @@ public class InstallOverlayTests extends BaseHostJUnit4Test {
                "expectFrameworkOverlayV2Resource"));
                "expectFrameworkOverlayV2Resource"));
    }
    }


    @Test
    public void enabledFrameworkOverlayMustAffectNewlyInstalledPackage() throws Exception {
        try {
            setPackageEnabled(DEVICE_TEST_PKG, false);

            installPackage("OverlayHostTests_FrameworkOverlayV1.apk");
            setOverlayEnabled(FRAMEWORK_OVERLAY_PACKAGE_NAME, true);
            assertTrue(overlayManagerContainsPackage(FRAMEWORK_OVERLAY_PACKAGE_NAME));

            setPackageEnabled(DEVICE_TEST_PKG, true);
            assertTrue(runDeviceTests(DEVICE_TEST_PKG, DEVICE_TEST_CLS,
                    "expectFrameworkOverlayV1Resource"));
        } finally {
            setPackageEnabled(DEVICE_TEST_PKG, true);
        }
    }

    private void setPackageEnabled(String pkg, boolean enabled) throws Exception {
        getDevice().executeShellCommand("cmd package " + (enabled ? "enable " : "disable ") + pkg);
    }

    private void setOverlayEnabled(String pkg, boolean enabled) throws Exception {
    private void setOverlayEnabled(String pkg, boolean enabled) throws Exception {
        getDevice().executeShellCommand("cmd overlay " + (enabled ? "enable " : "disable ") + pkg);
        getDevice().executeShellCommand("cmd overlay " + (enabled ? "enable " : "disable ") + pkg);
    }
    }
+1 −1
Original line number Original line Diff line number Diff line
@@ -61,7 +61,7 @@ public class UpdateOverlayTest {
    }
    }


    @Test
    @Test
    public void expectFrameworkOverlayResource() throws Exception {
    public void expectFrameworkResource() throws Exception {
        assertEquals("OK", mResources.getString(android.R.string.ok));
        assertEquals("OK", mResources.getString(android.R.string.ok));
    }
    }


+9 −1
Original line number Original line Diff line number Diff line
@@ -254,7 +254,11 @@ final class OverlayManagerServiceImpl {
    }
    }


    /**
    /**
     * Returns true if the settings were modified for this target.
     * Update the state of any overlays for this target.
     *
     * Returns true if the system should refresh the app's overlay paths (i.e.
     * if the settings were modified for this target, or there is at least one
     * enabled framework overlay).
     */
     */
    private boolean updateAllOverlaysForTarget(@NonNull final String targetPackageName,
    private boolean updateAllOverlaysForTarget(@NonNull final String targetPackageName,
            final int userId, final int flags) {
            final int userId, final int flags) {
@@ -277,6 +281,10 @@ final class OverlayManagerServiceImpl {
                }
                }
            }
            }
        }
        }

        // check for enabled framework overlays
        modified = modified || !getEnabledOverlayPackageNames("android", userId).isEmpty();

        return modified;
        return modified;
    }
    }