Index: android_webview/javatests/src/org/chromium/android_webview/test/AwTestBase.java |
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwTestBase.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwTestBase.java |
index f362c3786df6e78a4cc1bfe9d06ea655c6720a31..4008b8dbdd9edcd8c596d89467655b979e52008e 100644 |
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwTestBase.java |
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwTestBase.java |
@@ -17,6 +17,8 @@ import org.chromium.android_webview.AwContents; |
import org.chromium.android_webview.AwContentsClient; |
import org.chromium.android_webview.AwSettings; |
import org.chromium.android_webview.test.util.JSUtils; |
+import org.chromium.android_webview.test.util.JavascriptEventObserver; |
+import org.chromium.android_webview.test.util.VideoTestWebServer; |
import org.chromium.base.test.util.InMemorySharedPreferences; |
import org.chromium.content.browser.ContentSettings; |
import org.chromium.content.browser.LoadUrlParams; |
@@ -465,4 +467,49 @@ public class AwTestBase |
} |
}); |
} |
+ |
+ /** |
+ * Run video test. |
+ * @param requiredUserGesture the settings of MediaPlaybackRequiresUserGesture. |
+ * @param waitTime time for waiting event happen, -1 means forever. |
+ * @return true if the event happened, |
+ * @throws Throwable throw exception if timeout. |
+ */ |
+ protected boolean runVideoTest(final boolean requiredUserGesture, long waitTime) |
+ throws Throwable { |
+ final JavascriptEventObserver observer = new JavascriptEventObserver(); |
+ TestAwContentsClient client = new TestAwContentsClient(); |
+ final AwContents awContents = createAwTestContainerViewOnMainSync(client).getAwContents(); |
+ getInstrumentation().runOnMainSync(new Runnable() { |
+ @Override |
+ public void run() { |
+ AwSettings awSettings = awContents.getSettings(); |
+ awSettings.setJavaScriptEnabled(true); |
+ awSettings.setMediaPlaybackRequiresUserGesture(requiredUserGesture); |
+ observer.register(awContents.getContentViewCore(), "javaObserver"); |
+ } |
+ }); |
+ VideoTestWebServer webServer = new VideoTestWebServer(getActivity()); |
+ try { |
+ String data = "<html><head><script>" + |
+ "addEventListener('DOMContentLoaded', function() { " + |
+ " document.getElementById('video').addEventListener('play', function() { " + |
+ " javaObserver.notifyJava(); " + |
+ " }, false); " + |
+ "}, false); " + |
+ "</script></head><body>" + |
+ "<video id='video' autoplay control src='" + |
+ webServer.getOnePixelOneFrameWebmURL() + "' /> </body></html>"; |
+ loadDataAsync(awContents, data, "text/html", false); |
+ if (waitTime == -1) { |
+ observer.waitForEvent(); |
+ return true; |
+ } else { |
+ return observer.waitForEvent(waitTime); |
+ } |
+ } finally { |
+ if (webServer != null && webServer.getTestWebServer() != null) |
+ webServer.getTestWebServer().shutdown(); |
+ } |
+ } |
} |