diff --git a/InCallUI/src/com/android/incallui/async/PausableExecutor.java b/InCallUI/src/com/android/incallui/async/PausableExecutor.java
index fdeef36..1b8201a 100644
--- a/InCallUI/src/com/android/incallui/async/PausableExecutor.java
+++ b/InCallUI/src/com/android/incallui/async/PausableExecutor.java
@@ -45,6 +45,14 @@
     void ackMilestoneForTesting();
 
     /**
+     * Method called from the test code to inform this executor that the tests are finished with all
+     * milestones. Future calls to {@link #milestone()} or {@link #awaitMilestoneForTesting()}
+     * should return immediately.
+     */
+    @NeededForTesting
+    void ackAllMilestonesForTesting();
+
+    /**
      * Method called from the test code to block until a milestone has been reached in the
      * production code.
      */
diff --git a/InCallUI/src/com/android/incallui/async/PausableExecutorImpl.java b/InCallUI/src/com/android/incallui/async/PausableExecutorImpl.java
index e493feb..15900e5 100644
--- a/InCallUI/src/com/android/incallui/async/PausableExecutorImpl.java
+++ b/InCallUI/src/com/android/incallui/async/PausableExecutorImpl.java
@@ -30,6 +30,9 @@
     public void ackMilestoneForTesting() {}
 
     @Override
+    public void ackAllMilestonesForTesting() {}
+
+    @Override
     public void awaitMilestoneForTesting() {}
 
     @Override
diff --git a/InCallUI/tests/src/com/android/incallui/async/SingleProdThreadExecutor.java b/InCallUI/tests/src/com/android/incallui/async/SingleProdThreadExecutor.java
index 839bb2e..5717c94 100644
--- a/InCallUI/tests/src/com/android/incallui/async/SingleProdThreadExecutor.java
+++ b/InCallUI/tests/src/com/android/incallui/async/SingleProdThreadExecutor.java
@@ -30,12 +30,13 @@
 
     private int mMilestonesReached;
     private int mMilestonesAcked;
+    private boolean mHasAckedAllMilestones;
 
     @Override
     public synchronized void milestone() {
         ++mMilestonesReached;
         notify();
-        while (mMilestonesReached > mMilestonesAcked) {
+        while (!mHasAckedAllMilestones && mMilestonesReached > mMilestonesAcked) {
             try {
                 wait();
             } catch (InterruptedException e) {}
@@ -49,8 +50,14 @@
     }
 
     @Override
+    public synchronized void ackAllMilestonesForTesting() {
+        mHasAckedAllMilestones = true;
+        notify();
+    }
+
+    @Override
     public synchronized void awaitMilestoneForTesting() throws InterruptedException {
-        while (mMilestonesReached <= mMilestonesAcked) {
+        while (!mHasAckedAllMilestones && mMilestonesReached <= mMilestonesAcked) {
             wait();
         }
     }
diff --git a/InCallUI/tests/src/com/android/incallui/ringtone/InCallTonePlayerTest.java b/InCallUI/tests/src/com/android/incallui/ringtone/InCallTonePlayerTest.java
index 096d211..59611f7 100644
--- a/InCallUI/tests/src/com/android/incallui/ringtone/InCallTonePlayerTest.java
+++ b/InCallUI/tests/src/com/android/incallui/ringtone/InCallTonePlayerTest.java
@@ -61,11 +61,8 @@
         super.tearDown();
         // Stop any playing so the InCallTonePlayer isn't stuck waiting for the tone to complete
         mInCallTonePlayer.stop();
-        // 3 milestones in InCallTonePlayer, ack them to ensure that the prod thread doesn't block
-        // forever. It's fine to ack for more milestones than are hit
-        mExecutor.ackMilestoneForTesting();
-        mExecutor.ackMilestoneForTesting();
-        mExecutor.ackMilestoneForTesting();
+        // Ack all milestones to ensure that the prod thread doesn't block forever
+        mExecutor.ackAllMilestonesForTesting();
     }
 
     public void testIsPlayingTone_False() {
