Merge "Verify if overlay exists before applying it" into sc-dev am: d9c8cc672c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15179610

Change-Id: I9d683fda1e6bb00899306aab7052bbab27e87c76
This commit is contained in:
Lucas Dupin
2021-07-02 00:22:32 +00:00
committed by Automerger Merge Worker
2 changed files with 30 additions and 2 deletions

View File

@@ -239,6 +239,14 @@ public class ThemeOverlayApplier implements Dumpable {
+ category + ": " + enabled);
}
OverlayInfo overlayInfo = mOverlayManager.getOverlayInfo(identifier,
UserHandle.of(currentUser));
if (overlayInfo == null) {
Log.i(TAG, "Won't enable " + identifier + ", it doesn't exist for user"
+ currentUser);
return;
}
transaction.setEnabled(identifier, enabled, currentUser);
if (currentUser != UserHandle.SYSTEM.getIdentifier()
&& SYSTEM_USER_CATEGORIES.contains(category)) {
@@ -247,7 +255,7 @@ public class ThemeOverlayApplier implements Dumpable {
// Do not apply Launcher or Theme picker overlays to managed users. Apps are not
// installed in there.
OverlayInfo overlayInfo = mOverlayManager.getOverlayInfo(identifier, UserHandle.SYSTEM);
overlayInfo = mOverlayManager.getOverlayInfo(identifier, UserHandle.SYSTEM);
if (overlayInfo == null || overlayInfo.targetPackageName.equals(mLauncherPackage)
|| overlayInfo.targetPackageName.equals(mThemePickerPackage)) {
return;

View File

@@ -98,6 +98,7 @@ public class ThemeOverlayApplierTest extends SysuiTestCase {
OverlayManagerTransaction.Builder mTransactionBuilder;
private ThemeOverlayApplier mManager;
private boolean mGetOverlayInfoEnabled = true;
@Before
public void setup() throws Exception {
@@ -159,7 +160,12 @@ public class ThemeOverlayApplierTest extends SysuiTestCase {
OverlayInfo launcherTargetInfo = new OverlayInfo("packageName", LAUNCHER_PACKAGE,
null, null, "/", 0, 0, 0, false);
when(mOverlayManager.getOverlayInfo(any(OverlayIdentifier.class), any()))
.thenReturn(launcherTargetInfo);
.thenAnswer(answer -> {
if (mGetOverlayInfoEnabled) {
return launcherTargetInfo;
}
return null;
});
clearInvocations(mOverlayManager);
verify(mDumpManager).registerDumpable(any(), any());
}
@@ -207,6 +213,20 @@ public class ThemeOverlayApplierTest extends SysuiTestCase {
}
}
@Test
public void enablesOverlays_onlyIfItExistsForUser() {
mGetOverlayInfoEnabled = false;
Set<UserHandle> userHandles = Sets.newHashSet(TEST_USER_HANDLES);
mManager.applyCurrentUserOverlays(ALL_CATEGORIES_MAP, null, TEST_USER.getIdentifier(),
userHandles);
for (OverlayIdentifier overlayPackage : ALL_CATEGORIES_MAP.values()) {
verify(mTransactionBuilder, never()).setEnabled(eq(overlayPackage), eq(true),
eq(TEST_USER.getIdentifier()));
}
}
@Test
public void applyCurrentUserOverlays_createsPendingOverlays() {
FabricatedOverlay[] pendingCreation = new FabricatedOverlay[]{