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

Commit 805c0388 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Move optimization to later part of pipeline" into tm-dev am: c912ad84

parents 28fa40ea c912ad84
Loading
Loading
Loading
Loading
+28 −16
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ import android.os.UserManager;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
import android.util.SparseArray;
import android.util.SparseIntArray;
@@ -475,10 +476,6 @@ public class ThemeOverlayController extends CoreStartable implements Dumpable {
            mThemeStyle = fetchThemeStyleFromSetting();
            mSecondaryOverlay = getOverlay(mMainWallpaperColor, ACCENT, mThemeStyle);
            mNeutralOverlay = getOverlay(mMainWallpaperColor, NEUTRAL, mThemeStyle);
            if (colorSchemeIsApplied()) {
                Log.d(TAG, "Skipping overlay creation. Theme was already: " + mColorScheme);
                return;
            }
            mNeedsOverlayCreation = true;
            if (DEBUG) {
                Log.d(TAG, "fetched overlays. accent: " + mSecondaryOverlay
@@ -538,19 +535,28 @@ public class ThemeOverlayController extends CoreStartable implements Dumpable {

    /**
     * Checks if the color scheme in mColorScheme matches the current system palettes.
     * @param managedProfiles List of managed profiles for this user.
     */
    private boolean colorSchemeIsApplied() {
        return mResources.getColor(
                android.R.color.system_accent1_500, mContext.getTheme())
    private boolean colorSchemeIsApplied(Set<UserHandle> managedProfiles) {
        final ArraySet<UserHandle> allProfiles = new ArraySet<>(managedProfiles);
        allProfiles.add(UserHandle.SYSTEM);
        for (UserHandle userHandle : allProfiles) {
            Resources res = userHandle.isSystem()
                    ? mResources : mContext.createContextAsUser(userHandle, 0).getResources();
            if (!(res.getColor(android.R.color.system_accent1_500, mContext.getTheme())
                    == mColorScheme.getAccent1().get(6)
                && mResources.getColor(android.R.color.system_accent2_500, mContext.getTheme())
                    && res.getColor(android.R.color.system_accent2_500, mContext.getTheme())
                    == mColorScheme.getAccent2().get(6)
                && mResources.getColor(android.R.color.system_accent3_500, mContext.getTheme())
                    && res.getColor(android.R.color.system_accent3_500, mContext.getTheme())
                    == mColorScheme.getAccent3().get(6)
                && mResources.getColor(android.R.color.system_neutral1_500, mContext.getTheme())
                    && res.getColor(android.R.color.system_neutral1_500, mContext.getTheme())
                    == mColorScheme.getNeutral1().get(6)
                && mResources.getColor(android.R.color.system_neutral2_500, mContext.getTheme())
                        == mColorScheme.getNeutral2().get(6);
                    && res.getColor(android.R.color.system_neutral2_500, mContext.getTheme())
                    == mColorScheme.getNeutral2().get(6))) {
                return false;
            }
        }
        return true;
    }

    private void updateThemeOverlays() {
@@ -623,6 +629,12 @@ public class ThemeOverlayController extends CoreStartable implements Dumpable {
                managedProfiles.add(userInfo.getUserHandle());
            }
        }

        if (colorSchemeIsApplied(managedProfiles)) {
            Log.d(TAG, "Skipping overlay creation. Theme was already: " + mColorScheme);
            return;
        }

        if (DEBUG) {
            Log.d(TAG, "Applying overlays: " + categoryToPackage.keySet().stream()
                    .map(key -> key + " -> " + categoryToPackage.get(key)).collect(
+12 −0
Original line number Diff line number Diff line
@@ -733,6 +733,18 @@ public class ThemeOverlayControllerTest extends SysuiTestCase {
        mColorsListener.getValue().onColorsChanged(mainColors, WallpaperManager.FLAG_SYSTEM,
                USER_SYSTEM);

        reset(mResources);
        when(mResources.getColor(eq(android.R.color.system_accent1_500), any()))
                .thenReturn(mThemeOverlayController.mColorScheme.getAccent1().get(6));
        when(mResources.getColor(eq(android.R.color.system_accent2_500), any()))
                .thenReturn(mThemeOverlayController.mColorScheme.getAccent2().get(6));
        when(mResources.getColor(eq(android.R.color.system_accent3_500), any()))
                .thenReturn(mThemeOverlayController.mColorScheme.getAccent3().get(6));
        when(mResources.getColor(eq(android.R.color.system_neutral1_500), any()))
                .thenReturn(mThemeOverlayController.mColorScheme.getNeutral1().get(6));
        when(mResources.getColor(eq(android.R.color.system_neutral2_500), any()))
                .thenReturn(mThemeOverlayController.mColorScheme.getNeutral2().get(6));

        // Defers event because we already have initial colors.
        verify(mThemeOverlayApplier, never())
                .applyCurrentUserOverlays(any(), any(), anyInt(), any());