Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 // Test that we can save stacks with direct and indirect eval calls.
3 const directEval = (function iife() {
4 return eval("(" + function evalFrame() {
5 return saveStack();
6 } + "())");
7 }());
9 assertEq(directEval.source.contains("> eval"), true);
10 assertEq(directEval.functionDisplayName, "evalFrame");
12 assertEq(directEval.parent.source.contains("> eval"), true);
14 assertEq(directEval.parent.parent.source.contains("> eval"), false);
15 assertEq(directEval.parent.parent.functionDisplayName, "iife");
17 assertEq(directEval.parent.parent.parent.source.contains("> eval"), false);
19 assertEq(directEval.parent.parent.parent.parent, null);
21 const lave = eval;
22 const indirectEval = (function iife() {
23 return lave("(" + function evalFrame() {
24 return saveStack();
25 } + "())");
26 }());
28 assertEq(indirectEval.source.contains("> eval"), true);
29 assertEq(indirectEval.functionDisplayName, "evalFrame");
31 assertEq(indirectEval.parent.source.contains("> eval"), true);
33 assertEq(indirectEval.parent.parent.source.contains("> eval"), false);
34 assertEq(indirectEval.parent.parent.functionDisplayName, "iife");
36 assertEq(indirectEval.parent.parent.parent.source.contains("> eval"), false);
38 assertEq(indirectEval.parent.parent.parent.parent, null);