test_oscillatorNode2.html (1324B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Test OscillatorNode lifetime and sine phase</title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 7 </head> 8 <body> 9 <pre id="test"> 10 <script src="webaudio.js" type="text/javascript"></script> 11 <script class="testbody" type="text/javascript"> 12 13 const signalLength = 2048; 14 15 function createOscillator(context) { 16 var osc = context.createOscillator(); 17 osc.start(0); 18 osc.stop(signalLength/context.sampleRate); 19 return osc; 20 } 21 22 function connectUnreferencedOscillator(context, destination) { 23 var osc = createOscillator(context); 24 osc.connect(destination); 25 } 26 27 var gTest = { 28 length: signalLength, 29 numberOfChannels: 1, 30 createGraph(context) { 31 var blend = context.createGain(); 32 33 connectUnreferencedOscillator(context, blend); 34 // Test that the unreferenced oscillator remains alive until it has finished. 35 SpecialPowers.forceGC(); 36 SpecialPowers.forceCC(); 37 38 // Create another sine wave oscillator in negative time, which should 39 // cancel when mixed with the unreferenced oscillator. 40 var oscillator = createOscillator(context); 41 oscillator.frequency.value = -440; 42 oscillator.connect(blend); 43 44 return blend; 45 }, 46 }; 47 48 runTest(); 49 50 </script> 51 </pre> 52 </body> 53 </html>