Loading packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java +28 −16 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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() { Loading Loading @@ -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( Loading packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java +12 −0 Original line number Diff line number Diff line Loading @@ -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()); Loading Loading
packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java +28 −16 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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() { Loading Loading @@ -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( Loading
packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java +12 −0 Original line number Diff line number Diff line Loading @@ -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()); Loading