Merge "Fix flaky test" into qt-r1-dev

This commit is contained in:
Lucas Dupin
2019-06-05 15:37:29 +00:00
committed by Android (Google) Code Review
4 changed files with 27 additions and 26 deletions

View File

@@ -53,11 +53,13 @@ public class ColorExtractor implements WallpaperManager.OnColorsChangedListener
protected WallpaperColors mLockColors; protected WallpaperColors mLockColors;
public ColorExtractor(Context context) { public ColorExtractor(Context context) {
this(context, new Tonal(context), true /* immediately */); this(context, new Tonal(context), true /* immediately */,
context.getSystemService(WallpaperManager.class));
} }
@VisibleForTesting @VisibleForTesting
public ColorExtractor(Context context, ExtractionType extractionType, boolean immediately) { public ColorExtractor(Context context, ExtractionType extractionType, boolean immediately,
WallpaperManager wallpaperManager) {
mContext = context; mContext = context;
mExtractionType = extractionType; mExtractionType = extractionType;
@@ -71,14 +73,8 @@ public class ColorExtractor implements WallpaperManager.OnColorsChangedListener
} }
mOnColorsChangedListeners = new ArrayList<>(); mOnColorsChangedListeners = new ArrayList<>();
wallpaperManager.addOnColorsChangedListener(this, null /* handler */);
WallpaperManager wallpaperManager = mContext.getSystemService(WallpaperManager.class); initExtractColors(wallpaperManager, immediately);
if (wallpaperManager == null) {
Log.w(TAG, "Can't listen to color changes!");
} else {
wallpaperManager.addOnColorsChangedListener(this, null /* handler */);
initExtractColors(wallpaperManager, immediately);
}
} }
private void initExtractColors(WallpaperManager wallpaperManager, boolean immediately) { private void initExtractColors(WallpaperManager wallpaperManager, boolean immediately) {

View File

@@ -59,13 +59,15 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable,
@Inject @Inject
public SysuiColorExtractor(Context context, ConfigurationController configurationController) { public SysuiColorExtractor(Context context, ConfigurationController configurationController) {
this(context, new Tonal(context), configurationController, true); this(context, new Tonal(context), configurationController, true,
context.getSystemService(WallpaperManager.class));
} }
@VisibleForTesting @VisibleForTesting
public SysuiColorExtractor(Context context, ExtractionType type, public SysuiColorExtractor(Context context, ExtractionType type,
ConfigurationController configurationController, boolean registerVisibility) { ConfigurationController configurationController, boolean registerVisibility,
super(context, type, false /* immediately */); WallpaperManager wallpaperManager) {
super(context, type, false /* immediately */, wallpaperManager);
mTonal = type instanceof Tonal ? (Tonal) type : new Tonal(context); mTonal = type instanceof Tonal ? (Tonal) type : new Tonal(context);
mWpHiddenColors = new GradientColors(); mWpHiddenColors = new GradientColors();
configurationController.addCallback(this); configurationController.addCallback(this);
@@ -91,13 +93,10 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable,
} }
} }
WallpaperManager wallpaperManager = context.getSystemService(WallpaperManager.class); // Listen to all users instead of only the current one.
if (wallpaperManager != null) { wallpaperManager.removeOnColorsChangedListener(this);
// Listen to all users instead of only the current one. wallpaperManager.addOnColorsChangedListener(this, null /* handler */,
wallpaperManager.removeOnColorsChangedListener(this); UserHandle.USER_ALL);
wallpaperManager.addOnColorsChangedListener(this, null /* handler */,
UserHandle.USER_ALL);
}
} }
private void updateDefaultGradients(WallpaperColors colors) { private void updateDefaultGradients(WallpaperColors colors) {

View File

@@ -40,6 +40,7 @@ import com.android.systemui.statusbar.policy.ConfigurationController;
import org.junit.Before; 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.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
/** /**
@@ -57,6 +58,8 @@ public class SysuiColorExtractorTests extends SysuiTestCase {
ColorExtractor.TYPE_DARK, ColorExtractor.TYPE_DARK,
ColorExtractor.TYPE_EXTRA_DARK}; ColorExtractor.TYPE_EXTRA_DARK};
@Mock
private WallpaperManager mWallpaperManager;
private ColorExtractor.GradientColors mColors; private ColorExtractor.GradientColors mColors;
private SysuiColorExtractor mColorExtractor; private SysuiColorExtractor mColorExtractor;
@@ -72,7 +75,7 @@ public class SysuiColorExtractorTests extends SysuiTestCase {
outGradientColorsNormal.set(mColors); outGradientColorsNormal.set(mColors);
outGradientColorsDark.set(mColors); outGradientColorsDark.set(mColors);
outGradientColorsExtraDark.set(mColors); outGradientColorsExtraDark.set(mColors);
}, mock(ConfigurationController.class), false); }, mock(ConfigurationController.class), false, mWallpaperManager);
} }
@Test @Test
@@ -127,7 +130,7 @@ public class SysuiColorExtractorTests extends SysuiTestCase {
Tonal tonal = mock(Tonal.class); Tonal tonal = mock(Tonal.class);
ConfigurationController configurationController = mock(ConfigurationController.class); ConfigurationController configurationController = mock(ConfigurationController.class);
SysuiColorExtractor sysuiColorExtractor = new SysuiColorExtractor(getContext(), SysuiColorExtractor sysuiColorExtractor = new SysuiColorExtractor(getContext(),
tonal, configurationController, false /* registerVisibility */); tonal, configurationController, false /* registerVisibility */, mWallpaperManager);
verify(configurationController).addCallback(eq(sysuiColorExtractor)); verify(configurationController).addCallback(eq(sysuiColorExtractor));
reset(tonal); reset(tonal);

View File

@@ -47,17 +47,19 @@ import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class ColorExtractorTest { public class ColorExtractorTest {
Context mContext; private Context mContext;
private WallpaperManager mWallpaperManager;
@Before @Before
public void setup() { public void setup() {
mContext = InstrumentationRegistry.getContext(); mContext = InstrumentationRegistry.getContext();
mWallpaperManager = mock(WallpaperManager.class);
} }
@Test @Test
public void ColorExtractor_extractWhenInitialized() { public void ColorExtractor_extractWhenInitialized() {
ExtractionType type = mock(Tonal.class); ExtractionType type = mock(Tonal.class);
new ColorExtractor(mContext, type, true); new ColorExtractor(mContext, type, true, mWallpaperManager);
// 1 for lock and 1 for system // 1 for lock and 1 for system
verify(type, times(2)) verify(type, times(2))
.extractInto(any(), any(), any(), any()); .extractInto(any(), any(), any(), any());
@@ -84,7 +86,7 @@ public class ColorExtractorTest {
outGradientColorsDark.set(colorsExpectedDark); outGradientColorsDark.set(colorsExpectedDark);
outGradientColorsExtraDark.set(colorsExpectedExtraDark); outGradientColorsExtraDark.set(colorsExpectedExtraDark);
}; };
ColorExtractor extractor = new ColorExtractor(mContext, type, true); ColorExtractor extractor = new ColorExtractor(mContext, type, true, mWallpaperManager);
GradientColors colors = extractor.getColors(WallpaperManager.FLAG_SYSTEM, GradientColors colors = extractor.getColors(WallpaperManager.FLAG_SYSTEM,
ColorExtractor.TYPE_NORMAL); ColorExtractor.TYPE_NORMAL);
@@ -99,7 +101,8 @@ public class ColorExtractorTest {
public void addOnColorsChangedListener_invokesListener() { public void addOnColorsChangedListener_invokesListener() {
ColorExtractor.OnColorsChangedListener mockedListeners = ColorExtractor.OnColorsChangedListener mockedListeners =
mock(ColorExtractor.OnColorsChangedListener.class); mock(ColorExtractor.OnColorsChangedListener.class);
ColorExtractor extractor = new ColorExtractor(mContext, new Tonal(mContext), true); ColorExtractor extractor = new ColorExtractor(mContext, new Tonal(mContext), true,
mWallpaperManager);
extractor.addOnColorsChangedListener(mockedListeners); extractor.addOnColorsChangedListener(mockedListeners);
extractor.onColorsChanged(new WallpaperColors(Color.valueOf(Color.RED), null, null), extractor.onColorsChanged(new WallpaperColors(Color.valueOf(Color.RED), null, null),