file_bug990812-1.xhtml (2359B)
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_GLOBAL = "data:,sendSyncMessage('test', 'global')"; 16 var FRAME_SCRIPT_WINDOW = "data:,sendSyncMessage('test', 'window')"; 17 var FRAME_SCRIPT_GROUP = "data:,sendSyncMessage('test', 'group')"; 18 19 var globalMM = Cc["@mozilla.org/globalmessagemanager;1"].getService(); 20 21 function is(val, exp, msg) { 22 window.arguments[0].is(val, exp, msg); 23 } 24 25 /** 26 * Ensures that delayed frame scripts are loaded in the expected order. 27 * Global frame scripts will be loaded before delayed frame scripts from 28 * window message managers. The latter will be loaded before group message 29 * manager frame scripts. 30 */ 31 function start() { 32 globalMM.loadFrameScript(FRAME_SCRIPT_GLOBAL, true); 33 messageManager.loadFrameScript(FRAME_SCRIPT_WINDOW, true); 34 getGroupMessageManager("test").loadFrameScript(FRAME_SCRIPT_GROUP, true); 35 36 var order = ["global", "window", "group"]; 37 38 messageManager.addMessageListener("test", function onMessage(msg) { 39 var next = order.shift(); 40 window.arguments[0].is(msg.data, next, "received test:" + next); 41 42 if (!order.length) { 43 window.arguments[0].setTimeout(function() { this.next(); }); 44 window.close(); 45 } 46 }); 47 48 var browser = document.createXULElement("browser"); 49 browser.setAttribute("messagemanagergroup", "test"); 50 browser.setAttribute("src", "about:mozilla"); 51 browser.setAttribute("type", "content"); 52 document.documentElement.appendChild(browser); 53 54 globalMM.removeDelayedFrameScript(FRAME_SCRIPT_GLOBAL); 55 messageManager.removeDelayedFrameScript(FRAME_SCRIPT_WINDOW); 56 getGroupMessageManager("test").removeDelayedFrameScript(FRAME_SCRIPT_GROUP); 57 } 58 59 ]]></script> 60 61 </window>