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

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

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

Change-Id: Ia31b522b2f69f3d62de54cdba0deb020a56421e1
parents c259bda1 02dbb9d0
Loading
Loading
Loading
Loading
+9 −1
Original line number Original line Diff line number Diff line
@@ -239,6 +239,14 @@ public class ThemeOverlayApplier implements Dumpable {
                    + category + ": " + enabled);
                    + 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);
        transaction.setEnabled(identifier, enabled, currentUser);
        if (currentUser != UserHandle.SYSTEM.getIdentifier()
        if (currentUser != UserHandle.SYSTEM.getIdentifier()
                && SYSTEM_USER_CATEGORIES.contains(category)) {
                && 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
        // Do not apply Launcher or Theme picker overlays to managed users. Apps are not
        // installed in there.
        // installed in there.
        OverlayInfo overlayInfo = mOverlayManager.getOverlayInfo(identifier, UserHandle.SYSTEM);
        overlayInfo = mOverlayManager.getOverlayInfo(identifier, UserHandle.SYSTEM);
        if (overlayInfo == null || overlayInfo.targetPackageName.equals(mLauncherPackage)
        if (overlayInfo == null || overlayInfo.targetPackageName.equals(mLauncherPackage)
                || overlayInfo.targetPackageName.equals(mThemePickerPackage)) {
                || overlayInfo.targetPackageName.equals(mThemePickerPackage)) {
            return;
            return;
+21 −1
Original line number Original line Diff line number Diff line
@@ -98,6 +98,7 @@ public class ThemeOverlayApplierTest extends SysuiTestCase {
    OverlayManagerTransaction.Builder mTransactionBuilder;
    OverlayManagerTransaction.Builder mTransactionBuilder;


    private ThemeOverlayApplier mManager;
    private ThemeOverlayApplier mManager;
    private boolean mGetOverlayInfoEnabled = true;


    @Before
    @Before
    public void setup() throws Exception {
    public void setup() throws Exception {
@@ -159,7 +160,12 @@ public class ThemeOverlayApplierTest extends SysuiTestCase {
        OverlayInfo launcherTargetInfo = new OverlayInfo("packageName", LAUNCHER_PACKAGE,
        OverlayInfo launcherTargetInfo = new OverlayInfo("packageName", LAUNCHER_PACKAGE,
                null, null, "/", 0, 0, 0, false);
                null, null, "/", 0, 0, 0, false);
        when(mOverlayManager.getOverlayInfo(any(OverlayIdentifier.class), any()))
        when(mOverlayManager.getOverlayInfo(any(OverlayIdentifier.class), any()))
                .thenReturn(launcherTargetInfo);
                .thenAnswer(answer -> {
                    if (mGetOverlayInfoEnabled) {
                        return launcherTargetInfo;
                    }
                    return null;
                });
        clearInvocations(mOverlayManager);
        clearInvocations(mOverlayManager);
        verify(mDumpManager).registerDumpable(any(), any());
        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
    @Test
    public void applyCurrentUserOverlays_createsPendingOverlays() {
    public void applyCurrentUserOverlays_createsPendingOverlays() {
        FabricatedOverlay[] pendingCreation = new FabricatedOverlay[]{
        FabricatedOverlay[] pendingCreation = new FabricatedOverlay[]{