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

Commit 02dbb9d0 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

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

Change-Id: I4f783512a6a8a5321c650b88f0204871750e84e7
parents 78878ae9 d9c8cc67
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[]{