Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / android_webview / javatests / src / org / chromium / android_webview / test / util / VideoTestUtil.java
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.android_webview.test.util;
6
7 import org.chromium.android_webview.AwContents;
8 import org.chromium.android_webview.AwSettings;
9 import org.chromium.android_webview.test.AwTestBase;
10 import org.chromium.android_webview.test.TestAwContentsClient;
11
12 /**
13  * Code shared between the various video tests.
14  */
15 public class VideoTestUtil {
16     /**
17      * Run video test.
18      * @param testCase the test case instance we're going to run the test in.
19      * @param requiredUserGesture the settings of MediaPlaybackRequiresUserGesture.
20      * @return true if the event happened,
21      * @throws Throwable throw exception if timeout.
22      */
23    public static boolean runVideoTest(final AwTestBase testCase, final boolean requiredUserGesture,
24            long waitTime) throws Throwable {
25         final JavascriptEventObserver observer = new JavascriptEventObserver();
26         TestAwContentsClient client = new TestAwContentsClient();
27         final AwContents awContents =
28             testCase.createAwTestContainerViewOnMainSync(client).getAwContents();
29         testCase.getInstrumentation().runOnMainSync(new Runnable() {
30             @Override
31             public void run() {
32                 AwSettings awSettings = awContents.getSettings();
33                 awSettings.setJavaScriptEnabled(true);
34                 awSettings.setMediaPlaybackRequiresUserGesture(requiredUserGesture);
35                 observer.register(awContents.getContentViewCore(), "javaObserver");
36             }
37         });
38         VideoTestWebServer webServer = new VideoTestWebServer(testCase.getActivity());
39         try {
40             String data = "<html><head><script>" +
41                 "addEventListener('DOMContentLoaded', function() { " +
42                 "  document.getElementById('video').addEventListener('play', function() { " +
43                 "    javaObserver.notifyJava(); " +
44                 "  }, false); " +
45                 "}, false); " +
46                 "</script></head><body>" +
47                 "<video id='video' autoplay control src='" +
48                 webServer.getOnePixelOneFrameWebmURL() + "' /> </body></html>";
49             testCase.loadDataAsync(awContents, data, "text/html", false);
50             return observer.waitForEvent(waitTime);
51         } finally {
52             if (webServer != null && webServer.getTestWebServer() != null)
53                 webServer.getTestWebServer().shutdown();
54         }
55     }
56 }