Merge "Verify if overlay exists before applying it" into sc-dev am: d9c8cc672c am: 02dbb9d0dd
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15179610 Change-Id: Ia31b522b2f69f3d62de54cdba0deb020a56421e1
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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[]{
|
||||
|
||||
Reference in New Issue
Block a user