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

This commit is contained in:
android-build-team Robot
2018-04-30 18:02:29 +00:00
committed by Android (Google) Code Review
3 changed files with 32 additions and 3 deletions

View File

@@ -118,7 +118,7 @@ public class InstallOverlayTests extends BaseHostJUnit4Test {
@Test
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");
setOverlayEnabled(FRAMEWORK_OVERLAY_PACKAGE_NAME, true);
@@ -138,6 +138,27 @@ public class InstallOverlayTests extends BaseHostJUnit4Test {
"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 {
getDevice().executeShellCommand("cmd overlay " + (enabled ? "enable " : "disable ") + pkg);
}

View File

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

View File

@@ -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,
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;
}