file_bug990812-2.xhtml (1934B)
1 <?xml version="1.0"?> 2 <?xml-stylesheet href="chrome://global/skin" type="text/css"?> 3 <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" 4 type="text/css"?> 5 <!-- 6 https://bugzilla.mozilla.org/show_bug.cgi?id=990812 7 --> 8 <window title="Mozilla Bug 990812" 9 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 10 onload="start();"> 11 <label value="Mozilla Bug 990812"/> 12 <!-- test code goes here --> 13 <script type="application/javascript"><![CDATA[ 14 /* global messageManager, sendAsyncMessage, getGroupMessageManager */ 15 var FRAME_SCRIPT = "data:,sendAsyncMessage('test')"; 16 var order = ["group", "window", "global"]; 17 18 var globalMM = Cc["@mozilla.org/globalmessagemanager;1"].getService(); 19 20 function is(val, exp, msg) { 21 window.arguments[0].is(val, exp, msg); 22 } 23 24 function promiseMessage(type, mm) { 25 return new Promise(function (resolve) { 26 mm.addMessageListener("test", function onMessage() { 27 mm.removeMessageListener("test", onMessage); 28 is(type, order.shift(), "correct type " + type); 29 resolve(); 30 }); 31 }); 32 } 33 34 /** 35 * Tests that async messages sent by frame scripts bubble up as expected, 36 * passing the group, window, and global message managers in that order. 37 */ 38 function start() { 39 var global = promiseMessage("global", globalMM); 40 var window = promiseMessage("window", messageManager); 41 var group = promiseMessage("group", getGroupMessageManager("test")); 42 43 var browser = document.querySelector("browser"); 44 browser.messageManager.loadFrameScript(FRAME_SCRIPT, true); 45 46 Promise.all([global, window, group]).then(function () { 47 self.arguments[0].setTimeout(function() { this.next(); }); 48 self.close(); 49 }); 50 } 51 52 ]]></script> 53 54 <browser messagemanagergroup="test" type="content" src="about:mozilla" /> 55 56 </window>