diff options
| author | 2022-05-16 23:09:19 +0000 | |
|---|---|---|
| committer | 2022-05-16 23:09:19 +0000 | |
| commit | c912ad84b5f5c593f549583ca7af600b8d971476 (patch) | |
| tree | dfb5e7329970559763f64eeddeccb3e641b10cfe | |
| parent | ee1b4d021f7dc3f0d427e45c0e0815ad2475b51a (diff) | |
| parent | 40f6700c52a2cb7c35fc6db60e1dfe138122ff45 (diff) | |
Merge "Move optimization to later part of pipeline" into tm-dev
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java | 44 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java | 12 |
2 files changed, 40 insertions, 16 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java index c6a8445d2443..094490ba7adc 100644 --- a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java +++ b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java @@ -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()) - == mColorScheme.getAccent1().get(6) - && mResources.getColor(android.R.color.system_accent2_500, mContext.getTheme()) - == mColorScheme.getAccent2().get(6) - && mResources.getColor(android.R.color.system_accent3_500, mContext.getTheme()) - == mColorScheme.getAccent3().get(6) - && mResources.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); + 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) + && res.getColor(android.R.color.system_accent2_500, mContext.getTheme()) + == mColorScheme.getAccent2().get(6) + && res.getColor(android.R.color.system_accent3_500, mContext.getTheme()) + == mColorScheme.getAccent3().get(6) + && res.getColor(android.R.color.system_neutral1_500, mContext.getTheme()) + == mColorScheme.getNeutral1().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( 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 68818f610fb7..b7f38f1433ff 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java @@ -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()); |