Bug 1472550 - Add a little regression test. r=karlt draft
authorPaul Adenot <paul@paul.cx>
Fri, 06 Jul 2018 18:58:21 +0200
changeset 817784 6161e33d7d8ef83eb5e16a4570a770401dd672cd
parent 817783 7eb4af260a0f5880a2d563d47cc92bca85eff2bb
child 817785 21a1ba490f499572d356ef8dbc3da89d699530cb
child 817800 99d70991717012029e90869b0735cec11dcef8fe
push id116162
push userpaul@paul.cx
push dateFri, 13 Jul 2018 12:47:51 +0000
reviewerskarlt
bugs1472550
milestone63.0a1
Bug 1472550 - Add a little regression test. r=karlt A more involved test exists as a web-platform-tests, but we can't run it because it makes use of AudioListener AudioParam, that we don't have right now. MozReview-Commit-ID: 8QJ12cGVRbQ
dom/media/webaudio/test/mochitest.ini
dom/media/webaudio/test/test_pannerNode_audioparam_distance.html
--- a/dom/media/webaudio/test/mochitest.ini
+++ b/dom/media/webaudio/test/mochitest.ini
@@ -193,16 +193,17 @@ skip-if = toolkit == 'android' # bug 109
 [test_oscillatorNode.html]
 [test_oscillatorNode2.html]
 [test_oscillatorNodeNegativeFrequency.html]
 [test_oscillatorNodePassThrough.html]
 [test_oscillatorNodeStart.html]
 [test_oscillatorTypeChange.html]
 [test_pannerNode.html]
 [test_pannerNode_equalPower.html]
+[test_pannerNode_audioparam_distance.html]
 [test_pannerNodeAbove.html]
 [test_pannerNodeAtZeroDistance.html]
 [test_pannerNodeChannelCount.html]
 [test_pannerNodeHRTFSymmetry.html]
 [test_pannerNodeTail.html]
 [test_pannerNode_maxDistance.html]
 [test_setValueCurveWithNonFiniteElements.html]
 [test_stereoPannerNode.html]
new file mode 100644
--- /dev/null
+++ b/dom/media/webaudio/test/test_pannerNode_audioparam_distance.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Distance effect of a PannerNode with the position set via AudioParams (Bug 1472550)</title>
+  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <script type="text/javascript" src="webaudio.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</head>
+<body>
+<pre id="test">
+<script class="testbody" type="text/javascript">
+ SimpleTest.waitForExplicitFinish();
+ var o = new OfflineAudioContext(2, 256, 44100);
+
+ // We want a stereo constant source.
+ var b = o.createBuffer(2, 1, 44100);
+ b.getChannelData(0)[0] = 1;
+ b.getChannelData(1)[0] = 1;
+ var c = o.createBufferSource();
+ c.buffer = b;
+ c.loop = true;
+
+ var p = o.createPanner();
+ p.positionY.setValueAtTime(1, 0);
+ p.positionX.setValueAtTime(1, 0);
+ p.positionZ.setValueAtTime(1, 0);
+
+ // Set the listener somewhere far
+ o.listener.setPosition(20, 2, 20);
+
+ c.start();
+ c.connect(p).connect(o.destination);
+
+ o.startRendering().then((ab) => {
+   // Check that the distance attenuates the sound.
+   ok(ab.getChannelData(0)[0] < 0.1, "left channel must be very quiet");
+   ok(ab.getChannelData(1)[0] < 0.1, "right channel must be very quiet");
+   SimpleTest.finish();
+ });
+</script>
+</pre>
+</body>
+</html>