Merge "Fix issue where scrim color event would be skipped" into qt-dev

This commit is contained in:
TreeHugger Robot
2019-05-31 20:22:24 +00:00
committed by Android (Google) Code Review
2 changed files with 50 additions and 36 deletions

View File

@@ -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);
}
/**

View File

@@ -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) {