tor-browser

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

test_audioBufferSourceNodeDetached.html (1398B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <title>Test AudioBufferSourceNode when an AudioBuffer's getChanneData buffer is detached</title>
      5  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <script type="text/javascript" src="webaudio.js"></script>
      7  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      8 </head>
      9 <body>
     10 <pre id="test">
     11 <script class="testbody" type="text/javascript">
     12 
     13 function createGarbage() {
     14  var s = [];
     15  for (var i = 0; i < 10000000; ++i) {
     16    s.push(i);
     17  }
     18  var sum = 0;
     19  for (var i = 0; i < s.length; ++i) {
     20    sum += s[i];
     21  }
     22  return sum;
     23 }
     24 
     25 var worker = new Worker("audioBufferSourceNodeDetached_worker.js");
     26 
     27 var gTest = {
     28  length: 2048,
     29  numberOfChannels: 1,
     30  createGraph(context) {
     31    var buffer = context.createBuffer(1, 10000000, context.sampleRate);
     32    var data = buffer.getChannelData(0);
     33    for (var i = 0; i < data.length; ++i) {
     34      data[i] = (i%100)/100 - 0.5;
     35    }
     36 
     37    // Detach the buffer now
     38    var data = buffer.getChannelData(0).buffer;
     39    worker.postMessage(data, [data]);
     40    // Create garbage and GC to replace the buffer data with garbage
     41    SpecialPowers.gc();
     42    createGarbage();
     43    SpecialPowers.gc();
     44 
     45    var source = context.createBufferSource();
     46    source.buffer = buffer;
     47    source.start();
     48    // This should play silence
     49    return source;
     50  },
     51 };
     52 
     53 runTest();
     54 
     55 </script>
     56 </pre>
     57 </body>
     58 </html>