tor-browser

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

max-frame-count.js (1327B)


      1 // Test that we can capture only the N newest frames.
      2 // This is the maxFrameCount argument to JS::CaptureCurrentStack.
      3 
      4 load(libdir + 'asserts.js');
      5 
      6 function recur(n, limit) {
      7  if (n > 0)
      8    return recur(n - 1, limit);
      9  return saveStack(limit);
     10 }
     11 
     12 // Negative values are rejected.
     13 assertThrowsInstanceOf(() => saveStack(-1), TypeError);
     14 
     15 // Zero means 'no limit'.
     16 assertEq(saveStack(0).parent, null);
     17 assertEq(recur(0, 0).parent !== null, true);
     18 assertEq(recur(0, 0).parent.parent, null);
     19 assertEq(recur(1, 0).parent.parent.parent, null);
     20 assertEq(recur(2, 0).parent.parent.parent.parent, null);
     21 assertEq(recur(3, 0).parent.parent.parent.parent.parent, null);
     22 
     23 // limit of 1
     24 assertEq(saveStack(1).parent, null);
     25 assertEq(recur(0, 1).parent, null);
     26 assertEq(recur(0, 1).parent, null);
     27 assertEq(recur(1, 1).parent, null);
     28 assertEq(recur(2, 1).parent, null);
     29 
     30 // limit of 2
     31 assertEq(saveStack(2).parent, null);
     32 assertEq(recur(0, 2).parent !== null, true);
     33 assertEq(recur(0, 2).parent.parent, null);
     34 assertEq(recur(1, 2).parent.parent, null);
     35 assertEq(recur(2, 2).parent.parent, null);
     36 
     37 // limit of 3
     38 assertEq(saveStack(3).parent, null);
     39 assertEq(recur(0, 3).parent !== null, true);
     40 assertEq(recur(0, 3).parent.parent, null);
     41 assertEq(recur(1, 3).parent.parent.parent, null);
     42 assertEq(recur(2, 3).parent.parent.parent, null);