<!DOCTYPE HTML>
<html>
<head>
  <!-- The bug number is pulled from the test URL -->
  <title>JSD Test for Bug AUTOFILLED</title>
  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
  <script type="application/javascript" src="jsd-test.js"></script>
  <script type="application/javascript">
var BUG = 638178;
var TEST_SCRIPT = "test-bug638178-execlines.js";
document.getElementsByTagName("title")[0].innerHTML = "JSD Test for Bug " + BUG;

netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

SimpleTest.waitForExplicitFinish();

function runTest() {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
    console.log("start of runTest, loading script");
    loadScript(TEST_SCRIPT, document.getElementById("test"));
    console.log("end of runTest");
}

function setupTest() {
    var buglink = document.getElementById("buglink");
    buglink.href = "https://bugzilla.mozilla.org/show_bug.cgi?id=" + BUG;
    buglink.innerHTML = "Mozilla Bug " + BUG;
}
  </script>
</head>
<body onLoad='setupTest(); setupJSD();'>

<a id="buglink" target="_blank"></a>
<p id="display"></p>

<div id="content" style="display: none">
  <pre id='test'>
  </pre>
</div>

<div id='test-output'>
</div>

</body>
</html>
