Bug 1208371 - Modify WebAudio source nodes tests to wait for tracks befoure measuring nr of samples. r?padenot draft
authorAndreas Pehrson <pehrsons@gmail.com>
Tue, 05 Jan 2016 10:16:28 +0800
changeset 342138 70d95aa7d8a177cdb8b969d04cd276bb6e9e0e17
parent 342137 e34b4e58f56faffee71a006f547f1d5d7deb4c8b
child 342139 4b9a4373acb815d82e937e59d7145d8af0ca8473
push id13352
push userpehrsons@gmail.com
push dateFri, 18 Mar 2016 13:49:47 +0000
reviewerspadenot
bugs1208371
milestone47.0a1
Bug 1208371 - Modify WebAudio source nodes tests to wait for tracks befoure measuring nr of samples. r?padenot Otherwise we don't get an accurate nr-of-nonzero-samples measurement as the sources now lock on to a track (main thread) before attaching a listener. MozReview-Commit-ID: Jhsr6kgkdcM
dom/media/webaudio/test/test_mediaElementAudioSourceNode.html
dom/media/webaudio/test/test_mediaStreamAudioSourceNodeResampling.html
--- a/dom/media/webaudio/test/test_mediaElementAudioSourceNode.html
+++ b/dom/media/webaudio/test/test_mediaElementAudioSourceNode.html
@@ -9,19 +9,16 @@
 <body>
 <pre id="test">
 <script class="testbody" type="text/javascript">
 SimpleTest.waitForExplicitFinish();
 
 function test() {
   var audio = new Audio("small-shot.ogg");
   var context = new AudioContext();
-  var node = context.createMediaElementSource(audio);
-  var sp = context.createScriptProcessor(2048, 1);
-  node.connect(sp);
   var expectedMinNonzeroSampleCount;
   var expectedMaxNonzeroSampleCount;
   var nonzeroSampleCount = 0;
   var complete = false;
   var iterationCount = 0;
 
   // This test ensures we receive at least expectedSampleCount nonzero samples
   function processSamples(e) {
@@ -53,17 +50,20 @@ function test() {
         nonzeroSamplesThisBuffer == 0) {
       ok(true,
        "Check received enough nonzero samples (got " + nonzeroSampleCount + ", expected min " + expectedMinNonzeroSampleCount + ")");
       SimpleTest.finish();
       complete = true;
     }
   }
 
-  audio.oncanplaythrough = function() {
+  audio.onloadedmetadata = function() {
+    var node = context.createMediaElementSource(audio);
+    var sp = context.createScriptProcessor(2048, 1);
+    node.connect(sp);
     // Use a fuzz factor of 100 to account for samples that just happen to be zero
     expectedMinNonzeroSampleCount = Math.floor(audio.duration*context.sampleRate) - 100;
     expectedMaxNonzeroSampleCount = Math.floor(audio.duration*context.sampleRate) + 500;
     sp.onaudioprocess = processSamples;
   };
 }
 
 SpecialPowers.pushPrefEnv({"set": [["media.preload.default", 2], ["media.preload.auto", 3]]}, test);
--- a/dom/media/webaudio/test/test_mediaStreamAudioSourceNodeResampling.html
+++ b/dom/media/webaudio/test/test_mediaStreamAudioSourceNodeResampling.html
@@ -9,19 +9,16 @@
 <body>
 <pre id="test">
 <script class="testbody" type="text/javascript">
 SimpleTest.waitForExplicitFinish();
 
 function test() {
   var audio = new Audio("small-shot.ogg");
   var context = new AudioContext();
-  var node = context.createMediaStreamSource(audio.mozCaptureStreamUntilEnded());
-  var sp = context.createScriptProcessor(2048, 1, 0);
-  node.connect(sp);
   var expectedMinNonzeroSampleCount;
   var expectedMaxNonzeroSampleCount;
   var nonzeroSampleCount = 0;
   var complete = false;
   var iterationCount = 0;
 
   // This test ensures we receive at least expectedSampleCount nonzero samples
   function processSamples(e) {
@@ -53,17 +50,20 @@ function test() {
         nonzeroSamplesThisBuffer == 0) {
       ok(true,
        "Check received enough nonzero samples (got " + nonzeroSampleCount + ", expected min " + expectedMinNonzeroSampleCount + ")");
       SimpleTest.finish();
       complete = true;
     }
   }
 
-  audio.oncanplaythrough = function() {
+  audio.onloadedmetadata = function() {
+    var node = context.createMediaStreamSource(audio.mozCaptureStreamUntilEnded());
+    var sp = context.createScriptProcessor(2048, 1, 0);
+    node.connect(sp);
     // Use a fuzz factor of 100 to account for samples that just happen to be zero
     expectedMinNonzeroSampleCount = Math.floor(audio.duration*context.sampleRate) - 100;
     expectedMaxNonzeroSampleCount = Math.floor(audio.duration*context.sampleRate) + 500;
     sp.onaudioprocess = processSamples;
   };
 }
 
 SpecialPowers.pushPrefEnv({"set": [["media.preload.default", 2], ["media.preload.auto", 3]]}, test);