summaryrefslogtreecommitdiffstats
path: root/mobile/android/tests/browser/chrome/test_video_discovery.html
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/tests/browser/chrome/test_video_discovery.html')
-rw-r--r--mobile/android/tests/browser/chrome/test_video_discovery.html154
1 files changed, 154 insertions, 0 deletions
diff --git a/mobile/android/tests/browser/chrome/test_video_discovery.html b/mobile/android/tests/browser/chrome/test_video_discovery.html
new file mode 100644
index 000000000..f6fb60bbe
--- /dev/null
+++ b/mobile/android/tests/browser/chrome/test_video_discovery.html
@@ -0,0 +1,154 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=953381
+Migrated from Robocop: https://bugzilla.mozilla.org/show_bug.cgi?id=1184186
+-->
+<head>
+ <meta charset="utf-8">
+ <title>Test for Bug 953381</title>
+ <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+ <link rel="stylesheet" type="text/css" href="chrome://global/skin"/>
+ <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
+ <script type="application/javascript;version=1.7">
+
+ "use strict";
+
+ /*globals SimpleServiceDiscovery */
+
+ const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
+
+ Cu.import("resource://gre/modules/Services.jsm");
+ Cu.import("resource://gre/modules/SimpleServiceDiscovery.jsm");
+
+ // The chrome window
+ let chromeWin;
+
+ // Track the <browser> where the tests are happening
+ let browser;
+
+ function middle(element) {
+ let rect = element.getBoundingClientRect();
+ let x = (rect.right - rect.left) / 2 + rect.left;
+ let y = (rect.bottom - rect.top) / 2 + rect.top;
+ return [x, y];
+ }
+
+ // We must register a device and make a "mock" service for the device
+ var testDevice = {
+ id: "test:dummy",
+ target: "test:service",
+ factory: function(service) { /* dummy */ },
+ types: ["video/mp4", "video/webm"],
+ extensions: ["mp4", "webm"]
+ };
+
+ function setup_browser() {
+ chromeWin = Services.wm.getMostRecentWindow("navigator:browser");
+ let BrowserApp = chromeWin.BrowserApp;
+
+ SimpleTest.registerCleanupFunction(function cleanup() {
+ BrowserApp.closeTab(BrowserApp.getTabForBrowser(browser));
+ SimpleServiceDiscovery.unregisterDevice(testDevice);
+ });
+
+ // We need to register a device or processService will ignore us
+ SimpleServiceDiscovery.registerDevice(testDevice);
+
+ // Create a pretend service
+ let service = {
+ location: "http://mochi.test:8888/chrome/mobile/android/tests/browser/chrome/simpleservice.xml",
+ target: "test:service"
+ };
+
+ dump("Force a detailed ping from a pretend service");
+
+ // Poke the service directly to get the discovery to happen
+ SimpleServiceDiscovery._processService(service);
+
+ // Load our test web page with <video> elements
+ let url = "http://mochi.test:8888/chrome/mobile/android/tests/browser/chrome/video_discovery.html";
+ browser = BrowserApp.addTab(url, { selected: true, parentId: BrowserApp.selectedTab.id }).browser;
+ browser.addEventListener("load", function startTests(event) {
+ browser.removeEventListener("load", startTests, true);
+ Services.tm.mainThread.dispatch(test_video, Ci.nsIThread.DISPATCH_NORMAL);
+ }, true);
+ }
+
+ let videoDiscoveryTests = [
+ { id: "simple-mp4", source: "http://mochi.test:8888/simple.mp4", poster: "http://mochi.test:8888/simple.png", text: "simple video with mp4 src" },
+ { id: "simple-fail", pass: false, text: "simple video with no mp4 src" },
+ { id: "with-sources-mp4", source: "http://mochi.test:8888/simple.mp4", text: "video with mp4 extension source child" },
+ { id: "with-sources-webm", source: "http://mochi.test:8888/simple.webm", text: "video with webm extension source child" },
+ { id: "with-sources-fail", pass: false, text: "video with no mp4 extension source child" },
+ { id: "with-sources-mimetype-mp4", source: "http://mochi.test:8888/simple-video-mp4", text: "video with mp4 mimetype source child" },
+ { id: "with-sources-mimetype-webm", source: "http://mochi.test:8888/simple-video-webm", text: "video with webm mimetype source child" },
+ { id: "simple-fetch-pass", source: "http://mochi.test:8888/chrome/mobile/android/tests/browser/chrome/video_discovery.sjs?type=video/mp4", text: "simple video with mp4 mimetype fetched from server" },
+ { id: "simple-fetch-fail", pass: false, text: "simple video with non-video mimetype fetched from server" },
+ { id: "video-overlay", source: "http://mochi.test:8888/simple.mp4", text: "div overlay covering a simple video with mp4 src" }
+ ];
+
+ let expectedTests = videoDiscoveryTests.length;
+
+ function execute_video_test(test) {
+ let element = browser.contentDocument.getElementById(test.id);
+ if (element) {
+ let [x, y] = middle(element);
+ dump("Starting to getVideo");
+ chromeWin.CastingApps.getVideo(element, x, y, (video) => {
+ dump("Completed getVideo");
+ if (video) {
+ dump("video source: " + video.source);
+
+ let matchPoster = (test.poster == video.poster);
+ let matchSource = (test.source == video.source);
+ ok(matchPoster && matchSource && test.pass, test.text);
+ } else {
+ ok(!test.pass, test.text);
+ }
+ expectedTests--;
+ if (expectedTests == 0) {
+ SimpleTest.finish();
+ }
+ });
+ } else {
+ ok(false, "test element not found: [" + test.id + "]");
+ SimpleTest.finish();
+ }
+ }
+
+ function test_video() {
+ let videoTest;
+ while ((videoTest = videoDiscoveryTests.shift())) {
+ if (!("poster" in videoTest)) {
+ videoTest.poster = "";
+ }
+ if (!("pass" in videoTest)) {
+ videoTest.pass = true;
+ }
+ execute_video_test(videoTest);
+ }
+ }
+
+ SimpleTest.waitForExplicitFinish();
+
+ // On debug runs, 10 assertions typically observed; 5 each of:
+ // - ASSERTION: cancel with non-failure status code: 'NS_FAILED(status)'
+ // - ASSERTION: OnDataAvailable implementation consumed no data: 'Error'
+ SimpleTest.expectAssertions(0,10);
+ setup_browser();
+
+ </script>
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=953381">Mozilla Bug 953381</a>
+<br>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1184186">Migrated from Robocop testVideoDiscovery</a>
+<p id="display"></p>
+<div id="content" style="display: none">
+
+</div>
+<pre id="test">
+</pre>
+</body>
+</html>