diff --git a/src/com/android/dialer/calllog/GroupingListAdapter.java b/src/com/android/dialer/calllog/GroupingListAdapter.java
index 501e88d..8d3ab45 100644
--- a/src/com/android/dialer/calllog/GroupingListAdapter.java
+++ b/src/com/android/dialer/calllog/GroupingListAdapter.java
@@ -253,7 +253,6 @@
      * corresponding cursor position.
      */
     public void obtainPositionMetadata(PositionMetadata metadata, int position) {
-
         // If the description object already contains requested information, just return
         if (metadata.listPosition == position) {
             return;
@@ -433,17 +432,4 @@
             return -1;
         }
     }
-
-    /**
-     * Used for setting the cursor without triggering a UI thread update.
-     */
-    @NeededForTesting
-    public void setCursorForTesting(Cursor cursor) {
-        if (cursor != null) {
-            mCursor = cursor;
-            cursor.registerContentObserver(mChangeObserver);
-            cursor.registerDataSetObserver(mDataSetObserver);
-            mRowIdColumnIndex = cursor.getColumnIndexOrThrow("_id");
-        }
-    }
 }
diff --git a/tests/src/com/android/dialer/calllog/CallLogFragmentTest.java b/tests/src/com/android/dialer/calllog/CallLogFragmentTest.java
index 71554d6..3f66d58 100644
--- a/tests/src/com/android/dialer/calllog/CallLogFragmentTest.java
+++ b/tests/src/com/android/dialer/calllog/CallLogFragmentTest.java
@@ -129,7 +129,14 @@
         mAdapter.pauseCache();
         mParentView = new FrameLayout(mActivity);
         mCursor = new MatrixCursor(CallLogQuery._PROJECTION);
-        mAdapter.setCursorForTesting(mCursor);
+
+        getInstrumentation().runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                mAdapter.changeCursor(mCursor);
+            }
+        });
+        getInstrumentation().waitForIdleSync();
     }
 
     /**
@@ -316,7 +323,6 @@
     public void testBindView_CallButton() {
         mCursor.moveToFirst();
         insert(TEST_NUMBER, Calls.PRESENTATION_ALLOWED, NOW, 0, Calls.INCOMING_TYPE);
-        mAdapter.changeCursor(mCursor);
         CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder)
                 mAdapter.onCreateViewHolder(mParentView, /* viewType */ 0);
         bindViewForTest(viewHolder);
