|
1 <!DOCTYPE HTML> |
|
2 <html> |
|
3 <!-- |
|
4 https://bugzilla.mozilla.org/show_bug.cgi?id=507448 |
|
5 --> |
|
6 <head> |
|
7 <title>Test for Bug 507448</title> |
|
8 <script type="application/javascript" src="/MochiKit/Base.js"></script> |
|
9 <script type="application/javascript" src="/MochiKit/Async.js"></script> |
|
10 <script type="application/javascript" src="/MochiKit/DOM.js"></script> |
|
11 <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> |
|
12 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> |
|
13 </head> |
|
14 <body> |
|
15 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=507448">Mozilla Bug 507448</a> |
|
16 <p id="display"></p> |
|
17 <div id="content" style="display: none"> |
|
18 |
|
19 </div> |
|
20 <pre id="test"> |
|
21 <script type="application/javascript"> |
|
22 function f() {} |
|
23 function g(a,b) {} |
|
24 function h(me, too, here) { var x = 1; } |
|
25 function annoying(a, b, a, b, b, a) {} |
|
26 function manyLocals(a, b, c, d, e, f, g, h, i, j, k, l, m) { |
|
27 var n, o, p, q, r, s, t, u, v, w, x, y, z; |
|
28 } |
|
29 </script> |
|
30 <script type="application/javascript"> |
|
31 |
|
32 SimpleTest.waitForExplicitFinish(); |
|
33 |
|
34 function loadScript(url) { |
|
35 var d = new MochiKit.Async.Deferred(); |
|
36 var head = document.getElementsByTagName("head")[0]; |
|
37 var script = MochiKit.DOM.createDOM("script", { type: "text/javascript", src: url }); |
|
38 script.onload = function() { |
|
39 script.onload = null; |
|
40 script.onerror = null; |
|
41 script.onreadystatechange = null; |
|
42 d.callback(); |
|
43 }; |
|
44 script.onerror = function(msg) { |
|
45 script.onload = null; |
|
46 script.onerror = null; |
|
47 script.onreadystatechange = null; |
|
48 msg = "Failed to load script at " + url + ": " + msg; |
|
49 d.errback(new URIError(msg, url)); |
|
50 } |
|
51 script.onreadystatechange = function() { |
|
52 if (script.readyState == "loaded" || script.readyState == "complete") { |
|
53 script.onload(); |
|
54 } else { |
|
55 // IE doesn't bother to report errors... |
|
56 MochiKit.Async.callLater(10, script.onerror, "Script loading timed out") |
|
57 } |
|
58 }; |
|
59 head.appendChild(script); |
|
60 return d; |
|
61 } |
|
62 |
|
63 /** Test for Bug 507448 **/ |
|
64 function assertArraysEqual(arr1, arr2) { |
|
65 is(arr1.length, arr2.length, "Lengths not equal"); |
|
66 for (var i = 0 ; i < arr1.length; ++i) { |
|
67 is(arr1[i], arr2[i], "Element " + i + " not equal"); |
|
68 } |
|
69 } |
|
70 |
|
71 var jsdIDebuggerService = SpecialPowers.Ci.jsdIDebuggerService; |
|
72 var jsd = SpecialPowers.Cc['@mozilla.org/js/jsd/debugger-service;1'] |
|
73 .getService(jsdIDebuggerService); |
|
74 var jsdOnAtStart = false; |
|
75 |
|
76 function setupJSD() { |
|
77 // This is somewhat unfortunate: jsd only deals with scripts that have a |
|
78 // nonzero line number, so we can't just createElement a script here. |
|
79 // So break the test up into three <script>s, of which the middle one has our test functions. |
|
80 |
|
81 jsdOnAtStart = jsd.isOn; |
|
82 if (jsdOnAtStart) { |
|
83 testJSD(); |
|
84 } else { |
|
85 jsd.asyncOn( |
|
86 { |
|
87 onDebuggerActivated: function() { |
|
88 testJSD(); |
|
89 } |
|
90 } |
|
91 ); |
|
92 } |
|
93 } |
|
94 |
|
95 addLoadEvent(setupJSD); |
|
96 |
|
97 </script> |
|
98 <script> |
|
99 function testJSD() { |
|
100 ok(jsd.isOn, "JSD needs to be running for this test."); |
|
101 |
|
102 var deferred = loadScript("bug507448.js"); |
|
103 } |
|
104 </script> |
|
105 </pre> |
|
106 </body> |
|
107 </html> |