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.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(
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
Reference in New Issue
Block a user