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;
|
package com.android.systemui.colorextraction;
|
||||||
|
|
||||||
|
import android.annotation.ColorInt;
|
||||||
import android.app.WallpaperColors;
|
import android.app.WallpaperColors;
|
||||||
import android.app.WallpaperManager;
|
import android.app.WallpaperManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -113,7 +114,11 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable,
|
|||||||
super.onColorsChanged(colors, which);
|
super.onColorsChanged(colors, which);
|
||||||
|
|
||||||
if ((which & WallpaperManager.FLAG_SYSTEM) != 0) {
|
if ((which & WallpaperManager.FLAG_SYSTEM) != 0) {
|
||||||
|
@ColorInt int oldColor = mWpHiddenColors.getMainColor();
|
||||||
updateDefaultGradients(colors);
|
updateDefaultGradients(colors);
|
||||||
|
if (oldColor != mWpHiddenColors.getMainColor()) {
|
||||||
|
triggerColorsChanged(WallpaperManager.FLAG_SYSTEM);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,6 +126,7 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable,
|
|||||||
public void onUiModeChanged() {
|
public void onUiModeChanged() {
|
||||||
WallpaperColors systemColors = getWallpaperColors(WallpaperManager.FLAG_SYSTEM);
|
WallpaperColors systemColors = getWallpaperColors(WallpaperManager.FLAG_SYSTEM);
|
||||||
updateDefaultGradients(systemColors);
|
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.assertEquals;
|
||||||
import static org.junit.Assert.assertNotEquals;
|
import static org.junit.Assert.assertNotEquals;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.reset;
|
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.SysuiTestCase;
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.MockitoAnnotations;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests color extraction generation.
|
* Tests color extraction generation.
|
||||||
@@ -54,62 +57,68 @@ public class SysuiColorExtractorTests extends SysuiTestCase {
|
|||||||
ColorExtractor.TYPE_DARK,
|
ColorExtractor.TYPE_DARK,
|
||||||
ColorExtractor.TYPE_EXTRA_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
|
@Test
|
||||||
public void getColors_usesGreyIfWallpaperNotVisible() {
|
public void getColors_usesGreyIfWallpaperNotVisible() {
|
||||||
ColorExtractor.GradientColors colors = new ColorExtractor.GradientColors();
|
simulateEvent(mColorExtractor);
|
||||||
colors.setMainColor(Color.RED);
|
mColorExtractor.setWallpaperVisible(false);
|
||||||
colors.setSecondaryColor(Color.RED);
|
|
||||||
|
|
||||||
SysuiColorExtractor extractor = getTestableExtractor(colors);
|
ColorExtractor.GradientColors fallbackColors = mColorExtractor.getNeutralColors();
|
||||||
simulateEvent(extractor);
|
|
||||||
extractor.setWallpaperVisible(false);
|
|
||||||
|
|
||||||
ColorExtractor.GradientColors fallbackColors = extractor.getNeutralColors();
|
|
||||||
|
|
||||||
for (int type : sTypes) {
|
for (int type : sTypes) {
|
||||||
assertEquals("Not using fallback!",
|
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.",
|
assertNotEquals("Wallpaper visibility event should not affect lock wallpaper.",
|
||||||
extractor.getColors(WallpaperManager.FLAG_LOCK, type), fallbackColors);
|
mColorExtractor.getColors(WallpaperManager.FLAG_LOCK, type), fallbackColors);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getColors_doesntUseFallbackIfVisible() {
|
public void getColors_doesntUseFallbackIfVisible() {
|
||||||
ColorExtractor.GradientColors colors = new ColorExtractor.GradientColors();
|
mColors.setMainColor(Color.RED);
|
||||||
colors.setMainColor(Color.RED);
|
mColors.setSecondaryColor(Color.RED);
|
||||||
colors.setSecondaryColor(Color.RED);
|
|
||||||
|
|
||||||
SysuiColorExtractor extractor = getTestableExtractor(colors);
|
simulateEvent(mColorExtractor);
|
||||||
simulateEvent(extractor);
|
mColorExtractor.setWallpaperVisible(true);
|
||||||
extractor.setWallpaperVisible(true);
|
|
||||||
|
|
||||||
for (int which : sWhich) {
|
for (int which : sWhich) {
|
||||||
for (int type : sTypes) {
|
for (int type : sTypes) {
|
||||||
assertEquals("Not using extracted colors!",
|
assertEquals("Not using extracted colors!",
|
||||||
extractor.getColors(which, type), colors);
|
mColorExtractor.getColors(which, type), mColors);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getColors_fallbackWhenMediaIsVisible() {
|
public void getColors_fallbackWhenMediaIsVisible() {
|
||||||
ColorExtractor.GradientColors colors = new ColorExtractor.GradientColors();
|
simulateEvent(mColorExtractor);
|
||||||
colors.setMainColor(Color.RED);
|
mColorExtractor.setWallpaperVisible(true);
|
||||||
colors.setSecondaryColor(Color.RED);
|
mColorExtractor.setHasBackdrop(true);
|
||||||
|
|
||||||
SysuiColorExtractor extractor = getTestableExtractor(colors);
|
ColorExtractor.GradientColors fallbackColors = mColorExtractor.getNeutralColors();
|
||||||
simulateEvent(extractor);
|
|
||||||
extractor.setWallpaperVisible(true);
|
|
||||||
extractor.setHasBackdrop(true);
|
|
||||||
|
|
||||||
ColorExtractor.GradientColors fallbackColors = extractor.getNeutralColors();
|
|
||||||
|
|
||||||
for (int type : sTypes) {
|
for (int type : sTypes) {
|
||||||
assertEquals("Not using fallback!",
|
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.",
|
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());
|
verify(tonal).applyFallback(any(), any());
|
||||||
}
|
}
|
||||||
|
|
||||||
private SysuiColorExtractor getTestableExtractor(ColorExtractor.GradientColors colors) {
|
@Test
|
||||||
return new SysuiColorExtractor(getContext(),
|
public void onUiModeChanged_notifiesListener() {
|
||||||
(inWallpaperColors, outGradientColorsNormal, outGradientColorsDark,
|
ColorExtractor.OnColorsChangedListener listener = mock(
|
||||||
outGradientColorsExtraDark) -> {
|
ColorExtractor.OnColorsChangedListener.class);
|
||||||
outGradientColorsNormal.set(colors);
|
mColorExtractor.addOnColorsChangedListener(listener);
|
||||||
outGradientColorsDark.set(colors);
|
mColorExtractor.onUiModeChanged();
|
||||||
outGradientColorsExtraDark.set(colors);
|
verify(listener).onColorsChanged(any(), anyInt());
|
||||||
}, mock(ConfigurationController.class), false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void simulateEvent(SysuiColorExtractor extractor) {
|
private void simulateEvent(SysuiColorExtractor extractor) {
|
||||||
|
|||||||
Reference in New Issue
Block a user