Bug 1208371 - Update tests to accomodate the fact that MediaStreamAudioSourceNodes lock onto the first audio track. r?padenot
MozReview-Commit-ID: EDRU23cBhIc
--- 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>