tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Debugger-onEnterFrame-resumption-01.js (1071B)


      1 // If debugger.onEnterFrame returns {return:val}, the frame returns.
      2 
      3 var g = newGlobal({newCompartment: true});
      4 g.set = false;
      5 g.eval("function f() {\n" +
      6       "    set = true;\n" +
      7       "    return 'fail';\n" +
      8       "}\n");
      9 g.eval("function g() { return 'g ' + f(); }");
     10 g.eval("function h() { return 'h ' + g(); }");
     11 
     12 var dbg = Debugger(g);
     13 var savedFrame;
     14 dbg.onEnterFrame = function (frame) {
     15    savedFrame = frame;
     16    return {return: "pass"};
     17 };
     18 
     19 // Call g.f as a function.
     20 savedFrame = undefined;
     21 assertEq(g.f(), "pass");
     22 assertEq(savedFrame.onStack, false);
     23 assertEq(g.set, false);
     24 
     25 // Call g.f as a constructor.
     26 savedFrame = undefined;
     27 var r = new g.f;
     28 assertEq(typeof r, "object");
     29 assertEq(savedFrame.onStack, false);
     30 assertEq(g.set, false);
     31 
     32 var count = 0;
     33 dbg.onEnterFrame = function (frame) {
     34    count++;
     35    if (count == 3) {
     36        savedFrame = frame;
     37        return {return: "pass"};
     38    }
     39    return undefined;
     40 };
     41 g.set = false;
     42 savedFrame = undefined;
     43 assertEq(g.h(), "h g pass");
     44 assertEq(savedFrame.onStack, false);
     45 assertEq(g.set, false);