Merge 34344179

Change-Id: I0b2e27ec88b5c4616c5def77779b7242a35e8329
diff --git a/tests/tests/media/src/android/media/cts/MediaPlayerTest.java b/tests/tests/media/src/android/media/cts/MediaPlayerTest.java
index 99aec6b..a3769aa 100644
--- a/tests/tests/media/src/android/media/cts/MediaPlayerTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaPlayerTest.java
@@ -27,6 +27,7 @@
 import android.os.PowerManager;
 
 import java.io.File;
+import java.util.concurrent.CountDownLatch;
 
 /**
  * Tests for the MediaPlayer API and local video/audio playback.
@@ -36,6 +37,7 @@
  * Attribution 3.0 License at http://creativecommons.org/licenses/by/3.0/us/.
  */
 public class MediaPlayerTest extends MediaPlayerTestBase {
+
     private static final String RECORDED_FILE =
                 new File(Environment.getExternalStorageDirectory(),
                 "record.out").getAbsolutePath();
@@ -117,9 +119,18 @@
      * from the time setDisplay() was called
      */
     public void testVideoSurfaceResetting() throws Exception {
-        final int tolerance = 150;
+        final int tolerance = 66 * 3 / 2; /* Test video is 15fps... 66 ms per frame */
         final int seekPos = 1500;
 
+        final CountDownLatch seekDone = new CountDownLatch(1);
+
+        mMediaPlayer.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
+            @Override
+            public void onSeekComplete(MediaPlayer mp) {
+                seekDone.countDown();
+            }
+        });
+
         playVideoTest(R.raw.testvideo, 352, 288);
 
         mMediaPlayer.start();
@@ -129,19 +140,20 @@
         mMediaPlayer.setDisplay(getActivity().getSurfaceHolder2());
         int posAfter = mMediaPlayer.getCurrentPosition();
 
-        assertEquals(posAfter, posBefore);
+        assertEquals(posAfter, posBefore, tolerance);
         assertTrue(mMediaPlayer.isPlaying());
 
         Thread.sleep(SLEEP_TIME);
 
         mMediaPlayer.seekTo(seekPos);
+        seekDone.await();
         Thread.sleep(SLEEP_TIME / 2);
 
         posBefore = mMediaPlayer.getCurrentPosition();
         mMediaPlayer.setDisplay(null);
         posAfter = mMediaPlayer.getCurrentPosition();
 
-        assertEquals(posAfter, posBefore);
+        assertEquals(posAfter, posBefore, tolerance);
         assertEquals(seekPos + SLEEP_TIME / 2, posBefore, tolerance);
         assertTrue(mMediaPlayer.isPlaying());
 
@@ -151,7 +163,7 @@
         mMediaPlayer.setDisplay(getActivity().generateSurfaceHolder());
         posAfter = mMediaPlayer.getCurrentPosition();
 
-        assertEquals(posAfter, posBefore);
+        assertEquals(posAfter, posBefore, tolerance);
         assertTrue(mMediaPlayer.isPlaying());
 
         Thread.sleep(SLEEP_TIME);