From 376e805767dcb7ced49b08658ce2e1e98ecbc077 Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Wed, 27 Apr 2022 14:51:45 -0700 Subject: [PATCH] Do not ignore forceReload requests A recent optimization was causing reevaluateSystemTheme to be skipped for secondary/managed profiles. This change makes sure that forceReload requests will be honored. Test: atest ThemeOverlayControllerTest Fixes: 229837333 Change-Id: Id868000da327b49264e4ff62aa006b40a87228a3 --- .../systemui/theme/ThemeOverlayController.java | 2 +- .../systemui/theme/ThemeOverlayControllerTest.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java index 7920d388c6702..a50d3d607aece 100644 --- a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java +++ b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java @@ -474,7 +474,7 @@ public class ThemeOverlayController extends CoreStartable implements Dumpable { mThemeStyle = fetchThemeStyleFromSetting(); mSecondaryOverlay = getOverlay(mMainWallpaperColor, ACCENT, mThemeStyle); mNeutralOverlay = getOverlay(mMainWallpaperColor, NEUTRAL, mThemeStyle); - if (colorSchemeIsApplied()) { + if (colorSchemeIsApplied() && !forceReload) { Log.d(TAG, "Skipping overlay creation. Theme was already: " + mColorScheme); return; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java index 3dfc94bcd5b61..c625dc7d4b508 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java @@ -729,6 +729,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());