michael@0: function postMsg(message) michael@0: { michael@0: var l = SpecialPowers.wrap(parent.window.location); michael@0: parent.postMessage(message, l.protocol + "//" + l.host); michael@0: } michael@0: michael@0: window.addEventListener("message", onMessageReceived, false); michael@0: michael@0: function onMessageReceived(event) michael@0: { michael@0: if (event.data == "step") { michael@0: var performed = false; michael@0: try { michael@0: performed = doStep(); michael@0: } michael@0: catch (ex) { michael@0: postMsg("FAILURE: exception threw at "+ location +":\n" + ex); michael@0: finishTest(); michael@0: } michael@0: michael@0: if (performed) michael@0: postMsg("perf"); michael@0: michael@0: return; michael@0: } michael@0: michael@0: if (parent) michael@0: postMsg(event.data); michael@0: } michael@0: michael@0: function ok(a, message) michael@0: { michael@0: if (!a) michael@0: postMsg("FAILURE: " + message); michael@0: else michael@0: postMsg(message); michael@0: } michael@0: michael@0: function is(a, b, message) michael@0: { michael@0: if (a != b) michael@0: postMsg("FAILURE: " + message + ", expected "+b+" got "+a); michael@0: else michael@0: postMsg(message + ", expected "+b+" got "+a); michael@0: } michael@0: michael@0: function todo(a, b, message) michael@0: { michael@0: postMsg("TODO: " + message + ", expected "+b+" got "+a); michael@0: } michael@0: michael@0: function finishTest() michael@0: { michael@0: postMsg("done"); michael@0: return false; michael@0: }