tor-browser

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

evalInFrame.js (789B)


      1 var evalInFrame = (function (global) {
      2  var dbgGlobal = newGlobal({newCompartment: true});
      3  var dbg = new dbgGlobal.Debugger();
      4 
      5  return function evalInFrame(upCount, code) {
      6    dbg.addDebuggee(global);
      7 
      8    // Skip ourself.
      9    var frame = dbg.getNewestFrame().older;
     10    for (var i = 0; i < upCount; i++) {
     11      if (!frame.older)
     12        break;
     13      frame = frame.older;
     14    }
     15 
     16    var completion = frame.eval(code);
     17    if (completion.return) {
     18      var v = completion.return;
     19      if (typeof v === "object")
     20        v = v.unsafeDereference();
     21      return v;
     22    }
     23    if (completion.throw) {
     24      var v = completion.throw;
     25      if (typeof v === "object")
     26        v = v.unsafeDereference();
     27      throw v;
     28    }
     29    if (completion === null)
     30      terminate();
     31  };
     32 })(this);