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());