Bug 1208371 - Update tests to accomodate the fact that MediaStreamAudioSourceNodes lock onto the first audio track. r?padenot draft
authorAndreas Pehrson <pehrsons@gmail.com>
Tue, 05 Jan 2016 10:16:28 +0800
changeset 342137 e34b4e58f56faffee71a006f547f1d5d7deb4c8b
parent 342136 0192824ef8e7eee8a84a96f7e774307bf81436ff
child 342138 70d95aa7d8a177cdb8b969d04cd276bb6e9e0e17
push id13352
push userpehrsons@gmail.com
push dateFri, 18 Mar 2016 13:49:47 +0000
reviewerspadenot
bugs1208371
milestone47.0a1
Bug 1208371 - Update tests to accomodate the fact that MediaStreamAudioSourceNodes lock onto the first audio track. r?padenot MozReview-Commit-ID: EDRU23cBhIc
dom/media/tests/mochitest/head.js
dom/media/tests/mochitest/test_getUserMedia_addTrackRemoveTrack.html
--- a/dom/media/tests/mochitest/head.js
+++ b/dom/media/tests/mochitest/head.js
@@ -26,22 +26,23 @@ try {
  *
  * @constructor
  * @param {object} stream
  *                 A MediaStream object whose audio track we shall analyse.
  */
 function AudioStreamAnalyser(ac, stream) {
   this.audioContext = ac;
   this.stream = stream;
-  this.sourceNode = this.audioContext.createMediaStreamSource(this.stream);
+  this.sourceNodes = this.stream.getAudioTracks().map(
+    t => this.audioContext.createMediaStreamSource(new MediaStream([t])));
   this.analyser = this.audioContext.createAnalyser();
   // Setting values lower than default for speedier testing on emulators
   this.analyser.smoothingTimeConstant = 0.2;
   this.analyser.fftSize = 1024;
-  this.sourceNode.connect(this.analyser);
+  this.sourceNodes.forEach(n => n.connect(this.analyser));
   this.data = new Uint8Array(this.analyser.frequencyBinCount);
 }
 
 AudioStreamAnalyser.prototype = {
   /**
    * Get an array of frequency domain data for our stream's audio track.
    *
    * @returns {array} A Uint8Array containing the frequency domain data.
--- a/dom/media/tests/mochitest/test_getUserMedia_addTrackRemoveTrack.html
+++ b/dom/media/tests/mochitest/test_getUserMedia_addTrackRemoveTrack.html
@@ -110,51 +110,61 @@
 
       var osc5k = createOscillatorStream(ac, 5000);
       var audioTrack5k = osc5k.getTracks()[0];
 
       var osc10k = createOscillatorStream(ac, 10000);
       var audioTrack10k = osc10k.getTracks()[0];
 
       var stream = osc1k;
-      var analyser = new AudioStreamAnalyser(ac, stream);
-      analyser.enableDebugCanvas();
       return Promise.resolve().then(() => {
         info("Analysing audio output with original 1k track");
+        var analyser = new AudioStreamAnalyser(ac, stream);
+        analyser.enableDebugCanvas();
         return analyser.waitForAnalysisSuccess(array =>
                  array[analyser.binIndexForFrequency(50)] < 50 &&
                  array[analyser.binIndexForFrequency(1000)] > 200 &&
                  array[analyser.binIndexForFrequency(5000)] < 50 &&
-                 array[analyser.binIndexForFrequency(10000)] < 50);
+                 array[analyser.binIndexForFrequency(10000)] < 50)
+          .then(() => analyser.disableDebugCanvas());
       }).then(() => {
+        info("Analysing audio output with removed original 1k track and added 5k track");
         stream.removeTrack(audioTrack1k);
         stream.addTrack(audioTrack5k);
-        info("Analysing audio output with removed original 1k track and added 5k track");
+        var analyser = new AudioStreamAnalyser(ac, stream);
+        analyser.enableDebugCanvas();
         return analyser.waitForAnalysisSuccess(array =>
                  array[analyser.binIndexForFrequency(1000)] < 50 &&
                  array[analyser.binIndexForFrequency(5000)] > 200 &&
-                 array[analyser.binIndexForFrequency(10000)] < 50);
+                 array[analyser.binIndexForFrequency(10000)] < 50)
+          .then(() => analyser.disableDebugCanvas());
       }).then(() => {
+        info("Analysing audio output with removed 5k track and added 10k track");
         stream.removeTrack(audioTrack5k);
         stream.addTrack(audioTrack10k);
-        info("Analysing audio output with removed 5k track and added 10k track");
+        var analyser = new AudioStreamAnalyser(ac, stream);
+        analyser.enableDebugCanvas();
         return analyser.waitForAnalysisSuccess(array =>
                  array[analyser.binIndexForFrequency(1000)] < 50 &&
                  array[analyser.binIndexForFrequency(5000)] < 50 &&
-                 array[analyser.binIndexForFrequency(10000)] > 200);
+                 array[analyser.binIndexForFrequency(10000)] > 200)
+          .then(() => analyser.disableDebugCanvas());
       }).then(() => {
+        info("Analysing audio output with re-added 1k, 5k and added 10k tracks");
         stream.addTrack(audioTrack1k);
         stream.addTrack(audioTrack5k);
-        info("Analysing audio output with re-added 1k, 5k and added 10k tracks");
+        var analyser = new AudioStreamAnalyser(ac, stream);
+        analyser.enableDebugCanvas();
         return analyser.waitForAnalysisSuccess(array =>
                  array[analyser.binIndexForFrequency(50)] < 50 &&
                  array[analyser.binIndexForFrequency(1000)] > 200 &&
                  array[analyser.binIndexForFrequency(2500)] < 50 &&
                  array[analyser.binIndexForFrequency(5000)] > 200 &&
                  array[analyser.binIndexForFrequency(7500)] < 50 &&
                  array[analyser.binIndexForFrequency(10000)] > 200 &&
-                 array[analyser.binIndexForFrequency(11000)] < 50);
+                 array[analyser.binIndexForFrequency(11000)] < 50)
+          .then(() => analyser.disableDebugCanvas());
       });
     }));
 </script>
 </pre>
 </body>
 </html>