Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 <!DOCTYPE html> | |
| 2 <script src="../fast/js/resources/js-test-pre.js"></script> | |
| 3 <body> | |
| 4 <script> | |
| 5 description('Tests that a JavaScriptAudioNode is not prematurely GCed'); | |
| 6 var jsTestIsAsync = true; | |
| 7 | |
| 8 if (!window.internals) | |
| 9 testFailed('This test requires window.internals.'); | |
| 10 | |
| 11 // Create an audio context | |
| 12 var context = new webkitOfflineAudioContext( | |
| 13 /* channels: */ 2, /* length, frames: */ 512, /* sample rate: */ 44100.0); | |
|
Chris Rogers
2013/07/30 18:55:54
Because of internal buffering used in the ScriptPr
dominicc (has gone to gerrit)
2013/07/31 00:45:59
I cribbed these values from LayoutTests/webaudio/r
| |
| 14 | |
| 15 // Set up a source, reading from an empty buffer | |
| 16 var source = context.createBufferSource(); | |
| 17 source.buffer = context.createBuffer( | |
| 18 /* source channels: */ 2, /* length, frames: */ 512, | |
|
Chris Rogers
2013/07/30 18:55:54
Similar to above comment - I'd increase 512 -> 409
| |
| 19 /* sample rate: */ 44100.0); | |
| 20 | |
| 21 // Set up a JavaScript audio node to generate something | |
| 22 var node = context.createJavaScriptNode( | |
|
Chris Rogers
2013/07/30 18:55:54
nit: the new method name is called "createScriptPr
| |
| 23 /* buffer size: */ 512, /* input channels: */ 0, /* output channels: */ 2); | |
| 24 | |
| 25 // source -> JavaScript audio node -> destination | |
|
Chris Rogers
2013/07/30 18:55:54
"JavaScript audio node" -> "script processor node"
| |
| 26 source.connect(node); | |
| 27 node.connect(context.destination); | |
| 28 | |
| 29 // Set up something which indicates whether we're called to generate anything | |
| 30 | |
| 31 var wasCalled = false; | |
| 32 var callback = function () { wasCalled = true; }; | |
| 33 node.onaudioprocess = callback; | |
| 34 | |
| 35 // Watch the callback; if it dies, we're obviously not generating anything | |
| 36 | |
| 37 var observation = internals.observeGC(callback); | |
| 38 node = callback = null; | |
| 39 gc(); | |
| 40 var wasCollectedPrematurely = observation.wasCollected; | |
| 41 | |
| 42 // Make some noise! | |
| 43 | |
| 44 source.noteOn(0); | |
|
Chris Rogers
2013/07/30 18:55:54
new method name: noteOn() -> start()
| |
| 45 context.oncomplete = finishTest; | |
| 46 context.startRendering(); | |
| 47 | |
| 48 function finishTest() { | |
| 49 shouldBeFalse('wasCollectedPrematurely'); | |
| 50 shouldBeTrue('wasCalled'); | |
| 51 finishJSTest(); | |
| 52 } | |
| 53 | |
| 54 var successfullyParsed = true; | |
| 55 </script> | |
| 56 <script src="../fast/js/resources/js-test-post.js"></script> | |
| OLD | NEW |