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

This commit is contained in:
TreeHugger Robot
2022-05-16 23:09:19 +00:00
committed by Android (Google) Code Review
2 changed files with 40 additions and 16 deletions

View File

@@ -48,6 +48,7 @@ import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log; import android.util.Log;
import android.util.SparseArray; import android.util.SparseArray;
import android.util.SparseIntArray; import android.util.SparseIntArray;
@@ -475,10 +476,6 @@ public class ThemeOverlayController extends CoreStartable implements Dumpable {
mThemeStyle = fetchThemeStyleFromSetting(); mThemeStyle = fetchThemeStyleFromSetting();
mSecondaryOverlay = getOverlay(mMainWallpaperColor, ACCENT, mThemeStyle); mSecondaryOverlay = getOverlay(mMainWallpaperColor, ACCENT, mThemeStyle);
mNeutralOverlay = getOverlay(mMainWallpaperColor, NEUTRAL, mThemeStyle); mNeutralOverlay = getOverlay(mMainWallpaperColor, NEUTRAL, mThemeStyle);
if (colorSchemeIsApplied()) {
Log.d(TAG, "Skipping overlay creation. Theme was already: " + mColorScheme);
return;
}
mNeedsOverlayCreation = true; mNeedsOverlayCreation = true;
if (DEBUG) { if (DEBUG) {
Log.d(TAG, "fetched overlays. accent: " + mSecondaryOverlay 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. * Checks if the color scheme in mColorScheme matches the current system palettes.
* @param managedProfiles List of managed profiles for this user.
*/ */
private boolean colorSchemeIsApplied() { private boolean colorSchemeIsApplied(Set<UserHandle> managedProfiles) {
return mResources.getColor( final ArraySet<UserHandle> allProfiles = new ArraySet<>(managedProfiles);
android.R.color.system_accent1_500, mContext.getTheme()) allProfiles.add(UserHandle.SYSTEM);
== mColorScheme.getAccent1().get(6) for (UserHandle userHandle : allProfiles) {
&& mResources.getColor(android.R.color.system_accent2_500, mContext.getTheme()) Resources res = userHandle.isSystem()
== mColorScheme.getAccent2().get(6) ? mResources : mContext.createContextAsUser(userHandle, 0).getResources();
&& mResources.getColor(android.R.color.system_accent3_500, mContext.getTheme()) if (!(res.getColor(android.R.color.system_accent1_500, mContext.getTheme())
== mColorScheme.getAccent3().get(6) == mColorScheme.getAccent1().get(6)
&& mResources.getColor(android.R.color.system_neutral1_500, mContext.getTheme()) && res.getColor(android.R.color.system_accent2_500, mContext.getTheme())
== mColorScheme.getNeutral1().get(6) == mColorScheme.getAccent2().get(6)
&& mResources.getColor(android.R.color.system_neutral2_500, mContext.getTheme()) && res.getColor(android.R.color.system_accent3_500, mContext.getTheme())
== mColorScheme.getNeutral2().get(6); == 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() { private void updateThemeOverlays() {
@@ -623,6 +629,12 @@ public class ThemeOverlayController extends CoreStartable implements Dumpable {
managedProfiles.add(userInfo.getUserHandle()); managedProfiles.add(userInfo.getUserHandle());
} }
} }
if (colorSchemeIsApplied(managedProfiles)) {
Log.d(TAG, "Skipping overlay creation. Theme was already: " + mColorScheme);
return;
}
if (DEBUG) { if (DEBUG) {
Log.d(TAG, "Applying overlays: " + categoryToPackage.keySet().stream() Log.d(TAG, "Applying overlays: " + categoryToPackage.keySet().stream()
.map(key -> key + " -> " + categoryToPackage.get(key)).collect( .map(key -> key + " -> " + categoryToPackage.get(key)).collect(

View File

@@ -733,6 +733,18 @@ public class ThemeOverlayControllerTest extends SysuiTestCase {
mColorsListener.getValue().onColorsChanged(mainColors, WallpaperManager.FLAG_SYSTEM, mColorsListener.getValue().onColorsChanged(mainColors, WallpaperManager.FLAG_SYSTEM,
USER_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. // Defers event because we already have initial colors.
verify(mThemeOverlayApplier, never()) verify(mThemeOverlayApplier, never())
.applyCurrentUserOverlays(any(), any(), anyInt(), any()); .applyCurrentUserOverlays(any(), any(), anyInt(), any());