Bug 1246091 - patch 6/7 - Tests, r=ejpbruel

This commit is contained in:
Andrea Marchesini 2016-03-23 22:55:07 +01:00
Родитель df932690be
Коммит 934bd500b6
5 изменённых файлов: 151 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,3 @@
"use strict";
self.onmessage = function () {};

Просмотреть файл

@ -0,0 +1,37 @@
"use strict"
function ok(a, msg) {
postMessage(JSON.stringify({ type: 'status', what: !!a, msg: msg }));
}
function is(a, b, msg) {
ok(a === b, msg);
}
function finish() {
postMessage(JSON.stringify({ type: 'finish' }));
}
function magic() {
console.log("Hello from the debugger script!");
var foo = retrieveConsoleEvents();
ok(Array.isArray(foo), "We received an array.");
ok(foo.length >= 2, "At least 2 messages.");
is(foo[0].arguments[0], "Can you see this console message?", "First message ok.");
is(foo[1].arguments[0], "Can you see this second console message?", "Second message ok.");
setConsoleEventHandler(function(consoleData) {
is(consoleData.arguments[0], "Random message.", "Random message ok!");
finish();
});
}
this.onmessage = function (event) {
switch (event.data) {
case "do magic":
magic();
break;
}
};

Просмотреть файл

@ -0,0 +1,10 @@
"use strict";
console.log("Can you see this console message?");
console.warn("Can you see this second console message?");
var worker = new Worker("WorkerDebugger.console_childWorker.js");
setInterval(function() {
console.log("Random message.");
}, 200);

Просмотреть файл

@ -1,6 +1,9 @@
[DEFAULT]
skip-if = buildapp == 'b2g' || os == 'android'
support-files =
WorkerDebugger.console_childWorker.js
WorkerDebugger.console_debugger.js
WorkerDebugger.console_worker.js
WorkerDebugger.initialize_childWorker.js
WorkerDebugger.initialize_debugger.js
WorkerDebugger.initialize_worker.js
@ -62,6 +65,7 @@ support-files =
[test_WorkerDebuggerGlobalScope.reportError.xul]
[test_WorkerDebuggerGlobalScope.setImmediate.xul]
[test_WorkerDebuggerManager.xul]
[test_WorkerDebugger_console.xul]
[test_WorkerDebugger_frozen.xul]
[test_WorkerDebugger_suspended.xul]
[test_bug883784.xul]

Просмотреть файл

@ -0,0 +1,97 @@
<?xml version="1.0"?>
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<window title="Test for WorkerDebuggerGlobalScope.console methods"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="test();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"/>
<script type="application/javascript" src="dom_worker_helper.js"/>
<script type="application/javascript">
<![CDATA[
const WORKER_URL = "WorkerDebugger.console_worker.js";
const CHILD_WORKER_URL = "WorkerDebugger.console_childWorker.js";
const DEBUGGER_URL = BASE_URL + "WorkerDebugger.console_debugger.js";
consoleMessagesReceived = 0;
function test() {
function consoleListener() {
SpecialPowers.addObserver(this, "console-api-log-event", false);
}
consoleListener.prototype = {
observe: function(aSubject, aTopic, aData) {
if (aTopic == "console-api-log-event") {
var obj = aSubject.wrappedJSObject;
if (obj.arguments[0] == "Hello from the debugger script!" &&
!consoleMessagesReceived) {
consoleMessagesReceived++;
ok(true, "Something has been received");
SpecialPowers.removeObserver(this, "console-api-log-event");
}
}
}
}
var cl = new consoleListener();
Task.spawn(function* () {
SimpleTest.waitForExplicitFinish();
info("Create a worker that creates a child worker, wait for their " +
"debuggers to be registered, and initialize them.");
let promise = waitForMultiple([
waitForRegister(WORKER_URL, DEBUGGER_URL),
waitForRegister(CHILD_WORKER_URL, DEBUGGER_URL)
]);
let worker = new Worker(WORKER_URL);
let [dbg, childDbg] = yield promise;
info("Send a request to the worker debugger. This should cause the " +
"the worker debugger to send a response.");
dbg.addListener({
onMessage: function(msg) {
try {
msg = JSON.parse(msg);
} catch(e) {
ok(false, "Something went wrong");
return;
}
if (msg.type == 'finish') {
ok(consoleMessagesReceived, "We received something via debugger console!");
dbg.removeListener(this);
SimpleTest.finish();
return;
}
if (msg.type == 'status') {
ok(msg.what, msg.msg);
return;
}
ok(false, "Something went wrong");
}
});
dbg.postMessage("do magic");
});
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display:none;"></div>
<pre id="test"></pre>
</body>
<label id="test-result"/>
</window>