Diff
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (265265 => 265266)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2020-08-04 23:01:49 UTC (rev 265266)
@@ -1,5 +1,21 @@
2020-08-04 Chris Dumez <cdu...@apple.com>
+ Align AudioListener with the W3C specification
+ https://bugs.webkit.org/show_bug.cgi?id=215134
+
+ Reviewed by Geoffrey Garen.
+
+ Rebaseline WPT tests now that more checks are passing.
+
+ * web-platform-tests/webaudio/historical-expected.txt:
+ * web-platform-tests/webaudio/idlharness.https.window-expected.txt:
+ * web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/ctor-panner-expected.txt:
+ * web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic-expected.txt:
+ * web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-automation-position-expected.txt:
+ * web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/pannernode-basic-expected.txt:
+
+2020-08-04 Chris Dumez <cdu...@apple.com>
+
Align AudioBufferSourceNode's start() / stop() with the specification
https://bugs.webkit.org/show_bug.cgi?id=215130
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/historical-expected.txt (265265 => 265266)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/historical-expected.txt 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/historical-expected.txt 2020-08-04 23:01:49 UTC (rev 265266)
@@ -2,8 +2,8 @@
FAIL webkitAudioContext interface should not exist assert_false: expected false got true
FAIL webkitAudioPannerNode interface should not exist assert_false: expected false got true
FAIL webkitOfflineAudioContext interface should not exist assert_false: expected false got true
-FAIL dopplerFactor member should not exist on the AudioListener. assert_false: expected false got true
-FAIL speedOfSound member should not exist on the AudioListener. assert_false: expected false got true
-FAIL setVelocity member should not exist on the AudioListener. assert_false: expected false got true
+PASS dopplerFactor member should not exist on the AudioListener.
+PASS speedOfSound member should not exist on the AudioListener.
+PASS setVelocity member should not exist on the AudioListener.
PASS setVelocity should not exist on PannerNodes.
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/idlharness.https.window-expected.txt (265265 => 265266)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/idlharness.https.window-expected.txt 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/idlharness.https.window-expected.txt 2020-08-04 23:01:49 UTC (rev 265266)
@@ -406,28 +406,28 @@
PASS AudioListener interface: existence and properties of interface prototype object
PASS AudioListener interface: existence and properties of interface prototype object's "constructor" property
PASS AudioListener interface: existence and properties of interface prototype object's @@unscopables property
-FAIL AudioListener interface: attribute positionX assert_true: The prototype object must have a property "positionX" expected true got false
-FAIL AudioListener interface: attribute positionY assert_true: The prototype object must have a property "positionY" expected true got false
-FAIL AudioListener interface: attribute positionZ assert_true: The prototype object must have a property "positionZ" expected true got false
-FAIL AudioListener interface: attribute forwardX assert_true: The prototype object must have a property "forwardX" expected true got false
-FAIL AudioListener interface: attribute forwardY assert_true: The prototype object must have a property "forwardY" expected true got false
-FAIL AudioListener interface: attribute forwardZ assert_true: The prototype object must have a property "forwardZ" expected true got false
-FAIL AudioListener interface: attribute upX assert_true: The prototype object must have a property "upX" expected true got false
-FAIL AudioListener interface: attribute upY assert_true: The prototype object must have a property "upY" expected true got false
-FAIL AudioListener interface: attribute upZ assert_true: The prototype object must have a property "upZ" expected true got false
+PASS AudioListener interface: attribute positionX
+PASS AudioListener interface: attribute positionY
+PASS AudioListener interface: attribute positionZ
+PASS AudioListener interface: attribute forwardX
+PASS AudioListener interface: attribute forwardY
+PASS AudioListener interface: attribute forwardZ
+PASS AudioListener interface: attribute upX
+PASS AudioListener interface: attribute upY
+PASS AudioListener interface: attribute upZ
PASS AudioListener interface: operation setPosition(float, float, float)
PASS AudioListener interface: operation setOrientation(float, float, float, float, float, float)
PASS AudioListener must be primary interface of context.listener
PASS Stringification of context.listener
-FAIL AudioListener interface: context.listener must inherit property "positionX" with the proper type assert_inherits: property "positionX" not found in prototype chain
-FAIL AudioListener interface: context.listener must inherit property "positionY" with the proper type assert_inherits: property "positionY" not found in prototype chain
-FAIL AudioListener interface: context.listener must inherit property "positionZ" with the proper type assert_inherits: property "positionZ" not found in prototype chain
-FAIL AudioListener interface: context.listener must inherit property "forwardX" with the proper type assert_inherits: property "forwardX" not found in prototype chain
-FAIL AudioListener interface: context.listener must inherit property "forwardY" with the proper type assert_inherits: property "forwardY" not found in prototype chain
-FAIL AudioListener interface: context.listener must inherit property "forwardZ" with the proper type assert_inherits: property "forwardZ" not found in prototype chain
-FAIL AudioListener interface: context.listener must inherit property "upX" with the proper type assert_inherits: property "upX" not found in prototype chain
-FAIL AudioListener interface: context.listener must inherit property "upY" with the proper type assert_inherits: property "upY" not found in prototype chain
-FAIL AudioListener interface: context.listener must inherit property "upZ" with the proper type assert_inherits: property "upZ" not found in prototype chain
+PASS AudioListener interface: context.listener must inherit property "positionX" with the proper type
+PASS AudioListener interface: context.listener must inherit property "positionY" with the proper type
+PASS AudioListener interface: context.listener must inherit property "positionZ" with the proper type
+PASS AudioListener interface: context.listener must inherit property "forwardX" with the proper type
+PASS AudioListener interface: context.listener must inherit property "forwardY" with the proper type
+PASS AudioListener interface: context.listener must inherit property "forwardZ" with the proper type
+PASS AudioListener interface: context.listener must inherit property "upX" with the proper type
+PASS AudioListener interface: context.listener must inherit property "upY" with the proper type
+PASS AudioListener interface: context.listener must inherit property "upZ" with the proper type
PASS AudioListener interface: context.listener must inherit property "setPosition(float, float, float)" with the proper type
PASS AudioListener interface: calling setPosition(float, float, float) on context.listener with too few arguments must throw TypeError
PASS AudioListener interface: context.listener must inherit property "setOrientation(float, float, float, float, float, float)" with the proper type
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/ctor-panner-expected.txt (265265 => 265266)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/ctor-panner-expected.txt 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/ctor-panner-expected.txt 2020-08-04 23:01:49 UTC (rev 265266)
@@ -2,7 +2,7 @@
PASS # AUDIT TASK RUNNER STARTED.
PASS Executing "initialize"
PASS Executing "invalid constructor"
-FAIL Executing "default constructor" promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'context.listener[item.name].value')"
+PASS Executing "default constructor"
PASS Executing "test AudioNodeOptions"
PASS Executing "constructor with options"
PASS Audit report
@@ -36,6 +36,16 @@
PASS node0.coneInnerAngle is equal to 360.
PASS node0.coneOuterAngle is equal to 360.
PASS node0.coneOuterGain is equal to 0.
+PASS context.listener.positionX.value is equal to 0.
+PASS context.listener.positionY.value is equal to 0.
+PASS context.listener.positionZ.value is equal to 0.
+PASS context.listener.forwardX.value is equal to 0.
+PASS context.listener.forwardY.value is equal to 0.
+PASS context.listener.forwardZ.value is equal to -1.
+PASS context.listener.upX.value is equal to 0.
+PASS context.listener.upY.value is equal to 1.
+PASS context.listener.upZ.value is equal to 0.
+PASS < [default constructor] All assertions passed. (total 30 assertions)
PASS > [test AudioNodeOptions]
PASS node1 = new PannerNode(c, {"channelCount":1}) did not throw an exception.
PASS node1.channelCount is equal to 1.
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic-expected.txt (265265 => 265266)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic-expected.txt 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic-expected.txt 2020-08-04 23:01:49 UTC (rev 265266)
@@ -8,12 +8,12 @@
PASS Executing "Mono panner.positionY"
PASS Executing "Stereo panner.positionZ"
PASS Executing "Mono panner.positionZ"
-FAIL Executing "Stereo listener.positionX" promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'pannerSetter.value = 1')"
-FAIL Executing "Mono listener.positionX" promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'pannerSetter.value = 1')"
-FAIL Executing "Stereo listener.positionY" promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'pannerSetter.value = 1')"
-FAIL Executing "Mono listener.positionY" promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'pannerSetter.value = 1')"
-FAIL Executing "Stereo listener.positionZ" promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'pannerSetter.value = 1')"
-FAIL Executing "Mono listener.positionZ" promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'pannerSetter.value = 1')"
+PASS Executing "Stereo listener.positionX"
+PASS Executing "Mono listener.positionX"
+PASS Executing "Stereo listener.positionY"
+PASS Executing "Mono listener.positionY"
+PASS Executing "Stereo listener.positionZ"
+PASS Executing "Mono listener.positionZ"
PASS Executing "setPosition"
PASS Executing "orientation setter"
PASS Executing "forward setter"
@@ -68,11 +68,53 @@
FAIL X Mono panner.positionZ: Output at frame 128 channel 1 should not be equal to 0. Got 0. assert_true: expected true got false
FAIL < [Mono panner.positionZ] 2 out of 6 assertions were failed. assert_true: expected true got false
PASS > [Stereo listener.positionX]
+PASS Stereo listener.positionX.value frame [0, 128) channel 0 contains only the constant 0.
+PASS Stereo listener.positionX.value frame [0, 128) channel 1 contains only the constant 0.
+PASS Stereo listener.positionX.value frame [128, 256) channel 0 contains only the constant 0.
+PASS Stereo listener.positionX.value frame [128, 256) channel 1 contains only the constant 0.
+FAIL X Stereo listener.positionX: Output at frame 128 channel 0 should not be equal to 0. Got 0. assert_true: expected true got false
+FAIL X Stereo listener.positionX: Output at frame 128 channel 1 should not be equal to 0. Got 0. assert_true: expected true got false
+FAIL < [Stereo listener.positionX] 2 out of 6 assertions were failed. assert_true: expected true got false
PASS > [Mono listener.positionX]
+PASS Mono listener.positionX.value frame [0, 128) channel 0 contains only the constant 0.
+PASS Mono listener.positionX.value frame [0, 128) channel 1 contains only the constant 0.
+PASS Mono listener.positionX.value frame [128, 256) channel 0 contains only the constant 0.
+PASS Mono listener.positionX.value frame [128, 256) channel 1 contains only the constant 0.
+FAIL X Mono listener.positionX: Output at frame 128 channel 0 should not be equal to 0. Got 0. assert_true: expected true got false
+FAIL X Mono listener.positionX: Output at frame 128 channel 1 should not be equal to 0. Got 0. assert_true: expected true got false
+FAIL < [Mono listener.positionX] 2 out of 6 assertions were failed. assert_true: expected true got false
PASS > [Stereo listener.positionY]
+PASS Stereo listener.positionY.value frame [0, 128) channel 0 contains only the constant 0.
+PASS Stereo listener.positionY.value frame [0, 128) channel 1 contains only the constant 0.
+PASS Stereo listener.positionY.value frame [128, 256) channel 0 contains only the constant 0.
+PASS Stereo listener.positionY.value frame [128, 256) channel 1 contains only the constant 0.
+FAIL X Stereo listener.positionY: Output at frame 128 channel 0 should not be equal to 0. Got 0. assert_true: expected true got false
+FAIL X Stereo listener.positionY: Output at frame 128 channel 1 should not be equal to 0. Got 0. assert_true: expected true got false
+FAIL < [Stereo listener.positionY] 2 out of 6 assertions were failed. assert_true: expected true got false
PASS > [Mono listener.positionY]
+PASS Mono listener.positionY.value frame [0, 128) channel 0 contains only the constant 0.
+PASS Mono listener.positionY.value frame [0, 128) channel 1 contains only the constant 0.
+PASS Mono listener.positionY.value frame [128, 256) channel 0 contains only the constant 0.
+PASS Mono listener.positionY.value frame [128, 256) channel 1 contains only the constant 0.
+FAIL X Mono listener.positionY: Output at frame 128 channel 0 should not be equal to 0. Got 0. assert_true: expected true got false
+FAIL X Mono listener.positionY: Output at frame 128 channel 1 should not be equal to 0. Got 0. assert_true: expected true got false
+FAIL < [Mono listener.positionY] 2 out of 6 assertions were failed. assert_true: expected true got false
PASS > [Stereo listener.positionZ]
+PASS Stereo listener.positionZ.value frame [0, 128) channel 0 contains only the constant 0.
+PASS Stereo listener.positionZ.value frame [0, 128) channel 1 contains only the constant 0.
+PASS Stereo listener.positionZ.value frame [128, 256) channel 0 contains only the constant 0.
+PASS Stereo listener.positionZ.value frame [128, 256) channel 1 contains only the constant 0.
+FAIL X Stereo listener.positionZ: Output at frame 128 channel 0 should not be equal to 0. Got 0. assert_true: expected true got false
+FAIL X Stereo listener.positionZ: Output at frame 128 channel 1 should not be equal to 0. Got 0. assert_true: expected true got false
+FAIL < [Stereo listener.positionZ] 2 out of 6 assertions were failed. assert_true: expected true got false
PASS > [Mono listener.positionZ]
+PASS Mono listener.positionZ.value frame [0, 128) channel 0 contains only the constant 0.
+PASS Mono listener.positionZ.value frame [0, 128) channel 1 contains only the constant 0.
+PASS Mono listener.positionZ.value frame [128, 256) channel 0 contains only the constant 0.
+PASS Mono listener.positionZ.value frame [128, 256) channel 1 contains only the constant 0.
+FAIL X Mono listener.positionZ: Output at frame 128 channel 0 should not be equal to 0. Got 0. assert_true: expected true got false
+FAIL X Mono listener.positionZ: Output at frame 128 channel 1 should not be equal to 0. Got 0. assert_true: expected true got false
+FAIL < [Mono listener.positionZ] 2 out of 6 assertions were failed. assert_true: expected true got false
PASS > [setPosition]
PASS setPosition.value frame [0, 128) channel 0 contains only the constant 0.
PASS setPosition.value frame [0, 128) channel 1 contains only the constant 0.
@@ -105,5 +147,5 @@
FAIL X listener.up{XYZ}: Output at frame 128 channel 0 should not be equal to 0. Got 0. assert_true: expected true got false
FAIL X listener.up{XYZ}: Output at frame 128 channel 1 should not be equal to 0. Got 0. assert_true: expected true got false
FAIL < [up setter] 2 out of 6 assertions were failed. assert_true: expected true got false
-FAIL # AUDIT TASK RUNNER FINISHED: 10 out of 16 tasks were failed. assert_true: expected true got false
+FAIL # AUDIT TASK RUNNER FINISHED: 16 out of 16 tasks were failed. assert_true: expected true got false
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-automation-position-expected.txt (265265 => 265266)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-automation-position-expected.txt 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-automation-position-expected.txt 2020-08-04 23:01:49 UTC (rev 265266)
@@ -1,16 +1,85 @@
-CONSOLE MESSAGE: Unhandled Promise Rejection: TypeError: undefined is not an object (evaluating 'context.listener.positionX.value')
-Harness Error (FAIL), message = Unhandled rejection: undefined is not an object (evaluating 'context.listener.positionX.value')
-
PASS # AUDIT TASK RUNNER STARTED.
-TIMEOUT Executing "0: 1-channel inverse rolloff: 1" Test timed out
-NOTRUN Executing "0: 2-channel inverse rolloff: 1"
-NOTRUN Executing "1: 1-channel inverse rolloff: 1"
-NOTRUN Executing "1: 2-channel inverse rolloff: 1"
-NOTRUN Executing "2: 1-channel exponential rolloff: 1.5"
-NOTRUN Executing "2: 2-channel exponential rolloff: 1.5"
-NOTRUN Executing "3: 1-channel linear rolloff: 1"
-NOTRUN Executing "3: 2-channel linear rolloff: 1"
-NOTRUN Audit report
+PASS Executing "0: 1-channel inverse rolloff: 1"
+PASS Executing "0: 2-channel inverse rolloff: 1"
+PASS Executing "1: 1-channel inverse rolloff: 1"
+PASS Executing "1: 2-channel inverse rolloff: 1"
+PASS Executing "2: 1-channel exponential rolloff: 1.5"
+PASS Executing "2: 2-channel exponential rolloff: 1.5"
+PASS Executing "3: 1-channel linear rolloff: 1"
+PASS Executing "3: 2-channel linear rolloff: 1"
+PASS Audit report
PASS > [0: 1-channel inverse rolloff: 1]
+FAIL X 1-channel [0, 0, 1] -> [0, 0, 10000]: distanceModel: inverse, rolloff: 1, left channel does not equal [-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.
+ Index Actual Expected AbsError RelError Test threshold
+ [0] 7.0710676908493042e-1 -7.0710676908493042e-1 1.4142135381698608e+0 2.0000000000000000e+0 0.0000000000000000e+0
+ [1] 7.0710676908493042e-1 -7.0710676908493042e-1 1.4142135381698608e+0 2.0000000000000000e+0 0.0000000000000000e+0
+ [2] 7.0710676908493042e-1 -7.0710676908493042e-1 1.4142135381698608e+0 2.0000000000000000e+0 0.0000000000000000e+0
+ [3] 7.0710676908493042e-1 -7.0710676908493042e-1 1.4142135381698608e+0 2.0000000000000000e+0 0.0000000000000000e+0
+ [4] 7.0710676908493042e-1 -7.0710676908493042e-1 1.4142135381698608e+0 2.0000000000000000e+0 0.0000000000000000e+0
+ ...and 251 more errors.
+ Max AbsError of 1.4142135381698608e+0 at index of 0.
+ Max RelError of 2.0000000000000000e+0 at index of 0.
+ assert_true: expected true got false
+FAIL X 1-channel [0, 0, 1] -> [0, 0, 10000]: distanceModel: inverse, rolloff: 1, right channel does not equal [0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.
+ Index Actual Expected AbsError RelError Test threshold
+ [128] 1.0606071009533480e-4 7.0710676908493042e-1 7.0700070837483509e-1 9.9985000750278119e-1 0.0000000000000000e+0
+ [129] 1.0606071009533480e-4 7.0710676908493042e-1 7.0700070837483509e-1 9.9985000750278119e-1 0.0000000000000000e+0
+ [130] 1.0606071009533480e-4 7.0710676908493042e-1 7.0700070837483509e-1 9.9985000750278119e-1 0.0000000000000000e+0
+ [131] 1.0606071009533480e-4 7.0710676908493042e-1 7.0700070837483509e-1 9.9985000750278119e-1 0.0000000000000000e+0
+ [132] 1.0606071009533480e-4 7.0710676908493042e-1 7.0700070837483509e-1 9.9985000750278119e-1 0.0000000000000000e+0
+ ...and 123 more errors.
+ Max AbsError of 7.0700070837483509e-1 at index of 128.
+ Max RelError of 9.9985000750278119e-1 at index of 128.
+ assert_true: expected true got false
+FAIL < [0: 1-channel inverse rolloff: 1] 2 out of 2 assertions were failed. assert_true: expected true got false
+PASS > [0: 2-channel inverse rolloff: 1]
+FAIL X 2-channel [0, 0, 1] -> [0, 0, 10000]: distanceModel: inverse, rolloff: 1, left channel does not equal [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.
+ Index Actual Expected AbsError RelError Test threshold
+ [0] 1.0000001192092896e+0 -1.0000000000000000e+0 2.0000001192092896e+0 2.0000001192092896e+0 0.0000000000000000e+0
+ [1] 1.0000001192092896e+0 -1.0000000000000000e+0 2.0000001192092896e+0 2.0000001192092896e+0 0.0000000000000000e+0
+ [2] 1.0000001192092896e+0 -1.0000000000000000e+0 2.0000001192092896e+0 2.0000001192092896e+0 0.0000000000000000e+0
+ [3] 1.0000001192092896e+0 -1.0000000000000000e+0 2.0000001192092896e+0 2.0000001192092896e+0 0.0000000000000000e+0
+ [4] 1.0000001192092896e+0 -1.0000000000000000e+0 2.0000001192092896e+0 2.0000001192092896e+0 0.0000000000000000e+0
+ ...and 251 more errors.
+ Max AbsError of 2.0000001192092896e+0 at index of 0.
+ Max RelError of 2.0000001192092896e+0 at index of 0.
+ assert_true: expected true got false
+FAIL X 2-channel [0, 0, 1] -> [0, 0, 10000]: distanceModel: inverse, rolloff: 1, right channel does not equal [2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.
+ Index Actual Expected AbsError RelError Test threshold
+ [0] 2.0000000000000000e+0 2.4492937051703357e-16 1.9999999999999998e+0 8.1656193202885410e+15 0.0000000000000000e+0
+ [1] 2.0000000000000000e+0 2.4492937051703357e-16 1.9999999999999998e+0 8.1656193202885410e+15 0.0000000000000000e+0
+ [2] 2.0000000000000000e+0 2.4492937051703357e-16 1.9999999999999998e+0 8.1656193202885410e+15 0.0000000000000000e+0
+ [3] 2.0000000000000000e+0 2.4492937051703357e-16 1.9999999999999998e+0 8.1656193202885410e+15 0.0000000000000000e+0
+ [4] 2.0000000000000000e+0 2.4492937051703357e-16 1.9999999999999998e+0 8.1656193202885410e+15 0.0000000000000000e+0
+ ...and 251 more errors.
+ Max AbsError of 1.9999999999999998e+0 at index of 0.
+ Max RelError of 8.1656193202885410e+15 at index of 0.
+ assert_true: expected true got false
+FAIL < [0: 2-channel inverse rolloff: 1] 2 out of 2 assertions were failed. assert_true: expected true got false
+PASS > [1: 1-channel inverse rolloff: 1]
+PASS 1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: inverse, rolloff: 1, left channel equals [-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":4.8124e-7},"relativeThreshold":0}.
+PASS 1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: inverse, rolloff: 1, right channel equals [0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":4.8124e-7},"relativeThreshold":0}.
+PASS < [1: 1-channel inverse rolloff: 1] All assertions passed. (total 2 assertions)
+PASS > [1: 2-channel inverse rolloff: 1]
+PASS 2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: inverse, rolloff: 1, left channel equals [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":4.3267e-7},"relativeThreshold":0}.
+PASS 2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: inverse, rolloff: 1, right channel equals [2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":4.3267e-7},"relativeThreshold":0}.
+PASS < [1: 2-channel inverse rolloff: 1] All assertions passed. (total 2 assertions)
+PASS > [2: 1-channel exponential rolloff: 1.5]
+PASS 1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: exponential, rolloff: 1.5, left channel equals [-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":5.0783e-7},"relativeThreshold":0}.
+PASS 1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: exponential, rolloff: 1.5, right channel equals [0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":5.0783e-7},"relativeThreshold":0}.
+PASS < [2: 1-channel exponential rolloff: 1.5] All assertions passed. (total 2 assertions)
+PASS > [2: 2-channel exponential rolloff: 1.5]
+PASS 2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: exponential, rolloff: 1.5, left channel equals [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":5.218e-7},"relativeThreshold":0}.
+PASS 2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: exponential, rolloff: 1.5, right channel equals [2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":5.218e-7},"relativeThreshold":0}.
+PASS < [2: 2-channel exponential rolloff: 1.5] All assertions passed. (total 2 assertions)
+PASS > [3: 1-channel linear rolloff: 1]
+PASS 1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: linear, rolloff: 1, left channel equals [-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":0.0000065324},"relativeThreshold":0}.
+PASS 1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: linear, rolloff: 1, right channel equals [0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":0.0000065324},"relativeThreshold":0}.
+PASS < [3: 1-channel linear rolloff: 1] All assertions passed. (total 2 assertions)
+PASS > [3: 2-channel linear rolloff: 1]
+PASS 2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: linear, rolloff: 1, left channel equals [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":0.0000065756},"relativeThreshold":0}.
+PASS 2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: linear, rolloff: 1, right channel equals [2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":0.0000065756},"relativeThreshold":0}.
+PASS < [3: 2-channel linear rolloff: 1] All assertions passed. (total 2 assertions)
+FAIL # AUDIT TASK RUNNER FINISHED: 2 out of 8 tasks were failed. assert_true: expected true got false
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/pannernode-basic-expected.txt (265265 => 265266)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/pannernode-basic-expected.txt 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/pannernode-basic-expected.txt 2020-08-04 23:01:49 UTC (rev 265266)
@@ -2,7 +2,7 @@
PASS # AUDIT TASK RUNNER STARTED.
PASS Executing "initialize"
PASS Executing "basic"
-FAIL Executing "listener" promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'context.listener.positionX.value')"
+PASS Executing "listener"
PASS Executing "panning models"
PASS Executing "distance models"
PASS Audit report
@@ -34,6 +34,16 @@
PASS panner.orientationZ is equal to 0.
PASS < [basic] All assertions passed. (total 22 assertions)
PASS > [listener]
+PASS listener.positionX is equal to 0.
+PASS listener.positionY is equal to 0.
+PASS listener.positionZ is equal to 0.
+PASS listener.forwardX is equal to 0.
+PASS listener.forwardY is equal to 0.
+PASS listener.forwardZ is equal to -1.
+PASS listener.upX is equal to 0.
+PASS listener.upY is equal to 1.
+PASS listener.upZ is equal to 0.
+PASS < [listener] All assertions passed. (total 9 assertions)
PASS > [panning models]
PASS Set panner.panningModel = "equalpower" did not throw an exception.
PASS panner.panningModel = "equalpower" is equal to equalpower.
Modified: trunk/Source/WebCore/CMakeLists.txt (265265 => 265266)
--- trunk/Source/WebCore/CMakeLists.txt 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/CMakeLists.txt 2020-08-04 23:01:49 UTC (rev 265266)
@@ -500,6 +500,7 @@
Modules/webaudio/WaveShaperOptions.idl
Modules/webaudio/WebKitAudioBufferSourceNode.idl
Modules/webaudio/WebKitAudioContext.idl
+ Modules/webaudio/WebKitAudioListener.idl
Modules/webaudio/WebKitAudioPannerNode.idl
Modules/webaudio/WebKitOfflineAudioContext.idl
Modules/webaudio/WebKitOscillatorNode.idl
Modified: trunk/Source/WebCore/ChangeLog (265265 => 265266)
--- trunk/Source/WebCore/ChangeLog 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/ChangeLog 2020-08-04 23:01:49 UTC (rev 265266)
@@ -1,3 +1,58 @@
+2020-08-04 Chris Dumez <cdu...@apple.com>
+
+ Align AudioListener with the W3C specification
+ https://bugs.webkit.org/show_bug.cgi?id=215134
+
+ Reviewed by Geoffrey Garen.
+
+ Align AudioListener with the W3C specification:
+ - https://webaudio.github.io/web-audio-api/#audiolistener
+
+ Note that the prefixed API still behaves the way it used to. I have maintained
+ the old version of the AudioListener API by moving it to a new
+ WebKitAudioListener interface.
+
+ No new tests, rebaselined existing tests.
+
+ * CMakeLists.txt:
+ * DerivedSources-input.xcfilelist:
+ * DerivedSources-output.xcfilelist:
+ * DerivedSources.make:
+ * Modules/webaudio/AudioListener.cpp:
+ (WebCore::AudioListener::AudioListener):
+ (WebCore::AudioListener::setPosition):
+ (WebCore::AudioListener::position const):
+ (WebCore::AudioListener::setOrientation):
+ (WebCore::AudioListener::orientation const):
+ (WebCore::AudioListener::upVector const):
+ * Modules/webaudio/AudioListener.h:
+ (WebCore::AudioListener::create):
+ (WebCore::AudioListener::positionX):
+ (WebCore::AudioListener::positionY):
+ (WebCore::AudioListener::positionZ):
+ (WebCore::AudioListener::forwardX):
+ (WebCore::AudioListener::forwardY):
+ (WebCore::AudioListener::forwardZ):
+ (WebCore::AudioListener::upX):
+ (WebCore::AudioListener::upY):
+ (WebCore::AudioListener::upZ):
+ * Modules/webaudio/AudioListener.idl:
+ * Modules/webaudio/BaseAudioContext.cpp:
+ (WebCore::BaseAudioContext::constructCommon):
+ * Modules/webaudio/PannerNode.cpp:
+ (WebCore::PannerNode::dopplerRate):
+ * Modules/webaudio/WebKitAudioContext.h:
+ (WebCore::WebKitAudioContext::listener):
+ * Modules/webaudio/WebKitAudioContext.idl:
+ * Modules/webaudio/WebKitAudioListener.h: Copied from Source/WebCore/Modules/webaudio/AudioListener.h.
+ * Modules/webaudio/WebKitAudioListener.idl: Copied from Source/WebCore/Modules/webaudio/AudioListener.idl.
+ * Modules/webaudio/WebKitAudioPannerNode.cpp:
+ (WebCore::WebKitAudioPannerNode::listener):
+ * Modules/webaudio/WebKitAudioPannerNode.h:
+ * Sources.txt:
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/WebCoreBuiltinNames.h:
+
2020-08-04 Myles C. Maxfield <mmaxfi...@apple.com>
Add glyph origins member to GlyphBuffer
Modified: trunk/Source/WebCore/DerivedSources-input.xcfilelist (265265 => 265266)
--- trunk/Source/WebCore/DerivedSources-input.xcfilelist 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/DerivedSources-input.xcfilelist 2020-08-04 23:01:49 UTC (rev 265266)
@@ -349,6 +349,7 @@
$(PROJECT_DIR)/Modules/webaudio/WaveShaperOptions.idl
$(PROJECT_DIR)/Modules/webaudio/WebKitAudioBufferSourceNode.idl
$(PROJECT_DIR)/Modules/webaudio/WebKitAudioContext.idl
+$(PROJECT_DIR)/Modules/webaudio/WebKitAudioListener.idl
$(PROJECT_DIR)/Modules/webaudio/WebKitAudioPannerNode.idl
$(PROJECT_DIR)/Modules/webaudio/WebKitOfflineAudioContext.idl
$(PROJECT_DIR)/Modules/webaudio/WebKitOscillatorNode.idl
Modified: trunk/Source/WebCore/DerivedSources-output.xcfilelist (265265 => 265266)
--- trunk/Source/WebCore/DerivedSources-output.xcfilelist 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/DerivedSources-output.xcfilelist 2020-08-04 23:01:49 UTC (rev 265266)
@@ -2134,6 +2134,8 @@
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSWebKitAudioBufferSourceNode.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSWebKitAudioContext.cpp
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSWebKitAudioContext.h
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSWebKitAudioListener.cpp
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSWebKitAudioListener.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSWebKitAudioPannerNode.cpp
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSWebKitAudioPannerNode.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSWebKitCSSMatrix.cpp
Modified: trunk/Source/WebCore/DerivedSources.make (265265 => 265266)
--- trunk/Source/WebCore/DerivedSources.make 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/DerivedSources.make 2020-08-04 23:01:49 UTC (rev 265266)
@@ -432,6 +432,7 @@
$(WebCore)/Modules/webaudio/WaveShaperOptions.idl \
$(WebCore)/Modules/webaudio/WebKitAudioBufferSourceNode.idl \
$(WebCore)/Modules/webaudio/WebKitAudioContext.idl \
+ $(WebCore)/Modules/webaudio/WebKitAudioListener.idl \
$(WebCore)/Modules/webaudio/WebKitAudioPannerNode.idl \
$(WebCore)/Modules/webaudio/WebKitOfflineAudioContext.idl \
$(WebCore)/Modules/webaudio/WebKitOscillatorNode.idl \
Modified: trunk/Source/WebCore/Modules/webaudio/AudioListener.cpp (265265 => 265266)
--- trunk/Source/WebCore/Modules/webaudio/AudioListener.cpp 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/Modules/webaudio/AudioListener.cpp 2020-08-04 23:01:49 UTC (rev 265266)
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2020 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -31,21 +32,59 @@
#if ENABLE(WEB_AUDIO)
#include "AudioListener.h"
+#include "AudioParam.h"
#include "AudioBus.h"
namespace WebCore {
-AudioListener::AudioListener()
- : m_position(0, 0, 0)
- , m_orientation(0, 0, -1)
- , m_upVector(0, 1, 0)
- , m_velocity(0, 0, 0)
- , m_dopplerFactor(1)
- , m_speedOfSound(343.3)
+AudioListener::AudioListener(BaseAudioContext& context)
+ : m_positionX(AudioParam::create(context, "positionX", 0.0, -FLT_MAX, FLT_MAX))
+ , m_positionY(AudioParam::create(context, "positionY", 0.0, -FLT_MAX, FLT_MAX))
+ , m_positionZ(AudioParam::create(context, "positionZ", 0.0, -FLT_MAX, FLT_MAX))
+ , m_forwardX(AudioParam::create(context, "forwardX", 0.0, -FLT_MAX, FLT_MAX))
+ , m_forwardY(AudioParam::create(context, "forwardY", 0.0, -FLT_MAX, FLT_MAX))
+ , m_forwardZ(AudioParam::create(context, "forwardZ", -1.0, -FLT_MAX, FLT_MAX))
+ , m_upX(AudioParam::create(context, "upX", 0.0, -FLT_MAX, FLT_MAX))
+ , m_upY(AudioParam::create(context, "upY", 1.0, -FLT_MAX, FLT_MAX))
+ , m_upZ(AudioParam::create(context, "upZ", 0.0, -FLT_MAX, FLT_MAX))
{
}
+AudioListener::~AudioListener() = default;
+
+void AudioListener::setPosition(float x, float y, float z)
+{
+ m_positionX->setValue(x);
+ m_positionY->setValue(y);
+ m_positionZ->setValue(z);
+}
+
+FloatPoint3D AudioListener::position() const
+{
+ return FloatPoint3D { m_positionX->value(), m_positionY->value(), m_positionZ->value() };
+}
+
+void AudioListener::setOrientation(float x, float y, float z, float upX, float upY, float upZ)
+{
+ m_forwardX->setValue(x);
+ m_forwardY->setValue(y);
+ m_forwardZ->setValue(z);
+ m_upX->setValue(upX);
+ m_upY->setValue(upY);
+ m_upZ->setValue(upZ);
+}
+
+FloatPoint3D AudioListener::orientation() const
+{
+ return FloatPoint3D { m_forwardX->value(), m_forwardY->value(), m_forwardZ->value() };
+}
+
+FloatPoint3D AudioListener::upVector() const
+{
+ return FloatPoint3D { m_upX->value(), m_upY->value(), m_upZ->value() };
+}
+
} // namespace WebCore
#endif // ENABLE(WEB_AUDIO)
Modified: trunk/Source/WebCore/Modules/webaudio/AudioListener.h (265265 => 265266)
--- trunk/Source/WebCore/Modules/webaudio/AudioListener.h 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/Modules/webaudio/AudioListener.h 2020-08-04 23:01:49 UTC (rev 265266)
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2020 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -34,58 +35,51 @@
namespace WebCore {
+class AudioParam;
+
// AudioListener maintains the state of the listener in the audio scene as defined in the OpenAL specification.
-class AudioListener final : public RefCounted<AudioListener> {
+class AudioListener : public RefCounted<AudioListener> {
public:
- static Ref<AudioListener> create()
+ static Ref<AudioListener> create(BaseAudioContext& context)
{
- return adoptRef(*new AudioListener);
+ return adoptRef(*new AudioListener(context));
}
+ ~AudioListener();
+ AudioParam& positionX() { return m_positionX.get(); }
+ AudioParam& positionY() { return m_positionY.get(); }
+ AudioParam& positionZ() { return m_positionZ.get(); }
+ AudioParam& forwardX() { return m_forwardX.get(); }
+ AudioParam& forwardY() { return m_forwardY.get(); }
+ AudioParam& forwardZ() { return m_forwardZ.get(); }
+ AudioParam& upX() { return m_upX.get(); }
+ AudioParam& upY() { return m_upY.get(); }
+ AudioParam& upZ() { return m_upZ.get(); }
+
// Position
- void setPosition(float x, float y, float z) { setPosition(FloatPoint3D(x, y, z)); }
- void setPosition(const FloatPoint3D &position) { m_position = position; }
- const FloatPoint3D& position() const { return m_position; }
+ void setPosition(float x, float y, float z);
+ FloatPoint3D position() const;
// Orientation
- void setOrientation(float x, float y, float z, float upX, float upY, float upZ)
- {
- setOrientation(FloatPoint3D(x, y, z));
- setUpVector(FloatPoint3D(upX, upY, upZ));
- }
- void setOrientation(const FloatPoint3D &orientation) { m_orientation = orientation; }
- const FloatPoint3D& orientation() const { return m_orientation; }
+ void setOrientation(float x, float y, float z, float upX, float upY, float upZ);
+ FloatPoint3D orientation() const;
- // Up-vector
- void setUpVector(const FloatPoint3D &upVector) { m_upVector = upVector; }
- const FloatPoint3D& upVector() const { return m_upVector; }
+ FloatPoint3D upVector() const;
- // Velocity
- void setVelocity(float x, float y, float z) { setVelocity(FloatPoint3D(x, y, z)); }
- void setVelocity(const FloatPoint3D &velocity) { m_velocity = velocity; }
- const FloatPoint3D& velocity() const { return m_velocity; }
+protected:
+ explicit AudioListener(BaseAudioContext&);
- // Doppler factor
- void setDopplerFactor(double dopplerFactor) { m_dopplerFactor = dopplerFactor; }
- double dopplerFactor() const { return m_dopplerFactor; }
-
- // Speed of sound
- void setSpeedOfSound(double speedOfSound) { m_speedOfSound = speedOfSound; }
- double speedOfSound() const { return m_speedOfSound; }
-
private:
- AudioListener();
-
- // Position / Orientation
- FloatPoint3D m_position;
- FloatPoint3D m_orientation;
- FloatPoint3D m_upVector;
-
- FloatPoint3D m_velocity;
-
- double m_dopplerFactor;
- double m_speedOfSound;
+ Ref<AudioParam> m_positionX;
+ Ref<AudioParam> m_positionY;
+ Ref<AudioParam> m_positionZ;
+ Ref<AudioParam> m_forwardX;
+ Ref<AudioParam> m_forwardY;
+ Ref<AudioParam> m_forwardZ;
+ Ref<AudioParam> m_upX;
+ Ref<AudioParam> m_upY;
+ Ref<AudioParam> m_upZ;
};
} // namespace WebCore
Modified: trunk/Source/WebCore/Modules/webaudio/AudioListener.idl (265265 => 265266)
--- trunk/Source/WebCore/Modules/webaudio/AudioListener.idl 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/Modules/webaudio/AudioListener.idl 2020-08-04 23:01:49 UTC (rev 265266)
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2020 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -29,11 +30,18 @@
[
Conditional=WEB_AUDIO,
ImplementationLacksVTable,
+ EnabledBySetting=ModernUnprefixedWebAudio,
] interface AudioListener {
- attribute unrestricted float dopplerFactor; // same as OpenAL (default 1.0)
- attribute unrestricted float speedOfSound; // in meters / second (default 343.3)
+ readonly attribute AudioParam positionX;
+ readonly attribute AudioParam positionY;
+ readonly attribute AudioParam positionZ;
+ readonly attribute AudioParam forwardX;
+ readonly attribute AudioParam forwardY;
+ readonly attribute AudioParam forwardZ;
+ readonly attribute AudioParam upX;
+ readonly attribute AudioParam upY;
+ readonly attribute AudioParam upZ;
- void setPosition(unrestricted float x, unrestricted float y, unrestricted float z);
- void setOrientation(unrestricted float x, unrestricted float y, unrestricted float z, unrestricted float xUp, unrestricted float yUp, unrestricted float zUp);
- void setVelocity(unrestricted float x, unrestricted float y, unrestricted float z);
+ void setPosition(float x, float y, float z);
+ void setOrientation(float x, float y, float z, float xUp, float yUp, float zUp);
};
Modified: trunk/Source/WebCore/Modules/webaudio/BaseAudioContext.cpp (265265 => 265266)
--- trunk/Source/WebCore/Modules/webaudio/BaseAudioContext.cpp 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/Modules/webaudio/BaseAudioContext.cpp 2020-08-04 23:01:49 UTC (rev 265266)
@@ -72,6 +72,7 @@
#include "ScriptController.h"
#include "ScriptProcessorNode.h"
#include "WaveShaperNode.h"
+#include "WebKitAudioListener.h"
#include <_javascript_Core/ScriptCallStack.h>
#include <wtf/Scope.h>
@@ -159,7 +160,10 @@
{
FFTFrame::initialize();
- m_listener = AudioListener::create();
+ if (isWebKitAudioContext())
+ m_listener = WebKitAudioListener::create(*this);
+ else
+ m_listener = AudioListener::create(*this);
ASSERT(document());
if (document()->audioPlaybackRequiresUserGesture())
Modified: trunk/Source/WebCore/Modules/webaudio/PannerNode.cpp (265265 => 265266)
--- trunk/Source/WebCore/Modules/webaudio/PannerNode.cpp 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/Modules/webaudio/PannerNode.cpp 2020-08-04 23:01:49 UTC (rev 265266)
@@ -391,45 +391,7 @@
float PannerNode::dopplerRate()
{
- double dopplerShift = 1.0;
-
- // FIXME: optimize for case when neither source nor listener has changed...
- double dopplerFactor = listener()->dopplerFactor();
-
- if (dopplerFactor > 0.0) {
- double speedOfSound = listener()->speedOfSound();
-
- const FloatPoint3D& listenerVelocity = listener()->velocity();
-
- // Don't bother if listener has no velocity
- bool listenerHasVelocity = !listenerVelocity.isZero();
-
- if (listenerHasVelocity) {
- // Calculate the source to listener vector
- FloatPoint3D listenerPosition = listener()->position();
- FloatPoint3D sourceToListener = position() - listenerPosition;
-
- double sourceListenerMagnitude = sourceToListener.length();
-
- double listenerProjection = sourceToListener.dot(listenerVelocity) / sourceListenerMagnitude;
-
- listenerProjection = -listenerProjection;
-
- double scaledSpeedOfSound = speedOfSound / dopplerFactor;
- listenerProjection = std::min(listenerProjection, scaledSpeedOfSound);
-
- dopplerShift = ((speedOfSound - dopplerFactor * listenerProjection) / speedOfSound);
- fixNANs(dopplerShift); // avoid illegal values
-
- // Limit the pitch shifting to 4 octaves up and 3 octaves down.
- if (dopplerShift > 16.0)
- dopplerShift = 16.0;
- else if (dopplerShift < 0.125)
- dopplerShift = 0.125;
- }
- }
-
- return static_cast<float>(dopplerShift);
+ return 1.0f;
}
float PannerNode::distanceConeGain()
Modified: trunk/Source/WebCore/Modules/webaudio/WebKitAudioContext.h (265265 => 265266)
--- trunk/Source/WebCore/Modules/webaudio/WebKitAudioContext.h 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/Modules/webaudio/WebKitAudioContext.h 2020-08-04 23:01:49 UTC (rev 265266)
@@ -26,6 +26,7 @@
#pragma once
#include "BaseAudioContext.h"
+#include "WebKitAudioListener.h"
namespace WebCore {
@@ -54,6 +55,8 @@
void close(DOMPromiseDeferred<void>&&);
+ WebKitAudioListener* listener() { return static_cast<WebKitAudioListener*>(BaseAudioContext::listener()); }
+
// The AudioNode create methods are called on the main thread (from _javascript_).
#if ENABLE(VIDEO)
ExceptionOr<Ref<MediaElementAudioSourceNode>> createMediaElementSource(HTMLMediaElement&);
Modified: trunk/Source/WebCore/Modules/webaudio/WebKitAudioContext.idl (265265 => 265266)
--- trunk/Source/WebCore/Modules/webaudio/WebKitAudioContext.idl 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/Modules/webaudio/WebKitAudioContext.idl 2020-08-04 23:01:49 UTC (rev 265266)
@@ -42,7 +42,7 @@
readonly attribute unrestricted float sampleRate;
// All panning is relative to this listener.
- readonly attribute AudioListener listener;
+ readonly attribute WebKitAudioListener listener;
[ImplementedAs=suspendRendering] Promise<void> suspend();
[ImplementedAs=resumeRendering] Promise<void> resume();
Copied: trunk/Source/WebCore/Modules/webaudio/WebKitAudioListener.h (from rev 265265, trunk/Source/WebCore/Modules/webaudio/AudioListener.h) (0 => 265266)
--- trunk/Source/WebCore/Modules/webaudio/WebKitAudioListener.h (rev 0)
+++ trunk/Source/WebCore/Modules/webaudio/WebKitAudioListener.h 2020-08-04 23:01:49 UTC (rev 265266)
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2020 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "AudioListener.h"
+
+namespace WebCore {
+
+class WebKitAudioListener final : public AudioListener {
+public:
+ static Ref<WebKitAudioListener> create(BaseAudioContext& context)
+ {
+ return adoptRef(*new WebKitAudioListener(context));
+ }
+
+ // Velocity
+ void setVelocity(float x, float y, float z) { setVelocity(FloatPoint3D(x, y, z)); }
+ void setVelocity(const FloatPoint3D& velocity) { m_velocity = velocity; }
+ const FloatPoint3D& velocity() const { return m_velocity; }
+
+ // Doppler factor
+ void setDopplerFactor(double dopplerFactor) { m_dopplerFactor = dopplerFactor; }
+ double dopplerFactor() const { return m_dopplerFactor; }
+
+ // Speed of sound
+ void setSpeedOfSound(double speedOfSound) { m_speedOfSound = speedOfSound; }
+ double speedOfSound() const { return m_speedOfSound; }
+
+private:
+ WebKitAudioListener(BaseAudioContext& context)
+ : AudioListener(context)
+ , m_velocity(0, 0, 0)
+ { }
+
+ FloatPoint3D m_velocity;
+ double m_dopplerFactor { 1.0 };
+ double m_speedOfSound { 343.3 };
+};
+
+} // namespace WebCore
Copied: trunk/Source/WebCore/Modules/webaudio/WebKitAudioListener.idl (from rev 265265, trunk/Source/WebCore/Modules/webaudio/AudioListener.idl) (0 => 265266)
--- trunk/Source/WebCore/Modules/webaudio/WebKitAudioListener.idl (rev 0)
+++ trunk/Source/WebCore/Modules/webaudio/WebKitAudioListener.idl 2020-08-04 23:01:49 UTC (rev 265266)
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+ Conditional=WEB_AUDIO,
+ ImplementationLacksVTable,
+ EnabledBySetting=PrefixedWebAudio,
+ NoInterfaceObject,
+] interface WebKitAudioListener {
+ attribute unrestricted float dopplerFactor; // same as OpenAL (default 1.0)
+ attribute unrestricted float speedOfSound; // in meters / second (default 343.3)
+
+ void setPosition(unrestricted float x, unrestricted float y, unrestricted float z);
+ void setOrientation(unrestricted float x, unrestricted float y, unrestricted float z, unrestricted float xUp, unrestricted float yUp, unrestricted float zUp);
+ void setVelocity(unrestricted float x, unrestricted float y, unrestricted float z);
+};
Modified: trunk/Source/WebCore/Modules/webaudio/WebKitAudioPannerNode.cpp (265265 => 265266)
--- trunk/Source/WebCore/Modules/webaudio/WebKitAudioPannerNode.cpp 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/Modules/webaudio/WebKitAudioPannerNode.cpp 2020-08-04 23:01:49 UTC (rev 265266)
@@ -173,7 +173,7 @@
AudioNode::uninitialize();
}
-AudioListener* WebKitAudioPannerNode::listener()
+WebKitAudioListener* WebKitAudioPannerNode::listener()
{
return context().listener();
}
Modified: trunk/Source/WebCore/Modules/webaudio/WebKitAudioPannerNode.h (265265 => 265266)
--- trunk/Source/WebCore/Modules/webaudio/WebKitAudioPannerNode.h 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/Modules/webaudio/WebKitAudioPannerNode.h 2020-08-04 23:01:49 UTC (rev 265266)
@@ -26,7 +26,6 @@
#if ENABLE(WEB_AUDIO)
-#include "AudioListener.h"
#include "AudioNode.h"
#include "AudioParam.h"
#include "Cone.h"
@@ -35,6 +34,7 @@
#include "Panner.h"
#include "PannerNode.h"
#include "WebKitAudioContext.h"
+#include "WebKitAudioListener.h"
#include <memory>
#include <wtf/HashSet.h>
#include <wtf/Lock.h>
@@ -71,7 +71,7 @@
void uninitialize() override;
// Listener
- AudioListener* listener();
+ WebKitAudioListener* listener();
// Panning model
PanningModelType panningModel() const { return m_panningModel; }
Modified: trunk/Source/WebCore/Sources.txt (265265 => 265266)
--- trunk/Source/WebCore/Sources.txt 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/Sources.txt 2020-08-04 23:01:49 UTC (rev 265266)
@@ -3572,6 +3572,7 @@
JSWebKitAnimationEvent.cpp
JSWebKitAudioBufferSourceNode.cpp
JSWebKitAudioContext.cpp
+JSWebKitAudioListener.cpp
JSWebKitAudioPannerNode.cpp
JSWebKitCSSMatrix.cpp
JSWebKitMediaKeyError.cpp
Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (265265 => 265266)
--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2020-08-04 23:01:49 UTC (rev 265266)
@@ -2455,6 +2455,7 @@
8348BFAC1B85729800912F36 /* ClassCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 8348BFAA1B85729500912F36 /* ClassCollection.h */; };
834DFAD01F7DAE5D00C2725B /* SharedStringHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 834DFACC1F7DAE5600C2725B /* SharedStringHash.h */; settings = {ATTRIBUTES = (Private, ); }; };
83520C7E1A71BFCC006BD2AA /* CSSFontFamily.h in Headers */ = {isa = PBXBuildFile; fileRef = 83520C7D1A71BFCC006BD2AA /* CSSFontFamily.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 8356F97F24D9F818006C3E41 /* WebKitAudioListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 8356F97E24D9F809006C3E41 /* WebKitAudioListener.h */; };
8358CB701C53277500E0C2D8 /* JSXMLDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F570AD1C53268E007FD6CB /* JSXMLDocument.h */; };
835D2D781F5F1FBD00141DED /* HTMLInputElementEntriesAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 835D2D751F5F1FB800141DED /* HTMLInputElementEntriesAPI.h */; };
835D363719FF6193004C93AB /* StyleBuilderCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = 835D363619FF6193004C93AB /* StyleBuilderCustom.h */; };
@@ -10480,6 +10481,8 @@
8350C3E81DA59B6200356446 /* ScrollToOptions.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ScrollToOptions.idl; sourceTree = "<group>"; };
83520C7D1A71BFCC006BD2AA /* CSSFontFamily.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSFontFamily.h; sourceTree = "<group>"; };
835657C61ECAB0E800CDE72D /* JSDOMMatrixInit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMMatrixInit.cpp; sourceTree = "<group>"; };
+ 8356F97C24D9F808006C3E41 /* WebKitAudioListener.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = WebKitAudioListener.idl; sourceTree = "<group>"; };
+ 8356F97E24D9F809006C3E41 /* WebKitAudioListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebKitAudioListener.h; sourceTree = "<group>"; };
835B680E1F548BDE0071F7F6 /* JSFileSystemEntryCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFileSystemEntryCustom.cpp; sourceTree = "<group>"; };
835D2D741F5F1FB800141DED /* HTMLInputElementEntriesAPI.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLInputElementEntriesAPI.idl; sourceTree = "<group>"; };
835D2D751F5F1FB800141DED /* HTMLInputElementEntriesAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLInputElementEntriesAPI.h; sourceTree = "<group>"; };
@@ -29651,15 +29654,17 @@
FD7F298C13D4C0CB00AD9535 /* WaveShaperNode.cpp */,
FD7F298D13D4C0CB00AD9535 /* WaveShaperNode.h */,
FD7F298E13D4C0CB00AD9535 /* WaveShaperNode.idl */,
- 833D1C7324D8D53300E813DF /* WebKitAudioBufferSourceNode.h */,
- 833D1C7524D8D53300E813DF /* WebKitAudioBufferSourceNode.idl */,
8326BF8C24D35C20001F8A85 /* WaveShaperOptions.h */,
8326BF8D24D35C21001F8A85 /* WaveShaperOptions.idl */,
FD7F298F13D4C0CB00AD9535 /* WaveShaperProcessor.cpp */,
FD7F299013D4C0CB00AD9535 /* WaveShaperProcessor.h */,
+ 833D1C7324D8D53300E813DF /* WebKitAudioBufferSourceNode.h */,
+ 833D1C7524D8D53300E813DF /* WebKitAudioBufferSourceNode.idl */,
83003E2B249997A80060AF94 /* WebKitAudioContext.cpp */,
83B1A6FF249985D000FE5961 /* WebKitAudioContext.h */,
83B1A701249985D000FE5961 /* WebKitAudioContext.idl */,
+ 8356F97E24D9F809006C3E41 /* WebKitAudioListener.h */,
+ 8356F97C24D9F808006C3E41 /* WebKitAudioListener.idl */,
831B61712499A59900C07C79 /* WebKitAudioPannerNode.cpp */,
831B61742499A59C00C07C79 /* WebKitAudioPannerNode.h */,
831B616F2499A59800C07C79 /* WebKitAudioPannerNode.idl */,
@@ -33600,7 +33605,6 @@
B22279900D00BF220071B782 /* SVGAnimateElement.h in Headers */,
832B843419D8E55100B26055 /* SVGAnimateElementBase.h in Headers */,
B22279930D00BF220071B782 /* SVGAnimateMotionElement.h in Headers */,
- 833D1C7624D8D54F00E813DF /* WebKitAudioBufferSourceNode.h in Headers */,
B22279950D00BF220071B782 /* SVGAnimateTransformElement.h in Headers */,
B22279980D00BF220071B782 /* SVGAnimationElement.h in Headers */,
B222799C0D00BF220071B782 /* SVGCircleElement.h in Headers */,
@@ -34106,7 +34110,9 @@
A584FE301864CB8400843B10 /* WebInjectedScriptManager.h in Headers */,
F48223111E3869B80066FC79 /* WebItemProviderPasteboard.h in Headers */,
31C0FF220E4CEB6E007D6FE5 /* WebKitAnimationEvent.h in Headers */,
+ 833D1C7624D8D54F00E813DF /* WebKitAudioBufferSourceNode.h in Headers */,
83B1A702249985F000FE5961 /* WebKitAudioContext.h in Headers */,
+ 8356F97F24D9F818006C3E41 /* WebKitAudioListener.h in Headers */,
831B61762499A5BB00C07C79 /* WebKitAudioPannerNode.h in Headers */,
5DFEBAB718592B6D00C75BEB /* WebKitAvailability.h in Headers */,
498391590F1E776900C23782 /* WebKitCSSMatrix.h in Headers */,
Modified: trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h (265265 => 265266)
--- trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h 2020-08-04 22:54:08 UTC (rev 265265)
+++ trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h 2020-08-04 23:01:49 UTC (rev 265266)
@@ -51,6 +51,7 @@
macro(Audio) \
macro(AudioBufferSourceNode) \
macro(AudioContext) \
+ macro(AudioListener) \
macro(AuthenticatorAssertionResponse) \
macro(AuthenticatorAttestationResponse) \
macro(AuthenticatorResponse) \