testing/mochitest/harness-overlay.xul
author Serge Gautherie <sgautherie.bz@free.fr>
Mon, 30 Mar 2009 23:42:12 +0200
changeset 26741 96624298f10e34282d12ee5a30ae555f986e24b8
parent 21145 94209029c870e6d7293cc4cdd44112fd71e88c55
child 27565 04cb4a9e893b0c68ddae58ccfa907e3ffc0ac11b
permissions -rw-r--r--
Bug 454717 - Check/Fix browser chrome tests which |addEventListener()| without |removeEventListener()|; (Av1) Fix harness-overlay.xul; r=gavin.sharp

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>

<overlay id="browserTestOverlay"
         xmlns:html="http://www.w3.org/1999/xhtml"
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
         xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

<window>
  <script type="application/javascript"
          src="chrome://mochikit/content/MochiKit/packed.js" />
  <script type="text/javascript"
          src="chrome://mochikit/content/tests/SimpleTest/TestRunner.js"/>
  <script type="text/javascript"
          src="chrome://mochikit/content/tests/SimpleTest/MozillaFileLogger.js"/>
  <script type="text/javascript"
          src="chrome://mochikit/content/tests/SimpleTest/quit.js" />
  <script type="text/javascript"
          src="chrome://mochikit/content/tests/SimpleTest/setup.js" />
  <script type="application/javascript;version=1.7"><![CDATA[
    function loadTests()
    {
      window.removeEventListener("load", loadTests, false);

      var dir = document.documentElement.getAttribute('directory');
      // Find our chrome dir
      var ios = Cc["@mozilla.org/network/io-service;1"].
                  getService(Ci.nsIIOService);
      var chromeURI = ios.newURI("chrome://mochikit/content/",
                                 null, null);
      var resolvedURI = Cc["@mozilla.org/chrome/chrome-registry;1"].
                          getService(Ci.nsIChromeRegistry).
                          convertChromeURL(chromeURI);
      var fileHandler = Cc["@mozilla.org/network/protocol;1?name=file"].
                          getService(Ci.nsIFileProtocolHandler);
      var chromeDir = fileHandler.getFileFromURLSpec(resolvedURI.spec);
      chromeDir = chromeDir.parent.QueryInterface(Ci.nsILocalFile);
      chromeDir.appendRelativePath(dir);

      // load server.js in so we can share template functions
      var scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"].
                           getService(Ci.mozIJSSubScriptLoader);
      var srvScope = {};
      scriptLoader.loadSubScript("chrome://mochikit/content/server.js",
                                 srvScope);

      // generate our test list
      srvScope.makeTags();
      var url = "chrome://mochikit/content/" + dir + "/";
      var [links, count] = srvScope.list(url, chromeDir, true);
      var listContent = srvScope.linksToListItems(links);
      var tableContent = srvScope.linksToTableRows(links);
      function populate() {
        $("list-holder").setAttribute("rowspan", 1 + count);
        $("test-list").innerHTML += listContent;
        $("test-table").innerHTML += tableContent;
        $("wrapper").innerHTML += " "; // redraw the table
      }
      gTestList = eval(srvScope.jsonArrayOfTestFiles(links));
      populate();
      hookup();

      // if we got passed a test path, just run that single test
      if ("testPath" in params && params.testPath)
        window.location.href = url + params.testPath;
    }

    window.addEventListener("load", loadTests, false);
  ]]>
  </script>

  <vbox>   
    <button label="Run Chrome Tests" id="runtests" flex="1"/>

    <body xmlns="http://www.w3.org/1999/xhtml" id="xulharness">
      <div class="container">
        <p style="float:right;">
          <small>Based on the MochiKit unit tests.</small>
        </p>
        <div class="status">
          <h1 id="indicator">Status</h1>
          <h2 id="pass">Passed: <span id="pass-count">0</span></h2>
          <h2 id="fail">Failed: <span id="fail-count">0</span></h2>
          <h2 id="fail">Todo: <span id="todo-count">0</span></h2>
        </div>
        <div class="clear"></div>
        <div id="current-test">
          <b>Currently Executing: <span id="current-test-path">_</span></b>
        </div>
        <div class="clear"></div>
        <div class="frameholder">
          <iframe scrolling="no" id="testframe" width="500"></iframe>
        </div>
        <div class="clear"></div>
        <div class="toggle">
          <a href="#" id="toggleNonTests">Show Non-Tests</a>
          <br />
        </div>
        <div id="wrapper">
          <table cellpadding="0" cellspacing="0" id="test-table">
            <tr>
              <td>Passed</td>
              <td>Failed</td>
              <td>Todo</td>
              <td id="list-holder">
                <ul class="top" id="test-list"><li><b>Test Files</b></li></ul>
              </td>
            </tr>
          </table>
        </div>
      </div>
    </body>
  </vbox>
</window>

</overlay>