1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/jsd/test/test_bug507448.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,107 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<!-- 1.7 +https://bugzilla.mozilla.org/show_bug.cgi?id=507448 1.8 +--> 1.9 +<head> 1.10 + <title>Test for Bug 507448</title> 1.11 + <script type="application/javascript" src="/MochiKit/Base.js"></script> 1.12 + <script type="application/javascript" src="/MochiKit/Async.js"></script> 1.13 + <script type="application/javascript" src="/MochiKit/DOM.js"></script> 1.14 + <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.15 + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 1.16 +</head> 1.17 +<body> 1.18 +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=507448">Mozilla Bug 507448</a> 1.19 +<p id="display"></p> 1.20 +<div id="content" style="display: none"> 1.21 + 1.22 +</div> 1.23 +<pre id="test"> 1.24 +<script type="application/javascript"> 1.25 +function f() {} 1.26 +function g(a,b) {} 1.27 +function h(me, too, here) { var x = 1; } 1.28 +function annoying(a, b, a, b, b, a) {} 1.29 +function manyLocals(a, b, c, d, e, f, g, h, i, j, k, l, m) { 1.30 + var n, o, p, q, r, s, t, u, v, w, x, y, z; 1.31 +} 1.32 +</script> 1.33 +<script type="application/javascript"> 1.34 + 1.35 +SimpleTest.waitForExplicitFinish(); 1.36 + 1.37 +function loadScript(url) { 1.38 + var d = new MochiKit.Async.Deferred(); 1.39 + var head = document.getElementsByTagName("head")[0]; 1.40 + var script = MochiKit.DOM.createDOM("script", { type: "text/javascript", src: url }); 1.41 + script.onload = function() { 1.42 + script.onload = null; 1.43 + script.onerror = null; 1.44 + script.onreadystatechange = null; 1.45 + d.callback(); 1.46 + }; 1.47 + script.onerror = function(msg) { 1.48 + script.onload = null; 1.49 + script.onerror = null; 1.50 + script.onreadystatechange = null; 1.51 + msg = "Failed to load script at " + url + ": " + msg; 1.52 + d.errback(new URIError(msg, url)); 1.53 + } 1.54 + script.onreadystatechange = function() { 1.55 + if (script.readyState == "loaded" || script.readyState == "complete") { 1.56 + script.onload(); 1.57 + } else { 1.58 + // IE doesn't bother to report errors... 1.59 + MochiKit.Async.callLater(10, script.onerror, "Script loading timed out") 1.60 + } 1.61 + }; 1.62 + head.appendChild(script); 1.63 + return d; 1.64 +} 1.65 + 1.66 +/** Test for Bug 507448 **/ 1.67 +function assertArraysEqual(arr1, arr2) { 1.68 + is(arr1.length, arr2.length, "Lengths not equal"); 1.69 + for (var i = 0 ; i < arr1.length; ++i) { 1.70 + is(arr1[i], arr2[i], "Element " + i + " not equal"); 1.71 + } 1.72 +} 1.73 + 1.74 +var jsdIDebuggerService = SpecialPowers.Ci.jsdIDebuggerService; 1.75 +var jsd = SpecialPowers.Cc['@mozilla.org/js/jsd/debugger-service;1'] 1.76 + .getService(jsdIDebuggerService); 1.77 +var jsdOnAtStart = false; 1.78 + 1.79 +function setupJSD() { 1.80 + // This is somewhat unfortunate: jsd only deals with scripts that have a 1.81 + // nonzero line number, so we can't just createElement a script here. 1.82 + // So break the test up into three <script>s, of which the middle one has our test functions. 1.83 + 1.84 + jsdOnAtStart = jsd.isOn; 1.85 + if (jsdOnAtStart) { 1.86 + testJSD(); 1.87 + } else { 1.88 + jsd.asyncOn( 1.89 + { 1.90 + onDebuggerActivated: function() { 1.91 + testJSD(); 1.92 + } 1.93 + } 1.94 + ); 1.95 + } 1.96 +} 1.97 + 1.98 +addLoadEvent(setupJSD); 1.99 + 1.100 +</script> 1.101 +<script> 1.102 +function testJSD() { 1.103 + ok(jsd.isOn, "JSD needs to be running for this test."); 1.104 + 1.105 + var deferred = loadScript("bug507448.js"); 1.106 +} 1.107 +</script> 1.108 +</pre> 1.109 +</body> 1.110 +</html>