Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2846)

Unified Diff: android_webview/javatests/src/org/chromium/android_webview/test/AwTestBase.java

Issue 250483002: [Android WebView] Add tests to check whether the hole punching works. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();
+ }
+ }
}

Powered by Google App Engine
This is Rietveld 408576698