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

Commit b05badb0 authored by Lucas Dupin's avatar Lucas Dupin Committed by Automerger Merge Worker
Browse files

Merge "Verify if overlay exists before applying it" into sc-dev am: d9c8cc67 am: 14e34f96

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

Change-Id: I7ed425bd2543831a28502658fb3e18d849ece575
parents f6420f4d 14e34f96
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -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;
+21 −1
Original line number Diff line number Diff line
@@ -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[]{