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