Merge "Move optimization to later part of pipeline" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c912ad84b5
@@ -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(
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user