Imported Upstream version 1.0.0
[platform/upstream/js.git] / js / jsd / test / test_bug617870-callhooks.html
1 <!DOCTYPE HTML>
2 <html>
3 <head>
4   <!-- The bug number is pulled from the test URL -->
5   <title>JSD Test for Bug AUTOFILLED</title>
6   <script type="application/javascript" src="/MochiKit/packed.js"></script>
7   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
8   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
9   <script type="application/javascript" src="jsd-test.js"></script>
10   <script type="application/javascript">
11 var BUG = 617870;
12 var TEST_SCRIPT = "test-bug617870-callhooks.js";
13 document.getElementsByTagName("title")[0].innerHTML = "JSD Test for Bug " + BUG;
14
15 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
16
17 SimpleTest.waitForExplicitFinish();
18
19 var hits = { gn: [], ge: [], fn: [], fe: [] };
20 var numGlobalNonevals = 0;
21 var numFunctionNonevals = 0;
22 var numGlobalEvals = 0;
23 var numFunctionEvals = 0;
24 function runTest() {
25     netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
26     jsd.topLevelHook = {
27         onCall: function(frame,type) {
28             netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
29             if (frame.script.fileName.indexOf(TEST_SCRIPT) != -1) {
30                 var desc = frame.script.fileName + ":" + frame.line + " (" + frame.functionName + ")";
31                 if (type == Ci.jsdICallHook.TYPE_TOPLEVEL_START) {
32                     if (frame.callingFrame === null) {
33                         numGlobalNonevals++;
34                         hits.gn.push(desc);
35                     } else if (frame.callee === null) {
36                         numGlobalEvals++;
37                         hits.ge.push(desc);
38                     } else {
39                         numFunctionEvals++;
40                         hits.fe.push(desc);
41                     }
42                 }
43                 dumpStack(frame, "TOPLEVEL(" + type + ")");
44            }
45         }
46     };
47     jsd.functionHook = {
48         onCall: function(frame,type) {
49             netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
50             if (frame.script.fileName.indexOf(TEST_SCRIPT) != -1) {
51                 if (type == Ci.jsdICallHook.TYPE_FUNCTION_CALL) {
52                     var desc = frame.script.fileName + ":" + frame.line + " (" + frame.functionName + ")";
53                     numFunctionNonevals++;
54                     hits.fn.push(desc);
55                 }
56                 dumpStack(frame, "FUNCTION(" + type + ")");
57             }
58         }
59     };
60     loadScript(TEST_SCRIPT, document.getElementById("test"));
61 }
62
63 function setupTest() {
64   var buglink = document.getElementById("buglink");
65   buglink.href = "https://bugzilla.mozilla.org/show_bug.cgi?id=" + BUG;
66   buglink.innerHTML = "Mozilla Bug " + BUG;
67 }
68   </script>
69 </head>
70 <body onLoad='setupTest(); setupJSD();'>
71
72 <a id="buglink" target="_blank"></a>
73 <p id="display"></p>
74
75 <div id="content" style="display: none">
76   <pre id='test'>
77   </pre>
78 </div>
79
80 <div id='test-output'>
81 </div>
82
83 </body>
84 </html>