Add assertion that list has been drawn
Needed for debugging flaky test.
Bug: 23831408
Change-Id: I62b39eb3563180eb60c3137d59825202ccf1a0d8
diff --git a/tests/tests/widget/src/android/widget/cts/ListViewTest.java b/tests/tests/widget/src/android/widget/cts/ListViewTest.java
index 838f7a8..b4e6a7f8 100644
--- a/tests/tests/widget/src/android/widget/cts/ListViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/ListViewTest.java
@@ -37,6 +37,7 @@
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
+import android.view.ViewTreeObserver.OnDrawListener;
import android.view.animation.LayoutAnimationController;
import android.widget.AbsListView;
import android.widget.AdapterView;
@@ -137,8 +138,11 @@
}
public void testAccessDividerHeight() {
+ final HasDrawnListener drawListener = new HasDrawnListener();
+
mInstrumentation.runOnMainSync(new Runnable() {
public void run() {
+ mListView.getViewTreeObserver().addOnDrawListener(drawListener);
mListView.setAdapter(mAdapter_countries);
}
});
@@ -155,23 +159,44 @@
mInstrumentation.runOnMainSync(new Runnable() {
public void run() {
+ drawListener.reset();
mListView.setDividerHeight(20);
}
});
mInstrumentation.waitForIdleSync();
+ assertTrue(drawListener.hasDrawn());
assertEquals(20, mListView.getDividerHeight());
assertEquals(20, r.bottom - r.top);
mInstrumentation.runOnMainSync(new Runnable() {
public void run() {
+ drawListener.reset();
mListView.setDividerHeight(10);
}
});
mInstrumentation.waitForIdleSync();
+ assertTrue(drawListener.hasDrawn());
assertEquals(10, mListView.getDividerHeight());
assertEquals(10, r.bottom - r.top);
}
+ static class HasDrawnListener implements OnDrawListener {
+ private boolean mHasDrawn;
+
+ @Override
+ public void onDraw() {
+ mHasDrawn = true;
+ }
+
+ public boolean hasDrawn() {
+ return mHasDrawn;
+ }
+
+ public void reset() {
+ mHasDrawn = false;
+ }
+ }
+
public void testAccessItemsCanFocus() {
mListView.setItemsCanFocus(true);
assertTrue(mListView.getItemsCanFocus());