Hi" ); const FRAME_SCRIPT = "data:,addEventListener('pageshow', function() { sendAsyncMessage('test', content.wrappedJSObject.a) }, false);"; // s/content.wrappedJSObject.a/[ 1, 2, 3]/ and the test passes function recvTest(m) { var a = m.json; window.arguments[0].is(a.length, 3, "array was serialized and deserialized"); messageManager.removeMessageListener("test", recvTest); finish(); } function start() { messageManager.addMessageListener("test", recvTest); messageManager.loadFrameScript(FRAME_SCRIPT, true); let triggeringPrincipal = Services.scriptSecurityManager.getSystemPrincipal(); setTimeout(function () { document.getElementById("browser").loadURI(TEST_PAGE, {triggeringPrincipal}); }, 0); } function finish() { window.arguments[0].setTimeout(function() { this.done(); }, 0); window.close(); } ]]>