tor-browser

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

Frame-onPop-multiple-02.js (984B)


      1 // One Debugger's onPop handler can remove another Debugger's onPop handler.
      2 var g = newGlobal({newCompartment: true});
      3 var dbg1 = new Debugger(g);
      4 var dbg2 = new Debugger(g);
      5 
      6 var log;
      7 var frames = [];
      8 var firstPop = true;
      9 
     10 function handleEnter(frame) {
     11    log += '(';
     12    frames.push(frame);
     13    frame.onPop = function handlePop(completion) {
     14        log += ')';
     15        assertEq(completion.return, 42);
     16        if (firstPop) {
     17            // We can't say which frame's onPop handler will get called first.
     18            if (this == frames[0])
     19                frames[1].onPop = undefined;
     20            else
     21                frames[0].onPop = undefined;
     22            gc();
     23        } else {
     24            assertEq("second pop handler was called",
     25                     "second pop handler should not be called");
     26        }
     27        firstPop = false;
     28    };
     29 };
     30 
     31 dbg1.onEnterFrame = handleEnter;
     32 dbg2.onEnterFrame = handleEnter;
     33 
     34 log = '';
     35 assertEq(g.eval('40 + 2'), 42);
     36 assertEq(log, '(()');