tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>