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

Commit cabad669 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...

Merge "Move optimization to later part of pipeline" into tm-dev am: c912ad84 am: 805c0388 am: 2f339217 am: 0dd13ff3

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



Change-Id: Id3386cd7089ca4b0b8961b5b7c155594e0d27b87
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 831e3e5b 0dd13ff3
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());