Merge "Fix issue where scrim color event would be skipped" into qt-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
a288fae7cb
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.systemui.colorextraction;
|
||||
|
||||
import android.annotation.ColorInt;
|
||||
import android.app.WallpaperColors;
|
||||
import android.app.WallpaperManager;
|
||||
import android.content.Context;
|
||||
@@ -113,7 +114,11 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable,
|
||||
super.onColorsChanged(colors, which);
|
||||
|
||||
if ((which & WallpaperManager.FLAG_SYSTEM) != 0) {
|
||||
@ColorInt int oldColor = mWpHiddenColors.getMainColor();
|
||||
updateDefaultGradients(colors);
|
||||
if (oldColor != mWpHiddenColors.getMainColor()) {
|
||||
triggerColorsChanged(WallpaperManager.FLAG_SYSTEM);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,6 +126,7 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable,
|
||||
public void onUiModeChanged() {
|
||||
WallpaperColors systemColors = getWallpaperColors(WallpaperManager.FLAG_SYSTEM);
|
||||
updateDefaultGradients(systemColors);
|
||||
triggerColorsChanged(WallpaperManager.FLAG_SYSTEM);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -19,6 +19,7 @@ package com.android.systemui.colorextraction;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotEquals;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.reset;
|
||||
@@ -36,8 +37,10 @@ import com.android.internal.colorextraction.types.Tonal;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
/**
|
||||
* Tests color extraction generation.
|
||||
@@ -54,62 +57,68 @@ public class SysuiColorExtractorTests extends SysuiTestCase {
|
||||
ColorExtractor.TYPE_DARK,
|
||||
ColorExtractor.TYPE_EXTRA_DARK};
|
||||
|
||||
private ColorExtractor.GradientColors mColors;
|
||||
private SysuiColorExtractor mColorExtractor;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mColors = new ColorExtractor.GradientColors();
|
||||
mColors.setMainColor(Color.RED);
|
||||
mColors.setSecondaryColor(Color.RED);
|
||||
mColorExtractor = new SysuiColorExtractor(getContext(),
|
||||
(inWallpaperColors, outGradientColorsNormal, outGradientColorsDark,
|
||||
outGradientColorsExtraDark) -> {
|
||||
outGradientColorsNormal.set(mColors);
|
||||
outGradientColorsDark.set(mColors);
|
||||
outGradientColorsExtraDark.set(mColors);
|
||||
}, mock(ConfigurationController.class), false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getColors_usesGreyIfWallpaperNotVisible() {
|
||||
ColorExtractor.GradientColors colors = new ColorExtractor.GradientColors();
|
||||
colors.setMainColor(Color.RED);
|
||||
colors.setSecondaryColor(Color.RED);
|
||||
simulateEvent(mColorExtractor);
|
||||
mColorExtractor.setWallpaperVisible(false);
|
||||
|
||||
SysuiColorExtractor extractor = getTestableExtractor(colors);
|
||||
simulateEvent(extractor);
|
||||
extractor.setWallpaperVisible(false);
|
||||
|
||||
ColorExtractor.GradientColors fallbackColors = extractor.getNeutralColors();
|
||||
ColorExtractor.GradientColors fallbackColors = mColorExtractor.getNeutralColors();
|
||||
|
||||
for (int type : sTypes) {
|
||||
assertEquals("Not using fallback!",
|
||||
extractor.getColors(WallpaperManager.FLAG_SYSTEM, type), fallbackColors);
|
||||
mColorExtractor.getColors(WallpaperManager.FLAG_SYSTEM, type), fallbackColors);
|
||||
assertNotEquals("Wallpaper visibility event should not affect lock wallpaper.",
|
||||
extractor.getColors(WallpaperManager.FLAG_LOCK, type), fallbackColors);
|
||||
mColorExtractor.getColors(WallpaperManager.FLAG_LOCK, type), fallbackColors);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getColors_doesntUseFallbackIfVisible() {
|
||||
ColorExtractor.GradientColors colors = new ColorExtractor.GradientColors();
|
||||
colors.setMainColor(Color.RED);
|
||||
colors.setSecondaryColor(Color.RED);
|
||||
mColors.setMainColor(Color.RED);
|
||||
mColors.setSecondaryColor(Color.RED);
|
||||
|
||||
SysuiColorExtractor extractor = getTestableExtractor(colors);
|
||||
simulateEvent(extractor);
|
||||
extractor.setWallpaperVisible(true);
|
||||
simulateEvent(mColorExtractor);
|
||||
mColorExtractor.setWallpaperVisible(true);
|
||||
|
||||
for (int which : sWhich) {
|
||||
for (int type : sTypes) {
|
||||
assertEquals("Not using extracted colors!",
|
||||
extractor.getColors(which, type), colors);
|
||||
mColorExtractor.getColors(which, type), mColors);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getColors_fallbackWhenMediaIsVisible() {
|
||||
ColorExtractor.GradientColors colors = new ColorExtractor.GradientColors();
|
||||
colors.setMainColor(Color.RED);
|
||||
colors.setSecondaryColor(Color.RED);
|
||||
simulateEvent(mColorExtractor);
|
||||
mColorExtractor.setWallpaperVisible(true);
|
||||
mColorExtractor.setHasBackdrop(true);
|
||||
|
||||
SysuiColorExtractor extractor = getTestableExtractor(colors);
|
||||
simulateEvent(extractor);
|
||||
extractor.setWallpaperVisible(true);
|
||||
extractor.setHasBackdrop(true);
|
||||
|
||||
ColorExtractor.GradientColors fallbackColors = extractor.getNeutralColors();
|
||||
ColorExtractor.GradientColors fallbackColors = mColorExtractor.getNeutralColors();
|
||||
|
||||
for (int type : sTypes) {
|
||||
assertEquals("Not using fallback!",
|
||||
extractor.getColors(WallpaperManager.FLAG_LOCK, type), fallbackColors);
|
||||
mColorExtractor.getColors(WallpaperManager.FLAG_LOCK, type), fallbackColors);
|
||||
assertNotEquals("Media visibility should not affect system wallpaper.",
|
||||
extractor.getColors(WallpaperManager.FLAG_SYSTEM, type), fallbackColors);
|
||||
mColorExtractor.getColors(WallpaperManager.FLAG_SYSTEM, type), fallbackColors);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,14 +135,13 @@ public class SysuiColorExtractorTests extends SysuiTestCase {
|
||||
verify(tonal).applyFallback(any(), any());
|
||||
}
|
||||
|
||||
private SysuiColorExtractor getTestableExtractor(ColorExtractor.GradientColors colors) {
|
||||
return new SysuiColorExtractor(getContext(),
|
||||
(inWallpaperColors, outGradientColorsNormal, outGradientColorsDark,
|
||||
outGradientColorsExtraDark) -> {
|
||||
outGradientColorsNormal.set(colors);
|
||||
outGradientColorsDark.set(colors);
|
||||
outGradientColorsExtraDark.set(colors);
|
||||
}, mock(ConfigurationController.class), false);
|
||||
@Test
|
||||
public void onUiModeChanged_notifiesListener() {
|
||||
ColorExtractor.OnColorsChangedListener listener = mock(
|
||||
ColorExtractor.OnColorsChangedListener.class);
|
||||
mColorExtractor.addOnColorsChangedListener(listener);
|
||||
mColorExtractor.onUiModeChanged();
|
||||
verify(listener).onColorsChanged(any(), anyInt());
|
||||
}
|
||||
|
||||
private void simulateEvent(SysuiColorExtractor extractor) {
|
||||
|
||||
Reference in New Issue
Block a user