Fix issue where theme would be accepted in SUW
An event passing null would cause the internal state of ThemeOverlayController to be reset, accepting future theming events. Test: atest ThemeOverlayControllerTest Bug: 182560740 Change-Id: Ie619ff5ae73b97e6a26cc90227bcad1c6277b30b
This commit is contained in:
@@ -151,6 +151,10 @@ public class ThemeOverlayController extends SystemUI implements Dumpable {
|
||||
+ wallpaperColors);
|
||||
mDeferredThemeEvaluation = true;
|
||||
return;
|
||||
} else if (mDeferredThemeEvaluation) {
|
||||
Log.i(TAG, "Wallpaper color event received, but we already were deferring eval: "
|
||||
+ wallpaperColors);
|
||||
return;
|
||||
} else {
|
||||
if (DEBUG) {
|
||||
Log.i(TAG, "During user setup, but allowing first color event: had? "
|
||||
|
||||
@@ -212,6 +212,18 @@ public class ThemeOverlayControllerTest extends SysuiTestCase {
|
||||
mColorsListener.getValue().onColorsChanged(mainColors, WallpaperManager.FLAG_SYSTEM);
|
||||
|
||||
verify(mThemeOverlayApplier).applyCurrentUserOverlays(any(), any(), anyInt(), any());
|
||||
|
||||
// Regression test: null events should not reset the internal state and allow colors to be
|
||||
// applied again.
|
||||
clearInvocations(mThemeOverlayApplier);
|
||||
mBroadcastReceiver.getValue().onReceive(null, new Intent(Intent.ACTION_WALLPAPER_CHANGED));
|
||||
mColorsListener.getValue().onColorsChanged(null, WallpaperManager.FLAG_SYSTEM);
|
||||
verify(mThemeOverlayApplier, never()).applyCurrentUserOverlays(any(), any(), anyInt(),
|
||||
any());
|
||||
mColorsListener.getValue().onColorsChanged(new WallpaperColors(Color.valueOf(Color.GREEN),
|
||||
null, null), WallpaperManager.FLAG_SYSTEM);
|
||||
verify(mThemeOverlayApplier, never()).applyCurrentUserOverlays(any(), any(), anyInt(),
|
||||
any());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user