dom/media/tests/ipc/test_ipc.html

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

michael@0 1 <!DOCTYPE HTML>
michael@0 2 <html>
michael@0 3 <head>
michael@0 4 <title>Test for OOP PeerConncection</title>
michael@0 5 <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
michael@0 6 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
michael@0 7 </head>
michael@0 8 <body>
michael@0 9
michael@0 10 <script type="application/javascript;version=1.7">
michael@0 11 "use strict";
michael@0 12
michael@0 13 SimpleTest.waitForExplicitFinish();
michael@0 14
michael@0 15 // This isn't a single test. It runs the entirety of the PeerConnection
michael@0 16 // tests. Each of those has a normal timeout handler, so there's no point in
michael@0 17 // having a timeout here. I'm setting this really high just to avoid getting
michael@0 18 // killed.
michael@0 19 SimpleTest.requestLongerTimeout(100);
michael@0 20
michael@0 21 // Disable crash observers as it breaks later tests.
michael@0 22 function iframeScriptFirst() {
michael@0 23 SpecialPowers.prototype.registerProcessCrashObservers = function() { };
michael@0 24 SpecialPowers.prototype.unregisterProcessCrashObservers = function() { };
michael@0 25
michael@0 26 content.wrappedJSObject.RunSet.reloadAndRunAll({
michael@0 27 preventDefault: function() { },
michael@0 28 __exposedProps__: { preventDefault: 'r' }
michael@0 29 });
michael@0 30 }
michael@0 31
michael@0 32 function iframeScriptSecond() {
michael@0 33 let TestRunner = content.wrappedJSObject.TestRunner;
michael@0 34 let oldComplete = TestRunner.onComplete;
michael@0 35
michael@0 36 TestRunner.onComplete = function() {
michael@0 37 TestRunner.onComplete = oldComplete;
michael@0 38
michael@0 39 sendAsyncMessage("test:PeerConnection:ipcTestComplete", {
michael@0 40 result: JSON.stringify(TestRunner._failedTests)
michael@0 41 });
michael@0 42
michael@0 43 if (oldComplete) {
michael@0 44 oldComplete();
michael@0 45 }
michael@0 46 };
michael@0 47 let oldLog = TestRunner.log;
michael@0 48 TestRunner.log = function(msg) {
michael@0 49 sendAsyncMessage("test:PeerConnection:ipcTestMessage", { msg: msg });
michael@0 50 };
michael@0 51 TestRunner.error = function(msg) {
michael@0 52 sendAsyncMessage("test:PeerConnection:ipcTestMessage", { msg: msg });
michael@0 53 };
michael@0 54 }
michael@0 55
michael@0 56 let regex = /^(TEST-PASS|TEST-UNEXPECTED-PASS|TEST-KNOWN-FAIL|TEST-UNEXPECTED-FAIL|TEST-DEBUG-INFO) \| ([^\|]+) \|(.*)/;
michael@0 57
michael@0 58 function onTestMessage(data) {
michael@0 59 let message = SpecialPowers.wrap(data).json.msg;
michael@0 60 let match = regex.exec(message);
michael@0 61 if (match) {
michael@0 62 let state = match[1];
michael@0 63 let details = match[2] + " | " + match[3];
michael@0 64
michael@0 65 switch (state) {
michael@0 66 case "TEST-PASS":
michael@0 67 case "TEST-KNOWN-FAIL":
michael@0 68 ok(true, details);
michael@0 69 break;
michael@0 70
michael@0 71 case "TEST-UNEXPECTED-FAIL":
michael@0 72 case "TEST-UNEXPECTED-PASS":
michael@0 73 ok(false, details);
michael@0 74 break;
michael@0 75
michael@0 76 case "TEST-DEBUG-INFO":
michael@0 77 default:
michael@0 78 info(details);
michael@0 79 }
michael@0 80 }
michael@0 81 }
michael@0 82
michael@0 83 function onTestComplete() {
michael@0 84 let comp = SpecialPowers.wrap(SpecialPowers.Components);
michael@0 85 let mm = SpecialPowers.getBrowserFrameMessageManager(iframe);
michael@0 86 let spObserver = comp.classes["@mozilla.org/special-powers-observer;1"]
michael@0 87 .getService(comp.interfaces.nsIMessageListener);
michael@0 88
michael@0 89 mm.removeMessageListener("SPPrefService", spObserver);
michael@0 90 mm.removeMessageListener("SPProcessCrashService", spObserver);
michael@0 91 mm.removeMessageListener("SPPingService", spObserver);
michael@0 92 mm.removeMessageListener("SpecialPowers.Quit", spObserver);
michael@0 93 mm.removeMessageListener("SPPermissionManager", spObserver);
michael@0 94
michael@0 95 mm.removeMessageListener("test:PeerConnection:ipcTestMessage", onTestMessage);
michael@0 96 mm.removeMessageListener("test:PeerConnection:ipcTestComplete", onTestComplete);
michael@0 97
michael@0 98 SimpleTest.executeSoon(function () { SimpleTest.finish(); });
michael@0 99 }
michael@0 100
michael@0 101 function runTests() {
michael@0 102 let iframe = document.createElement("iframe");
michael@0 103 SpecialPowers.wrap(iframe).mozbrowser = true;
michael@0 104 iframe.id = "iframe";
michael@0 105 iframe.style.width = "100%";
michael@0 106 iframe.style.height = "1000px";
michael@0 107
michael@0 108 function iframeLoadSecond() {
michael@0 109 ok(true, "Got second iframe load event.");
michael@0 110 iframe.removeEventListener("mozbrowserloadend", iframeLoadSecond);
michael@0 111 let mm = SpecialPowers.getBrowserFrameMessageManager(iframe);
michael@0 112 mm.loadFrameScript("data:,(" + iframeScriptSecond.toString() + ")();",
michael@0 113 false);
michael@0 114 }
michael@0 115
michael@0 116 function iframeLoadFirst() {
michael@0 117 ok(true, "Got first iframe load event.");
michael@0 118 iframe.removeEventListener("mozbrowserloadend", iframeLoadFirst);
michael@0 119 iframe.addEventListener("mozbrowserloadend", iframeLoadSecond);
michael@0 120
michael@0 121 let mm = SpecialPowers.getBrowserFrameMessageManager(iframe);
michael@0 122
michael@0 123 let comp = SpecialPowers.wrap(SpecialPowers.Components);
michael@0 124
michael@0 125 let spObserver =
michael@0 126 comp.classes["@mozilla.org/special-powers-observer;1"]
michael@0 127 .getService(comp.interfaces.nsIMessageListener);
michael@0 128
michael@0 129 mm.addMessageListener("SPPrefService", spObserver);
michael@0 130 mm.addMessageListener("SPProcessCrashService", spObserver);
michael@0 131 mm.addMessageListener("SPPingService", spObserver);
michael@0 132 mm.addMessageListener("SpecialPowers.Quit", spObserver);
michael@0 133 mm.addMessageListener("SPPermissionManager", spObserver);
michael@0 134
michael@0 135 mm.addMessageListener("test:PeerConnection:ipcTestMessage", onTestMessage);
michael@0 136 mm.addMessageListener("test:PeerConnection:ipcTestComplete", onTestComplete);
michael@0 137
michael@0 138 let specialPowersBase = "chrome://specialpowers/content/";
michael@0 139 mm.loadFrameScript(specialPowersBase + "MozillaLogger.js", false);
michael@0 140 mm.loadFrameScript(specialPowersBase + "specialpowersAPI.js", false);
michael@0 141 mm.loadFrameScript(specialPowersBase + "specialpowers.js", false);
michael@0 142
michael@0 143 mm.loadFrameScript("data:,(" + iframeScriptFirst.toString() + ")();", false);
michael@0 144 }
michael@0 145
michael@0 146 iframe.addEventListener("mozbrowserloadend", iframeLoadFirst);
michael@0 147
michael@0 148 // Strip this filename and one directory level and then add "/mochitest".
michael@0 149 let href = window.location.href;
michael@0 150 href = href.substring(0, href.lastIndexOf('/'));
michael@0 151 href = href.substring(0, href.lastIndexOf('/'));
michael@0 152 let manifest = "tests/dom/media/tests/ipc/ipc.json";
michael@0 153 iframe.src = href + "/mochitest?consoleLevel=INFO&testManifest=" + manifest;
michael@0 154 document.body.appendChild(iframe);
michael@0 155 }
michael@0 156
michael@0 157 addEventListener("load", function() {
michael@0 158
michael@0 159 SpecialPowers.addPermission("browser", true, document);
michael@0 160 SpecialPowers.pushPrefEnv({
michael@0 161 "set": [
michael@0 162 ["media.peerconnection.ipc.enabled", true],
michael@0 163
michael@0 164 // TODO: remove this as part of bug 820712
michael@0 165 ["network.disable.ipc.security", true],
michael@0 166
michael@0 167 ["dom.ipc.browser_frames.oop_by_default", true],
michael@0 168 ["dom.mozBrowserFramesEnabled", true],
michael@0 169 ["browser.pagethumbnails.capturing_disabled", true]
michael@0 170 ]
michael@0 171 }, runTests);
michael@0 172 });
michael@0 173
michael@0 174 </script>
michael@0 175 </body>
michael@0 176 </html>

mercurial