Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 <!DOCTYPE HTML>
2 <html>
3 <head>
4 <title>Test AudioBufferSourceNode when an AudioBuffer's getChanneData array is neutered</title>
5 <script type="text/javascript" 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">
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 }
25 var worker = new Worker("audioBufferSourceNodeNeutered_worker.js");
27 var gTest = {
28 length: 2048,
29 numberOfChannels: 1,
30 createGraph: function(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 }
37 // Neuter 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();
45 var source = context.createBufferSource();
46 source.buffer = buffer;
47 source.start();
48 // This should play silence
49 return source;
50 },
51 };
53 runTest();
55 </script>
56 </pre>
57 </body>
58 </html>