diff --git a/core/tests/overlaytests/host/src/com/android/server/om/hosttest/InstallOverlayTests.java b/core/tests/overlaytests/host/src/com/android/server/om/hosttest/InstallOverlayTests.java index 99b6421d2bc79..267cb365748ea 100644 --- a/core/tests/overlaytests/host/src/com/android/server/om/hosttest/InstallOverlayTests.java +++ b/core/tests/overlaytests/host/src/com/android/server/om/hosttest/InstallOverlayTests.java @@ -163,6 +163,20 @@ public class InstallOverlayTests extends BaseHostJUnit4Test { assertTrue(overlayManagerContainsPackage(APP_OVERLAY_PACKAGE_NAME)); } + @Test + public void changesPersistedWhenUninstallingDisabledOverlay() throws Exception { + getDevice().enableAdbRoot(); + assertFalse(getDevice().executeShellCommand("cat /data/system/overlays.xml") + .contains(APP_OVERLAY_PACKAGE_NAME)); + installPackage("OverlayHostTests_AppOverlayV1.apk"); + assertTrue(getDevice().executeShellCommand("cat /data/system/overlays.xml") + .contains(APP_OVERLAY_PACKAGE_NAME)); + uninstallPackage(APP_OVERLAY_PACKAGE_NAME); + delay(); + assertFalse(getDevice().executeShellCommand("cat /data/system/overlays.xml") + .contains(APP_OVERLAY_PACKAGE_NAME)); + } + private void delay() { try { Thread.sleep(1000); diff --git a/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java b/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java index ec53e98ec5479..3a84b1e18e36d 100644 --- a/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java +++ b/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java @@ -452,10 +452,7 @@ final class OverlayManagerServiceImpl { final OverlayInfo overlayInfo = mSettings.getOverlayInfo(packageName, userId); if (mSettings.remove(packageName, userId)) { removeIdmapIfPossible(overlayInfo); - if (overlayInfo.isEnabled()) { - // Only trigger updates if the overlay was enabled. - mListener.onOverlaysChanged(overlayInfo.targetPackageName, userId); - } + mListener.onOverlaysChanged(overlayInfo.targetPackageName, userId); } } catch (OverlayManagerSettings.BadKeyException e) { Slog.e(TAG, "failed to remove overlay", e);