Merge "Fix lingering theme color reset on reboot issue" into tm-qpr-dev

This commit is contained in:
Chris Poultney
2022-10-11 17:06:04 +00:00
committed by Android (Google) Code Review
2 changed files with 31 additions and 0 deletions

View File

@@ -171,6 +171,10 @@ public class ThemeOverlayController extends CoreStartable implements Dumpable {
@Override
public void onColorsChanged(WallpaperColors wallpaperColors, int which, int userId) {
WallpaperColors currentColors = mCurrentColors.get(userId);
if (wallpaperColors != null && wallpaperColors.equals(currentColors)) {
return;
}
boolean currentUser = userId == mUserTracker.getUserId();
if (currentUser && !mAcceptColorEvents
&& mWakefulnessLifecycle.getWakefulness() != WAKEFULNESS_ASLEEP) {

View File

@@ -885,4 +885,31 @@ public class ThemeOverlayControllerTest extends SysuiTestCase {
assertThat(themeOverlays.getValue().get(OVERLAY_CATEGORY_SYSTEM_PALETTE))
.isEqualTo(new OverlayIdentifier("ff00ff00"));
}
// Regression test for b/234603929, where a reboot would generate a wallpaper colors changed
// event for the already-set colors that would then set the theme incorrectly on screen sleep.
@Test
public void onWallpaperColorsSetToSame_keepsTheme() {
// Set initial colors and verify.
WallpaperColors startingColors = new WallpaperColors(Color.valueOf(Color.RED),
Color.valueOf(Color.BLUE), null);
WallpaperColors sameColors = new WallpaperColors(Color.valueOf(Color.RED),
Color.valueOf(Color.BLUE), null);
mColorsListener.getValue().onColorsChanged(startingColors, WallpaperManager.FLAG_SYSTEM,
USER_SYSTEM);
verify(mThemeOverlayApplier)
.applyCurrentUserOverlays(any(), any(), anyInt(), any());
clearInvocations(mThemeOverlayApplier);
// Set to the same colors.
mColorsListener.getValue().onColorsChanged(sameColors, WallpaperManager.FLAG_SYSTEM,
USER_SYSTEM);
verify(mThemeOverlayApplier, never())
.applyCurrentUserOverlays(any(), any(), anyInt(), any());
// Verify that no change resulted.
mWakefulnessLifecycleObserver.getValue().onFinishedGoingToSleep();
verify(mThemeOverlayApplier, never()).applyCurrentUserOverlays(any(), any(), anyInt(),
any());
}
}