Merge "Fix issue where scrim color event would be skipped" into qt-dev
am: a288fae7cb
Change-Id: I7da1a69f7f51d472e5402a2b75dd080e1e4af83d
diff --git a/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java b/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java
index 05665b5..835ffc9 100644
--- a/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java
+++ b/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java
@@ -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 @@
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 void onUiModeChanged() {
WallpaperColors systemColors = getWallpaperColors(WallpaperManager.FLAG_SYSTEM);
updateDefaultGradients(systemColors);
+ triggerColorsChanged(WallpaperManager.FLAG_SYSTEM);
}
/**
diff --git a/packages/SystemUI/tests/src/com/android/systemui/colorextraction/SysuiColorExtractorTests.java b/packages/SystemUI/tests/src/com/android/systemui/colorextraction/SysuiColorExtractorTests.java
index 67df60a..9c2c822 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/colorextraction/SysuiColorExtractorTests.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/colorextraction/SysuiColorExtractorTests.java
@@ -19,6 +19,7 @@
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.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 @@
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 @@
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) {