Diff
Modified: trunk/LayoutTests/ChangeLog (282056 => 282057)
--- trunk/LayoutTests/ChangeLog 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/LayoutTests/ChangeLog 2021-09-06 16:14:32 UTC (rev 282057)
@@ -1,3 +1,15 @@
+2021-09-06 Youenn Fablet <[email protected]>
+
+ Add support for RTCSctpTransport
+ https://bugs.webkit.org/show_bug.cgi?id=229292
+ <rdar://problem/82394152>
+
+ Reviewed by Eric Carlson.
+
+ * webrtc/datachannel/dtls10.html:
+ We should now check for the RTCSctpTransport's RTCDtlsTransport state
+ to identify whether connection is successful or not.
+
2021-09-06 Enrique Ocaña González <[email protected]>
[GTK] webaudio/silent-audio-interrupted-in-background.html is a flaky timeout
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (282056 => 282057)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2021-09-06 16:14:32 UTC (rev 282057)
@@ -1,3 +1,21 @@
+2021-09-06 Youenn Fablet <[email protected]>
+
+ Add support for RTCSctpTransport
+ https://bugs.webkit.org/show_bug.cgi?id=229292
+ <rdar://problem/82394152>
+
+ Reviewed by Eric Carlson.
+
+ * web-platform-tests/webrtc/RTCDataChannel-send-expected.txt:
+ * web-platform-tests/webrtc/RTCIceTransport-expected.txt:
+ * web-platform-tests/webrtc/RTCPeerConnection-connectionState.https-expected.txt:
+ * web-platform-tests/webrtc/RTCRtpSender-transport.https-expected.txt:
+ * web-platform-tests/webrtc/RTCSctpTransport-constructor-expected.txt:
+ * web-platform-tests/webrtc/RTCSctpTransport-events-expected.txt:
+ * web-platform-tests/webrtc/RTCSctpTransport-maxChannels-expected.txt:
+ * web-platform-tests/webrtc/RTCSctpTransport-maxMessageSize-expected.txt:
+ * web-platform-tests/webrtc/idlharness.https.window-expected.txt:
+
2021-09-03 Johnson Zhou <[email protected]>
Addition of CSSNumericFactory in CSS Typed OM
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCDataChannel-send-expected.txt (282056 => 282057)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCDataChannel-send-expected.txt 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCDataChannel-send-expected.txt 2021-09-06 16:14:32 UTC (rev 282057)
@@ -9,7 +9,7 @@
PASS Datachannel should be able to send ArrayBuffer message and receive as Blob
FAIL Datachannel binaryType should receive message as Blob by default assert_equals: Expect initial binaryType value to be blob expected "blob" but got "arraybuffer"
PASS Datachannel sending multiple messages with different types should succeed and be received
-FAIL Datachannel send() up to max size should succeed, above max size should fail promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'pc1.sctp.maxMessageSize')"
+FAIL Datachannel send() up to max size should succeed, above max size should fail assert_throws_js: function "() => channel1.send(message)" did not throw
PASS Negotiated datachannel should be able to send simple string and receive as string
PASS Negotiated datachannel should be able to send unicode string and receive as unicode string
PASS Negotiated datachannel should ignore binaryType and always receive string message as string
@@ -19,5 +19,5 @@
PASS Negotiated datachannel should be able to send ArrayBuffer message and receive as Blob
FAIL Negotiated datachannel binaryType should receive message as Blob by default assert_equals: Expect initial binaryType value to be blob expected "blob" but got "arraybuffer"
PASS Negotiated datachannel sending multiple messages with different types should succeed and be received
-FAIL Negotiated datachannel send() up to max size should succeed, above max size should fail promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'pc1.sctp.maxMessageSize')"
+FAIL Negotiated datachannel send() up to max size should succeed, above max size should fail assert_throws_js: function "() => channel1.send(message)" did not throw
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCIceTransport-expected.txt (282056 => 282057)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCIceTransport-expected.txt 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCIceTransport-expected.txt 2021-09-06 16:14:32 UTC (rev 282057)
@@ -1,4 +1,4 @@
-FAIL Two connected iceTransports should has matching local/remote candidates returned promise_test: Unhandled rejection with value: object "ReferenceError: Can't find variable: RTCSctpTransport"
-FAIL Unconnected iceTransport should have empty remote candidates and selected pair promise_test: Unhandled rejection with value: object "ReferenceError: Can't find variable: RTCSctpTransport"
+FAIL Two connected iceTransports should has matching local/remote candidates returned assert_true: Expect RTCIceRole to be either controlling or controlled, found undefined expected true got false
+FAIL Unconnected iceTransport should have empty remote candidates and selected pair promise_test: Unhandled rejection with value: object "TypeError: iceTransport.getRemoteCandidates is not a function. (In 'iceTransport.getRemoteCandidates()', 'iceTransport.getRemoteCandidates' is undefined)"
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-connectionState.https-expected.txt (282056 => 282057)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-connectionState.https-expected.txt 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-connectionState.https-expected.txt 2021-09-06 16:14:32 UTC (rev 282057)
@@ -2,7 +2,7 @@
PASS Initial connectionState should be new
PASS Closing the connection should set connectionState to closed
PASS connection with one data channel should eventually have connected connection state
-FAIL connection with one data channel should eventually have transports in connected state undefined is not an object (evaluating 'sctpTransport.transport')
+FAIL connection with one data channel should eventually have transports in connected state assert_equals: Expect DTLS transport to be in connected state expected "connected" but got "connecting"
FAIL connectionState remains new when not adding remote ice candidates assert_equals: expected "new" but got "checking"
PASS connectionState transitions to connected via connecting
PASS Closing a PeerConnection should not fire connectionstatechange event
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpSender-transport.https-expected.txt (282056 => 282057)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpSender-transport.https-expected.txt 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpSender-transport.https-expected.txt 2021-09-06 16:14:32 UTC (rev 282057)
@@ -2,9 +2,9 @@
PASS RTCRtpSender.transport is null when unconnected
PASS RTCRtpSender/receiver.transport has a value when connected
PASS RTCRtpSender/receiver.transport at the right time, with bundle policy balanced
-FAIL RTCRtpSender/receiver/SCTP transport at the right time, with bundle policy balanced promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'caller.sctp.transport')"
+FAIL RTCRtpSender/receiver/SCTP transport at the right time, with bundle policy balanced assert_equals: Callee SCTP transport does not match: expected object "[object RTCDtlsTransport]" but got object "[object RTCDtlsTransport]"
PASS RTCRtpSender/receiver.transport at the right time, with bundle policy max-bundle
-FAIL RTCRtpSender/receiver/SCTP transport at the right time, with bundle policy max-bundle promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'caller.sctp.transport')"
+FAIL RTCRtpSender/receiver/SCTP transport at the right time, with bundle policy max-bundle assert_equals: Callee SCTP transport does not match: expected object "[object RTCDtlsTransport]" but got object "[object RTCDtlsTransport]"
PASS RTCRtpSender/receiver.transport at the right time, with bundle policy max-compat
-FAIL RTCRtpSender/receiver/SCTP transport at the right time, with bundle policy max-compat promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'caller.sctp.transport')"
+FAIL RTCRtpSender/receiver/SCTP transport at the right time, with bundle policy max-compat assert_equals: Callee SCTP transport does not match: expected object "[object RTCDtlsTransport]" but got object "[object RTCDtlsTransport]"
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCSctpTransport-constructor-expected.txt (282056 => 282057)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCSctpTransport-constructor-expected.txt 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCSctpTransport-constructor-expected.txt 2021-09-06 16:14:32 UTC (rev 282057)
@@ -1,6 +1,6 @@
-FAIL setRemoteDescription() with answer not containing data media should not initialize pc.sctp assert_equals: RTCSctpTransport must be null expected (object) null but got (undefined) undefined
-FAIL setLocalDescription() with answer not containing data media should not initialize pc.sctp assert_equals: RTCSctpTransport must be null expected (object) null but got (undefined) undefined
-FAIL setRemoteDescription() with answer containing data media should initialize pc.sctp assert_equals: RTCSctpTransport must be null expected (object) null but got (undefined) undefined
-FAIL setLocalDescription() with answer containing data media should initialize pc.sctp assert_equals: RTCSctpTransport must be null expected (object) null but got (undefined) undefined
+PASS setRemoteDescription() with answer not containing data media should not initialize pc.sctp
+PASS setLocalDescription() with answer not containing data media should not initialize pc.sctp
+PASS setRemoteDescription() with answer containing data media should initialize pc.sctp
+PASS setLocalDescription() with answer containing data media should initialize pc.sctp
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCSctpTransport-events-expected.txt (282056 => 282057)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCSctpTransport-events-expected.txt 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCSctpTransport-events-expected.txt 2021-09-06 16:14:32 UTC (rev 282057)
@@ -1,6 +1,4 @@
-Harness Error (FAIL), message = Unhandled rejection: undefined is not an object (evaluating 'transport.state')
+PASS SctpTransport objects are created at appropriate times
+PASS SctpTransport reaches connected and closed state
-FAIL SctpTransport objects are created at appropriate times assert_equals: expected (undefined) undefined but got (object) null
-FAIL SctpTransport reaches connected and closed state promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'transport.state')"
-
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCSctpTransport-maxChannels-expected.txt (282056 => 282057)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCSctpTransport-maxChannels-expected.txt 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCSctpTransport-maxChannels-expected.txt 2021-09-06 16:14:32 UTC (rev 282057)
@@ -1,6 +1,4 @@
-Harness Error (FAIL), message = Unhandled rejection: undefined is not an object (evaluating 'transport.state')
+PASS An unconnected peerconnection must not have maxChannels set
+PASS maxChannels gets instantiated after connecting
-FAIL An unconnected peerconnection must not have maxChannels set assert_equals: RTCSctpTransport must be null expected (object) null but got (undefined) undefined
-FAIL maxChannels gets instantiated after connecting promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'pc1.sctp.maxChannels')"
-
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCSctpTransport-maxMessageSize-expected.txt (282056 => 282057)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCSctpTransport-maxMessageSize-expected.txt 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCSctpTransport-maxMessageSize-expected.txt 2021-09-06 16:14:32 UTC (rev 282057)
@@ -1,7 +1,7 @@
-FAIL Determine the local side send limitation (canSendSize) by offering a max-message-size of 0 assert_equals: RTCSctpTransport must be null expected (object) null but got (undefined) undefined
-FAIL Remote offer SDP missing max-message-size attribute assert_not_equals: canSendSize needs to be determined got disallowed value null
-FAIL max-message-size with a (non-zero) value provided by the remote peer assert_not_equals: canSendSize needs to be determined got disallowed value null
-FAIL Renegotiate max-message-size with various values provided by the remote peer assert_not_equals: canSendSize needs to be determined got disallowed value null
-FAIL max-message-size with a (non-zero) value larger than canSendSize provided by the remote peer assert_not_equals: canSendSize needs to be determined got disallowed value null
+PASS Determine the local side send limitation (canSendSize) by offering a max-message-size of 0
+FAIL Remote offer SDP missing max-message-size attribute assert_equals: Missing SDP attribute and a non-zero canSendSize should give an maxMessageSize of min(65536, canSendSize) expected 65536 but got 1.7976931348623157e+308
+FAIL max-message-size with a (non-zero) value provided by the remote peer assert_equals: maxMessageSize should be the value provided by the remote peer (as long as it is less than canSendSize) expected 1 but got 1.7976931348623157e+308
+FAIL Renegotiate max-message-size with various values provided by the remote peer assert_equals: maxMessageSize should be the value provided by the remote peer (as long as it is less than canSendSize) expected 1 but got 1.7976931348623157e+308
+FAIL max-message-size with a (non-zero) value larger than canSendSize provided by the remote peer promise_test: Unhandled rejection with value: object "SyntaxError: Invalid SCTP max message size."
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/idlharness.https.window-expected.txt (282056 => 282057)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/idlharness.https.window-expected.txt 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/idlharness.https.window-expected.txt 2021-09-06 16:14:32 UTC (rev 282057)
@@ -2,7 +2,7 @@
PASS idl_test setup
PASS idl_test validation
PASS Test driver for asyncInitCertificate
-FAIL Test driver for asyncInitTransports assert_unreached: Failed to run asyncInitTransports: ReferenceError: Can't find variable: RTCSctpTransport Reached unreachable code
+PASS Test driver for asyncInitTransports
PASS Test driver for asyncInitMediaStreamTrack
PASS Partial dictionary RTCOfferOptions: original dictionary defined
PASS Partial dictionary RTCOfferOptions: member names are unique
@@ -62,7 +62,7 @@
PASS RTCPeerConnection interface: operation removeTrack(RTCRtpSender)
PASS RTCPeerConnection interface: operation addTransceiver((MediaStreamTrack or DOMString), optional RTCRtpTransceiverInit)
PASS RTCPeerConnection interface: attribute ontrack
-FAIL RTCPeerConnection interface: attribute sctp assert_true: The prototype object must have a property "sctp" expected true got false
+PASS RTCPeerConnection interface: attribute sctp
PASS RTCPeerConnection interface: operation createDataChannel(USVString, optional RTCDataChannelInit)
PASS RTCPeerConnection interface: attribute ondatachannel
PASS RTCPeerConnection interface: operation getStats(optional MediaStreamTrack?)
@@ -123,7 +123,7 @@
PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addTransceiver((MediaStreamTrack or DOMString), optional RTCRtpTransceiverInit)" with the proper type
PASS RTCPeerConnection interface: calling addTransceiver((MediaStreamTrack or DOMString), optional RTCRtpTransceiverInit) on new RTCPeerConnection() with too few arguments must throw TypeError
PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "ontrack" with the proper type
-FAIL RTCPeerConnection interface: new RTCPeerConnection() must inherit property "sctp" with the proper type assert_inherits: property "sctp" not found in prototype chain
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "sctp" with the proper type
PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createDataChannel(USVString, optional RTCDataChannelInit)" with the proper type
PASS RTCPeerConnection interface: calling createDataChannel(USVString, optional RTCDataChannelInit) on new RTCPeerConnection() with too few arguments must throw TypeError
PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "ondatachannel" with the proper type
@@ -312,13 +312,13 @@
PASS RTCDtlsTransport interface: operation getRemoteCertificates()
PASS RTCDtlsTransport interface: attribute onstatechange
PASS RTCDtlsTransport interface: attribute onerror
-FAIL RTCDtlsTransport must be primary interface of idlTestObjects.dtlsTransport assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL Stringification of idlTestObjects.dtlsTransport assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "iceTransport" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "state" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "getRemoteCertificates()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "onstatechange" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "onerror" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+PASS RTCDtlsTransport must be primary interface of idlTestObjects.dtlsTransport
+PASS Stringification of idlTestObjects.dtlsTransport
+PASS RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "iceTransport" with the proper type
+PASS RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "state" with the proper type
+PASS RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "getRemoteCertificates()" with the proper type
+PASS RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "onstatechange" with the proper type
+PASS RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "onerror" with the proper type
PASS RTCIceTransport interface: existence and properties of interface object
PASS RTCIceTransport interface object length
PASS RTCIceTransport interface object name
@@ -337,20 +337,20 @@
PASS RTCIceTransport interface: attribute onstatechange
PASS RTCIceTransport interface: attribute ongatheringstatechange
FAIL RTCIceTransport interface: attribute onselectedcandidatepairchange assert_true: The prototype object must have a property "onselectedcandidatepairchange" expected true got false
-FAIL RTCIceTransport must be primary interface of idlTestObjects.iceTransport assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL Stringification of idlTestObjects.iceTransport assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "role" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "component" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "state" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "gatheringState" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getLocalCandidates()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getRemoteCandidates()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getSelectedCandidatePair()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getLocalParameters()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getRemoteParameters()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "onstatechange" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "ongatheringstatechange" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "onselectedcandidatepairchange" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+PASS RTCIceTransport must be primary interface of idlTestObjects.iceTransport
+PASS Stringification of idlTestObjects.iceTransport
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "role" with the proper type assert_inherits: property "role" not found in prototype chain
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "component" with the proper type assert_inherits: property "component" not found in prototype chain
+PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "state" with the proper type
+PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "gatheringState" with the proper type
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getLocalCandidates()" with the proper type assert_inherits: property "getLocalCandidates" not found in prototype chain
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getRemoteCandidates()" with the proper type assert_inherits: property "getRemoteCandidates" not found in prototype chain
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getSelectedCandidatePair()" with the proper type assert_inherits: property "getSelectedCandidatePair" not found in prototype chain
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getLocalParameters()" with the proper type assert_inherits: property "getLocalParameters" not found in prototype chain
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getRemoteParameters()" with the proper type assert_inherits: property "getRemoteParameters" not found in prototype chain
+PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "onstatechange" with the proper type
+PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "ongatheringstatechange" with the proper type
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "onselectedcandidatepairchange" with the proper type assert_inherits: property "onselectedcandidatepairchange" not found in prototype chain
PASS RTCTrackEvent interface: existence and properties of interface object
PASS RTCTrackEvent interface object length
PASS RTCTrackEvent interface object name
@@ -367,24 +367,24 @@
PASS RTCTrackEvent interface: initTrackEvent() must inherit property "track" with the proper type
PASS RTCTrackEvent interface: initTrackEvent() must inherit property "streams" with the proper type
PASS RTCTrackEvent interface: initTrackEvent() must inherit property "transceiver" with the proper type
-FAIL RTCSctpTransport interface: existence and properties of interface object assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
-FAIL RTCSctpTransport interface object length assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
-FAIL RTCSctpTransport interface object name assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
-FAIL RTCSctpTransport interface: existence and properties of interface prototype object assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
-FAIL RTCSctpTransport interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
-FAIL RTCSctpTransport interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
-FAIL RTCSctpTransport interface: attribute transport assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
-FAIL RTCSctpTransport interface: attribute state assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
-FAIL RTCSctpTransport interface: attribute maxMessageSize assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
-FAIL RTCSctpTransport interface: attribute maxChannels assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
-FAIL RTCSctpTransport interface: attribute onstatechange assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
-FAIL RTCSctpTransport must be primary interface of idlTestObjects.sctpTransport assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL Stringification of idlTestObjects.sctpTransport assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "transport" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "state" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "maxMessageSize" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "maxChannels" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "onstatechange" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+PASS RTCSctpTransport interface: existence and properties of interface object
+PASS RTCSctpTransport interface object length
+PASS RTCSctpTransport interface object name
+PASS RTCSctpTransport interface: existence and properties of interface prototype object
+PASS RTCSctpTransport interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCSctpTransport interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCSctpTransport interface: attribute transport
+PASS RTCSctpTransport interface: attribute state
+PASS RTCSctpTransport interface: attribute maxMessageSize
+PASS RTCSctpTransport interface: attribute maxChannels
+PASS RTCSctpTransport interface: attribute onstatechange
+PASS RTCSctpTransport must be primary interface of idlTestObjects.sctpTransport
+PASS Stringification of idlTestObjects.sctpTransport
+PASS RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "transport" with the proper type
+PASS RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "state" with the proper type
+PASS RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "maxMessageSize" with the proper type
+PASS RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "maxChannels" with the proper type
+PASS RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "onstatechange" with the proper type
PASS RTCDataChannel interface: existence and properties of interface object
PASS RTCDataChannel interface object length
PASS RTCDataChannel interface object name
Modified: trunk/LayoutTests/webrtc/datachannel/dtls10.html (282056 => 282057)
--- trunk/LayoutTests/webrtc/datachannel/dtls10.html 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/LayoutTests/webrtc/datachannel/dtls10.html 2021-09-06 16:14:32 UTC (rev 282057)
@@ -48,9 +48,11 @@
}, (remoteConnection) => {
});
+ assert_not_equals(localConnection.sctp, null);
+
let counter = 0;
while (++counter < 20) {
- if (localConnection.connectionState === "connected")
+ if (localConnection.sctp.transport.state === "connected")
return;
await new Promise(resolve => setTimeout(resolve, 10));
}
@@ -69,7 +71,8 @@
});
await new Promise(resolve => setTimeout(resolve, 200));
- assert_not_equals(localConnection.connectionState, "connected");
+ assert_not_equals(localConnection.sctp, null);
+ assert_not_equals(localConnection.sctp.transport.state, "connected");
}, "Verify regular clients cannot connect with DTLS1-only clients");
</script>
</body>
Modified: trunk/Source/ThirdParty/libwebrtc/ChangeLog (282056 => 282057)
--- trunk/Source/ThirdParty/libwebrtc/ChangeLog 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/ThirdParty/libwebrtc/ChangeLog 2021-09-06 16:14:32 UTC (rev 282057)
@@ -1,3 +1,15 @@
+2021-09-06 Youenn Fablet <[email protected]>
+
+ Add support for RTCSctpTransport
+ https://bugs.webkit.org/show_bug.cgi?id=229292
+ <rdar://problem/82394152>
+
+ Reviewed by Eric Carlson.
+
+ * Configurations/libwebrtc.iOS.exp:
+ * Configurations/libwebrtc.iOSsim.exp:
+ * Configurations/libwebrtc.mac.exp:
+
2021-09-01 David Kilzer <[email protected]>
[WebRTC] Leak or over-release of CFPixelBufferRef returned from webrtc::createPixelBufferFromFrame()
Modified: trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOS.exp (282056 => 282057)
--- trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOS.exp 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOS.exp 2021-09-06 16:14:32 UTC (rev 282057)
@@ -325,3 +325,4 @@
__ZNK3rtc13SocketAddresseqERKS0_
__ZNK3rtc9IPAddress5IsNilEv
__ZN3rtc12SSLCertChainD1Ev
+__ZN6webrtc24SctpTransportInformationD1Ev
Modified: trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOSsim.exp (282056 => 282057)
--- trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOSsim.exp 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOSsim.exp 2021-09-06 16:14:32 UTC (rev 282057)
@@ -325,3 +325,4 @@
__ZNK3rtc13SocketAddresseqERKS0_
__ZNK3rtc9IPAddress5IsNilEv
__ZN3rtc12SSLCertChainD1Ev
+__ZN6webrtc24SctpTransportInformationD1Ev
Modified: trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.mac.exp (282056 => 282057)
--- trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.mac.exp 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.mac.exp 2021-09-06 16:14:32 UTC (rev 282057)
@@ -325,3 +325,4 @@
__ZNK3rtc13SocketAddresseqERKS0_
__ZNK3rtc9IPAddress5IsNilEv
__ZN3rtc12SSLCertChainD1Ev
+__ZN6webrtc24SctpTransportInformationD1Ev
Modified: trunk/Source/WebCore/CMakeLists.txt (282056 => 282057)
--- trunk/Source/WebCore/CMakeLists.txt 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/WebCore/CMakeLists.txt 2021-09-06 16:14:32 UTC (rev 282057)
@@ -426,6 +426,8 @@
Modules/mediastream/RTCRtpSynchronizationSource.idl
Modules/mediastream/RTCRtpTransceiver.idl
Modules/mediastream/RTCRtpTransceiverDirection.idl
+ Modules/mediastream/RTCSctpTransport.idl
+ Modules/mediastream/RTCSctpTransportState.idl
Modules/mediastream/RTCSdpType.idl
Modules/mediastream/RTCSessionDescription.idl
Modules/mediastream/RTCSessionDescriptionInit.idl
Modified: trunk/Source/WebCore/ChangeLog (282056 => 282057)
--- trunk/Source/WebCore/ChangeLog 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/WebCore/ChangeLog 2021-09-06 16:14:32 UTC (rev 282057)
@@ -1,3 +1,64 @@
+2021-09-06 Youenn Fablet <[email protected]>
+
+ Add support for RTCSctpTransport
+ https://bugs.webkit.org/show_bug.cgi?id=229292
+ <rdar://problem/82394152>
+
+ Reviewed by Eric Carlson.
+
+ Expose RTSctpTransport API and getter from the peer connection.
+ Implement event mechanism and getters.
+ Additional work will be needed to make ice transport objects consistent between SCTP and senders/receivers.
+ Covered by rebased tests.
+
+ * CMakeLists.txt:
+ * DerivedSources-input.xcfilelist:
+ * DerivedSources-output.xcfilelist:
+ * DerivedSources.make:
+ * Modules/mediastream/PeerConnectionBackend.cpp:
+ (WebCore::PeerConnectionBackend::setLocalDescriptionSucceeded):
+ (WebCore::PeerConnectionBackend::setRemoteDescriptionSucceeded):
+ * Modules/mediastream/PeerConnectionBackend.h:
+ * Modules/mediastream/RTCPeerConnection.cpp:
+ (WebCore::RTCPeerConnection::updateSctpBackend):
+ * Modules/mediastream/RTCPeerConnection.h:
+ * Modules/mediastream/RTCPeerConnection.idl:
+ * Modules/mediastream/RTCSctpTransport.cpp: Added.
+ (WebCore::RTCSctpTransport::RTCSctpTransport):
+ (WebCore::RTCSctpTransport::~RTCSctpTransport):
+ (WebCore::RTCSctpTransport::stop):
+ (WebCore::RTCSctpTransport::virtualHasPendingActivity const):
+ (WebCore::RTCSctpTransport::onStateChanged):
+ * Modules/mediastream/RTCSctpTransport.h: Added.
+ * Modules/mediastream/RTCSctpTransport.idl: Added.
+ * Modules/mediastream/RTCSctpTransportBackend.h: Added.
+ (WebCore::operator==):
+ * Modules/mediastream/RTCSctpTransportState.h: Added.
+ * Modules/mediastream/RTCSctpTransportState.idl: Added.
+ * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
+ (WebCore::SctpTransportState::SctpTransportState):
+ (WebCore::SctpTransportState::createBackend):
+ (WebCore::LibWebRTCMediaEndpoint::setLocalSessionDescriptionSucceeded):
+ (WebCore::LibWebRTCMediaEndpoint::setLocalSessionDescriptionFailed):
+ (WebCore::LibWebRTCMediaEndpoint::setRemoteSessionDescriptionSucceeded):
+ * Modules/mediastream/libwebrtc/LibWebRTCSctpTransportBackend.cpp: Added.
+ (WebCore::toRTCSctpTransportState):
+ (WebCore::LibWebRTCSctpTransportBackendObserver::LibWebRTCSctpTransportBackendObserver):
+ (WebCore::LibWebRTCSctpTransportBackendObserver::updateState):
+ (WebCore::LibWebRTCSctpTransportBackendObserver::start):
+ (WebCore::LibWebRTCSctpTransportBackendObserver::stop):
+ (WebCore::LibWebRTCSctpTransportBackendObserver::OnStateChange):
+ (WebCore::LibWebRTCSctpTransportBackend::LibWebRTCSctpTransportBackend):
+ (WebCore::LibWebRTCSctpTransportBackend::~LibWebRTCSctpTransportBackend):
+ (WebCore::LibWebRTCSctpTransportBackend::dtlsTransportBackend):
+ (WebCore::LibWebRTCSctpTransportBackend::registerClient):
+ (WebCore::LibWebRTCSctpTransportBackend::unregisterClient):
+ * Modules/mediastream/libwebrtc/LibWebRTCSctpTransportBackend.h: Added.
+ * Sources.txt:
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/WebCoreBuiltinNames.h:
+ * dom/EventTargetFactory.in:
+
2021-09-06 Enrique Ocaña González <[email protected]>
[GStreamer][MSE] Check ContentType parameters when checking supported types
Modified: trunk/Source/WebCore/DerivedSources-input.xcfilelist (282056 => 282057)
--- trunk/Source/WebCore/DerivedSources-input.xcfilelist 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/WebCore/DerivedSources-input.xcfilelist 2021-09-06 16:14:32 UTC (rev 282057)
@@ -269,6 +269,8 @@
$(PROJECT_DIR)/Modules/mediastream/RTCRtpTransceiver.idl
$(PROJECT_DIR)/Modules/mediastream/RTCRtpTransceiverDirection.idl
$(PROJECT_DIR)/Modules/mediastream/RTCRtpTransform.idl
+$(PROJECT_DIR)/Modules/mediastream/RTCSctpTransport.idl
+$(PROJECT_DIR)/Modules/mediastream/RTCSctpTransportState.idl
$(PROJECT_DIR)/Modules/mediastream/RTCSdpType.idl
$(PROJECT_DIR)/Modules/mediastream/RTCSessionDescription.idl
$(PROJECT_DIR)/Modules/mediastream/RTCSessionDescriptionInit.idl
Modified: trunk/Source/WebCore/DerivedSources-output.xcfilelist (282056 => 282057)
--- trunk/Source/WebCore/DerivedSources-output.xcfilelist 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/WebCore/DerivedSources-output.xcfilelist 2021-09-06 16:14:32 UTC (rev 282057)
@@ -1753,6 +1753,10 @@
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpTransceiverDirection.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpTransform.cpp
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpTransform.h
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCSctpTransport.cpp
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCSctpTransport.h
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCSctpTransportState.cpp
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCSctpTransportState.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCSdpType.cpp
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCSdpType.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCSessionDescription.cpp
Modified: trunk/Source/WebCore/DerivedSources.make (282056 => 282057)
--- trunk/Source/WebCore/DerivedSources.make 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/WebCore/DerivedSources.make 2021-09-06 16:14:32 UTC (rev 282057)
@@ -292,6 +292,8 @@
$(WebCore)/Modules/mediastream/RTCRtpSynchronizationSource.idl \
$(WebCore)/Modules/mediastream/RTCRtpTransceiver.idl \
$(WebCore)/Modules/mediastream/RTCRtpTransceiverDirection.idl \
+ $(WebCore)/Modules/mediastream/RTCSctpTransport.idl \
+ $(WebCore)/Modules/mediastream/RTCSctpTransportState.idl \
$(WebCore)/Modules/mediastream/RTCSdpType.idl \
$(WebCore)/Modules/mediastream/RTCSessionDescription.idl \
$(WebCore)/Modules/mediastream/RTCSessionDescriptionInit.idl \
Modified: trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp (282056 => 282057)
--- trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp 2021-09-06 16:14:32 UTC (rev 282057)
@@ -45,6 +45,7 @@
#include "RTCPeerConnection.h"
#include "RTCPeerConnectionIceEvent.h"
#include "RTCRtpCapabilities.h"
+#include "RTCSctpTransportBackend.h"
#include "RTCSessionDescriptionInit.h"
#include "RTCTrackEvent.h"
#include "RuntimeEnabledFeatures.h"
@@ -174,16 +175,18 @@
doSetLocalDescription(sessionDescription);
}
-void PeerConnectionBackend::setLocalDescriptionSucceeded()
+void PeerConnectionBackend::setLocalDescriptionSucceeded(std::unique_ptr<RTCSctpTransportBackend>&& sctpBackend)
{
ASSERT(isMainThread());
ALWAYS_LOG(LOGIDENTIFIER);
ASSERT(m_setDescriptionPromise);
- m_peerConnection.doTask([this, promise = WTFMove(m_setDescriptionPromise)]() mutable {
+ m_peerConnection.doTask([this, promise = WTFMove(m_setDescriptionPromise), sctpBackend = WTFMove(sctpBackend)]() mutable {
if (m_peerConnection.isClosed())
return;
+
m_peerConnection.updateTransceiversAfterSuccessfulLocalDescription();
+ m_peerConnection.updateSctpBackend(WTFMove(sctpBackend));
promise->resolve();
});
}
@@ -210,7 +213,7 @@
doSetRemoteDescription(sessionDescription);
}
-void PeerConnectionBackend::setRemoteDescriptionSucceeded()
+void PeerConnectionBackend::setRemoteDescriptionSucceeded(std::unique_ptr<RTCSctpTransportBackend>&& sctpBackend)
{
ASSERT(isMainThread());
ALWAYS_LOG(LOGIDENTIFIER, "Set remote description succeeded");
@@ -231,11 +234,12 @@
track.source().setMuted(false);
}
- m_peerConnection.doTask([this, promise = WTFMove(promise)]() mutable {
+ m_peerConnection.doTask([this, promise = WTFMove(promise), sctpBackend = WTFMove(sctpBackend)]() mutable {
if (m_peerConnection.isClosed())
return;
m_peerConnection.updateTransceiversAfterSuccessfulRemoteDescription();
+ m_peerConnection.updateSctpBackend(WTFMove(sctpBackend));
promise->resolve();
});
}
Modified: trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.h (282056 => 282057)
--- trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.h 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.h 2021-09-06 16:14:32 UTC (rev 282057)
@@ -57,6 +57,7 @@
class RTCRtpReceiver;
class RTCRtpSender;
class RTCRtpTransceiver;
+class RTCSctpTransportBackend;
class RTCSessionDescription;
class RTCStatsReport;
class ScriptExecutionContext;
@@ -198,10 +199,10 @@
void createAnswerSucceeded(String&&);
void createAnswerFailed(Exception&&);
- void setLocalDescriptionSucceeded();
+ void setLocalDescriptionSucceeded(std::unique_ptr<RTCSctpTransportBackend>&&);
void setLocalDescriptionFailed(Exception&&);
- void setRemoteDescriptionSucceeded();
+ void setRemoteDescriptionSucceeded(std::unique_ptr<RTCSctpTransportBackend>&&);
void setRemoteDescriptionFailed(Exception&&);
void addIceCandidateSucceeded();
Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp (282056 => 282057)
--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp 2021-09-06 16:14:32 UTC (rev 282057)
@@ -60,6 +60,7 @@
#include "RTCOfferOptions.h"
#include "RTCPeerConnectionIceErrorEvent.h"
#include "RTCPeerConnectionIceEvent.h"
+#include "RTCSctpTransport.h"
#include "RTCSessionDescription.h"
#include "RTCSessionDescriptionInit.h"
#include "Settings.h"
@@ -646,7 +647,7 @@
{
ALWAYS_LOG(LOGIDENTIFIER, newState);
- scriptExecutionContext()->postTask([protectedThis = makeRef(*this), newState](ScriptExecutionContext&) {
+ scriptExecutionContext()->postTask([protectedThis = makeRef(*this), newState](auto&) mutable {
if (protectedThis->isClosed() || protectedThis->m_iceConnectionState == newState)
return;
@@ -699,11 +700,13 @@
return RTCIceConnectionState::Closed;
auto iceTransports = m_iceTransports;
+
iceTransports.removeAllMatching([&](auto& iceTransport) {
- bool test = allOf(m_transceiverSet.list(), [&iceTransport](auto& transceiver) {
+ if (m_sctpTransport && &m_sctpTransport->transport().iceTransport() == iceTransport.ptr())
+ return false;
+ return allOf(m_transceiverSet.list(), [&iceTransport](auto& transceiver) {
return !isIceTransportUsedByTransceiver(iceTransport.get(), *transceiver);
});
- return test;
});
if (anyOf(iceTransports, [](auto& transport) { return transport->state() == RTCIceTransportState::Failed; }))
@@ -958,6 +961,26 @@
updateTransceiverTransports();
}
+void RTCPeerConnection::updateSctpBackend(std::unique_ptr<RTCSctpTransportBackend>&& sctpBackend)
+{
+ if (!sctpBackend) {
+ m_sctpTransport = nullptr;
+ return;
+ }
+ if (m_sctpTransport) {
+ m_sctpTransport->update(*sctpBackend);
+ return;
+ }
+ auto* context = scriptExecutionContext();
+ if (!context)
+ return;
+
+ auto dtlsTransport = getOrCreateDtlsTransport(sctpBackend->dtlsTransportBackend().moveToUniquePtr());
+ if (!dtlsTransport)
+ return;
+ m_sctpTransport = RTCSctpTransport::create(*context, makeUniqueRefFromNonNullUniquePtr(WTFMove(sctpBackend)), dtlsTransport.releaseNonNull());
+}
+
#if !RELEASE_LOG_DISABLED
WTFLogChannel& RTCPeerConnection::logChannel() const
{
Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h (282056 => 282057)
--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h 2021-09-06 16:14:32 UTC (rev 282057)
@@ -63,6 +63,7 @@
class RTCIceCandidate;
class RTCIceTransportBackend;
class RTCPeerConnectionErrorCallback;
+class RTCSctpTransport;
class RTCSessionDescription;
class RTCStatsCallback;
@@ -188,9 +189,12 @@
void updateTransceiversAfterSuccessfulLocalDescription();
void updateTransceiversAfterSuccessfulRemoteDescription();
+ void updateSctpBackend(std::unique_ptr<RTCSctpTransportBackend>&&);
void processIceTransportStateChange(RTCIceTransport&);
+ RTCSctpTransport* sctp() { return m_sctpTransport.get(); }
+
#if !RELEASE_LOG_DISABLED
const Logger& logger() const final { return m_logger.get(); }
const void* logIdentifier() const final { return m_logIdentifier; }
@@ -266,6 +270,7 @@
std::optional<uint32_t> m_negotiationNeededEventId;
Vector<Ref<RTCDtlsTransport>> m_dtlsTransports;
Vector<Ref<RTCIceTransport>> m_iceTransports;
+ RefPtr<RTCSctpTransport> m_sctpTransport;
};
} // namespace WebCore
Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl (282056 => 282057)
--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl 2021-09-06 16:14:32 UTC (rev 282057)
@@ -131,7 +131,7 @@
attribute EventHandler ontrack;
// 6.1 Peer-to-peer data API
- // FIXME 169644: missing sctp
+ readonly attribute RTCSctpTransport? sctp;
RTCDataChannel createDataChannel([LegacyNullToEmptyString] USVString label, optional RTCDataChannelInit options);
attribute EventHandler ondatachannel;
Added: trunk/Source/WebCore/Modules/mediastream/RTCSctpTransport.cpp (0 => 282057)
--- trunk/Source/WebCore/Modules/mediastream/RTCSctpTransport.cpp (rev 0)
+++ trunk/Source/WebCore/Modules/mediastream/RTCSctpTransport.cpp 2021-09-06 16:14:32 UTC (rev 282057)
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2021 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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.
+ */
+
+#include "config.h"
+#include "RTCSctpTransport.h"
+
+#if ENABLE(WEB_RTC)
+
+#include "EventNames.h"
+#include "Logging.h"
+#include "RTCDtlsTransport.h"
+#include "RTCSctpTransportBackend.h"
+#include "ScriptExecutionContext.h"
+#include <wtf/IsoMallocInlines.h>
+
+namespace WebCore {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(RTCSctpTransport);
+
+RTCSctpTransport::RTCSctpTransport(ScriptExecutionContext& context, UniqueRef<RTCSctpTransportBackend>&& backend, Ref<RTCDtlsTransport >&& transport)
+ : ActiveDOMObject(&context)
+ , m_backend(WTFMove(backend))
+ , m_transport(WTFMove(transport))
+{
+ suspendIfNeeded();
+ m_backend->registerClient(*this);
+}
+
+RTCSctpTransport::~RTCSctpTransport()
+{
+ m_backend->unregisterClient();
+}
+
+void RTCSctpTransport::stop()
+{
+ m_state = RTCSctpTransportState::Closed;
+}
+
+bool RTCSctpTransport::virtualHasPendingActivity() const
+{
+ return m_state != RTCSctpTransportState::Closed && hasEventListeners();
+}
+
+void RTCSctpTransport::onStateChanged(RTCSctpTransportState state, std::optional<double> maxMessageSize, std::optional<unsigned short> maxChannels)
+{
+ queueTaskKeepingObjectAlive(*this, TaskSource::Networking, [this, state, maxMessageSize, maxChannels]() mutable {
+ if (m_state == RTCSctpTransportState::Closed)
+ return;
+
+ if (maxMessageSize)
+ m_maxMessageSize = *maxMessageSize;
+ if (maxChannels)
+ m_maxChannels = *maxChannels;
+
+ if (m_state != state) {
+ m_state = state;
+ dispatchEvent(Event::create(eventNames().statechangeEvent, Event::CanBubble::Yes, Event::IsCancelable::No));
+ }
+ });
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(WEB_RTC)
Added: trunk/Source/WebCore/Modules/mediastream/RTCSctpTransport.h (0 => 282057)
--- trunk/Source/WebCore/Modules/mediastream/RTCSctpTransport.h (rev 0)
+++ trunk/Source/WebCore/Modules/mediastream/RTCSctpTransport.h 2021-09-06 16:14:32 UTC (rev 282057)
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2021 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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
+
+#if ENABLE(WEB_RTC)
+
+#include "ActiveDOMObject.h"
+#include "Event.h"
+#include "EventTarget.h"
+#include "RTCSctpTransportBackend.h"
+
+namespace WebCore {
+
+class RTCDtlsTransport;
+
+class RTCSctpTransport final : public RefCounted<RTCSctpTransport>, public ActiveDOMObject, public EventTargetWithInlineData, public RTCSctpTransportBackend::Client {
+ WTF_MAKE_ISO_ALLOCATED(RTCSctpTransport);
+public:
+ static Ref<RTCSctpTransport> create(ScriptExecutionContext& context, UniqueRef<RTCSctpTransportBackend>&& backend, Ref<RTCDtlsTransport>&& transport) { return adoptRef(*new RTCSctpTransport(context, WTFMove(backend), WTFMove(transport))); }
+ ~RTCSctpTransport();
+
+ using RefCounted<RTCSctpTransport>::ref;
+ using RefCounted<RTCSctpTransport>::deref;
+
+ RTCDtlsTransport& transport() { return m_transport.get(); }
+ RTCSctpTransportState state() const { return m_state; }
+ double maxMessageSize() const { return m_maxMessageSize; }
+ std::optional<unsigned short> maxChannels() const { return m_maxChannels; }
+
+ void update(RTCSctpTransportBackend&) { }
+
+ const RTCSctpTransportBackend& backend() const { return m_backend.get(); }
+
+private:
+ RTCSctpTransport(ScriptExecutionContext&, UniqueRef<RTCSctpTransportBackend>&&, Ref<RTCDtlsTransport>&&);
+
+ // EventTargetWithInlineData
+ EventTargetInterface eventTargetInterface() const final { return RTCSctpTransportEventTargetInterfaceType; }
+ ScriptExecutionContext* scriptExecutionContext() const final { return m_scriptExecutionContext; }
+ void refEventTarget() final { ref(); }
+ void derefEventTarget() final { deref(); }
+
+ // ActiveDOMObject
+ void stop() final;
+ const char* activeDOMObjectName() const final { return "RTCSctpTransport"; }
+ bool virtualHasPendingActivity() const final;
+
+ // RTCSctpTransport::Client
+ void onStateChanged(RTCSctpTransportState, std::optional<double>, std::optional<unsigned short>) final;
+
+ UniqueRef<RTCSctpTransportBackend> m_backend;
+ Ref<RTCDtlsTransport> m_transport;
+ RTCSctpTransportState m_state { RTCSctpTransportState::Connecting };
+ double m_maxMessageSize { std::numeric_limits<double>::max() };
+ std::optional<unsigned short> m_maxChannels;
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(WEB_RTC)
Added: trunk/Source/WebCore/Modules/mediastream/RTCSctpTransport.idl (0 => 282057)
--- trunk/Source/WebCore/Modules/mediastream/RTCSctpTransport.idl (rev 0)
+++ trunk/Source/WebCore/Modules/mediastream/RTCSctpTransport.idl 2021-09-06 16:14:32 UTC (rev 282057)
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2021 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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.
+ */
+
+[
+ ActiveDOMObject,
+ Conditional=WEB_RTC,
+ EnabledBySetting=PeerConnection,
+ Exposed=(Window),
+] interface RTCSctpTransport : EventTarget {
+ readonly attribute RTCDtlsTransport transport;
+ readonly attribute RTCSctpTransportState state;
+ readonly attribute unrestricted double maxMessageSize;
+ readonly attribute unsigned short? maxChannels;
+ attribute EventHandler onstatechange;
+};
Added: trunk/Source/WebCore/Modules/mediastream/RTCSctpTransportBackend.h (0 => 282057)
--- trunk/Source/WebCore/Modules/mediastream/RTCSctpTransportBackend.h (rev 0)
+++ trunk/Source/WebCore/Modules/mediastream/RTCSctpTransportBackend.h 2021-09-06 16:14:32 UTC (rev 282057)
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2021 Apple Inc.
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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
+
+#if ENABLE(WEB_RTC)
+
+#include "RTCSctpTransportState.h"
+#include <wtf/WeakPtr.h>
+
+namespace WebCore {
+
+class RTCDtlsTransportBackend;
+
+class RTCSctpTransportBackend {
+public:
+ virtual ~RTCSctpTransportBackend() = default;
+
+ virtual const void* backend() const = 0;
+ virtual UniqueRef<RTCDtlsTransportBackend> dtlsTransportBackend() = 0;
+
+ class Client : public CanMakeWeakPtr<Client> {
+ public:
+ virtual ~Client() = default;
+ virtual void onStateChanged(RTCSctpTransportState, std::optional<double>, std::optional<unsigned short>) = 0;
+ };
+ virtual void registerClient(Client&) = 0;
+ virtual void unregisterClient() = 0;
+};
+
+inline bool operator==(const RTCSctpTransportBackend& a, const RTCSctpTransportBackend& b)
+{
+ return a.backend() == b.backend();
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(WEB_RTC)
Added: trunk/Source/WebCore/Modules/mediastream/RTCSctpTransportState.h (0 => 282057)
--- trunk/Source/WebCore/Modules/mediastream/RTCSctpTransportState.h (rev 0)
+++ trunk/Source/WebCore/Modules/mediastream/RTCSctpTransportState.h 2021-09-06 16:14:32 UTC (rev 282057)
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2021 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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
+
+#if ENABLE(WEB_RTC)
+
+enum class RTCSctpTransportState {
+ Connecting,
+ Connected,
+ Closed
+};
+
+#endif
Added: trunk/Source/WebCore/Modules/mediastream/RTCSctpTransportState.idl (0 => 282057)
--- trunk/Source/WebCore/Modules/mediastream/RTCSctpTransportState.idl (rev 0)
+++ trunk/Source/WebCore/Modules/mediastream/RTCSctpTransportState.idl 2021-09-06 16:14:32 UTC (rev 282057)
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2021 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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_RTC,
+ EnabledBySetting=PeerConnection
+] enum RTCSctpTransportState {
+ "connecting",
+ "connected",
+ "closed"
+};
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCIceTransportBackend.cpp (282056 => 282057)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCIceTransportBackend.cpp 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCIceTransportBackend.cpp 2021-09-06 16:14:32 UTC (rev 282057)
@@ -36,6 +36,8 @@
ALLOW_UNUSED_PARAMETERS_END
+#include <wtf/ThreadSafeRefCounted.h>
+
namespace WebCore {
static inline RTCIceTransportState toRTCIceTransportState(webrtc::IceTransportState state)
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp (282056 => 282057)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp 2021-09-06 16:14:32 UTC (rev 282057)
@@ -36,6 +36,7 @@
#include "LibWebRTCRtpReceiverBackend.h"
#include "LibWebRTCRtpSenderBackend.h"
#include "LibWebRTCRtpTransceiverBackend.h"
+#include "LibWebRTCSctpTransportBackend.h"
#include "LibWebRTCStatsCollector.h"
#include "LibWebRTCUtils.h"
#include "Logging.h"
@@ -672,18 +673,42 @@
});
}
+class SctpTransportState {
+public:
+ explicit SctpTransportState(rtc::scoped_refptr<webrtc::SctpTransportInterface>&&);
+ std::unique_ptr<LibWebRTCSctpTransportBackend> createBackend();
+
+private:
+ rtc::scoped_refptr<webrtc::SctpTransportInterface> m_transport;
+ webrtc::SctpTransportInformation m_information;
+};
+
+SctpTransportState::SctpTransportState(rtc::scoped_refptr<webrtc::SctpTransportInterface>&& transport)
+ : m_transport(WTFMove(transport))
+{
+ if (m_transport)
+ m_information = m_transport->Information();
+}
+
+std::unique_ptr<LibWebRTCSctpTransportBackend> SctpTransportState::createBackend()
+{
+ if (!m_transport)
+ return nullptr;
+ return makeUnique<LibWebRTCSctpTransportBackend>(WTFMove(m_transport), m_information.dtls_transport());
+}
+
void LibWebRTCMediaEndpoint::setLocalSessionDescriptionSucceeded()
{
- callOnMainThread([protectedThis = makeRef(*this)] {
+ callOnMainThread([protectedThis = makeRef(*this), sctpState = SctpTransportState(m_backend->GetSctpTransport())]() mutable {
if (protectedThis->isStopped())
return;
- protectedThis->m_peerConnectionBackend.setLocalDescriptionSucceeded();
+ protectedThis->m_peerConnectionBackend.setLocalDescriptionSucceeded(sctpState.createBackend());
});
}
void LibWebRTCMediaEndpoint::setLocalSessionDescriptionFailed(ExceptionCode errorCode, const char* errorMessage)
{
- callOnMainThread([protectedThis = makeRef(*this), errorCode, errorMessage = String(errorMessage)] () mutable {
+ callOnMainThread([protectedThis = makeRef(*this), errorCode, errorMessage = String(errorMessage)]() mutable {
if (protectedThis->isStopped())
return;
protectedThis->m_peerConnectionBackend.setLocalDescriptionFailed(Exception { errorCode, WTFMove(errorMessage) });
@@ -692,10 +717,10 @@
void LibWebRTCMediaEndpoint::setRemoteSessionDescriptionSucceeded()
{
- callOnMainThread([protectedThis = makeRef(*this)] {
+ callOnMainThread([protectedThis = makeRef(*this), sctpState = SctpTransportState(m_backend->GetSctpTransport())]() mutable {
if (protectedThis->isStopped())
return;
- protectedThis->m_peerConnectionBackend.setRemoteDescriptionSucceeded();
+ protectedThis->m_peerConnectionBackend.setRemoteDescriptionSucceeded(sctpState.createBackend());
});
}
Added: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCSctpTransportBackend.cpp (0 => 282057)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCSctpTransportBackend.cpp (rev 0)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCSctpTransportBackend.cpp 2021-09-06 16:14:32 UTC (rev 282057)
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2021 Apple Inc.
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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.
+ */
+
+#include "config.h"
+#include "LibWebRTCSctpTransportBackend.h"
+
+#if ENABLE(WEB_RTC) && USE(LIBWEBRTC)
+
+#include "LibWebRTCDtlsTransportBackend.h"
+#include "LibWebRTCProvider.h"
+
+ALLOW_UNUSED_PARAMETERS_BEGIN
+
+#include <webrtc/api/sctp_transport_interface.h>
+
+ALLOW_UNUSED_PARAMETERS_END
+
+namespace WebCore {
+
+static inline RTCSctpTransportState toRTCSctpTransportState(webrtc::SctpTransportState state)
+{
+ switch (state) {
+ case webrtc::SctpTransportState::kNew:
+ case webrtc::SctpTransportState::kConnecting:
+ return RTCSctpTransportState::Connecting;
+ case webrtc::SctpTransportState::kConnected:
+ return RTCSctpTransportState::Connected;
+ case webrtc::SctpTransportState::kClosed:
+ return RTCSctpTransportState::Closed;
+ case webrtc::SctpTransportState::kNumValues:
+ ASSERT_NOT_REACHED();
+ return RTCSctpTransportState::Connecting;
+ }
+
+ RELEASE_ASSERT_NOT_REACHED();
+}
+
+class LibWebRTCSctpTransportBackendObserver final : public ThreadSafeRefCounted<LibWebRTCSctpTransportBackendObserver>, public webrtc::SctpTransportObserverInterface {
+public:
+ static Ref<LibWebRTCSctpTransportBackendObserver> create(RTCSctpTransportBackend::Client& client, rtc::scoped_refptr<webrtc::SctpTransportInterface>& backend) { return adoptRef(*new LibWebRTCSctpTransportBackendObserver(client, backend)); }
+
+ void start();
+ void stop();
+
+private:
+ LibWebRTCSctpTransportBackendObserver(RTCSctpTransportBackend::Client&, rtc::scoped_refptr<webrtc::SctpTransportInterface>&);
+
+ void OnStateChange(webrtc::SctpTransportInformation) final;
+
+ void updateState(webrtc::SctpTransportInformation&&);
+
+ rtc::scoped_refptr<webrtc::SctpTransportInterface> m_backend;
+ WeakPtr<RTCSctpTransportBackend::Client> m_client;
+};
+
+LibWebRTCSctpTransportBackendObserver::LibWebRTCSctpTransportBackendObserver(RTCSctpTransportBackend::Client& client, rtc::scoped_refptr<webrtc::SctpTransportInterface>& backend)
+ : m_backend(backend)
+ , m_client(makeWeakPtr(client))
+{
+ ASSERT(m_backend);
+}
+
+void LibWebRTCSctpTransportBackendObserver::updateState(webrtc::SctpTransportInformation&& info)
+{
+ if (!m_client)
+ return;
+
+ std::optional<unsigned short> maxChannels;
+ if (auto value = info.MaxChannels())
+ maxChannels = *value;
+ m_client->onStateChanged(toRTCSctpTransportState(info.state()), info.MaxMessageSize(), maxChannels);
+}
+
+void LibWebRTCSctpTransportBackendObserver::start()
+{
+ LibWebRTCProvider::callOnWebRTCNetworkThread([this, protectedThis = makeRef(*this)]() mutable {
+ m_backend->RegisterObserver(this);
+ callOnMainThread([protectedThis = WTFMove(protectedThis), info = m_backend->Information()]() mutable {
+ protectedThis->updateState(WTFMove(info));
+ });
+ });
+}
+
+void LibWebRTCSctpTransportBackendObserver::stop()
+{
+ m_client = nullptr;
+ LibWebRTCProvider::callOnWebRTCNetworkThread([protectedThis = makeRef(*this)] {
+ protectedThis->m_backend->UnregisterObserver();
+ });
+}
+
+void LibWebRTCSctpTransportBackendObserver::OnStateChange(webrtc::SctpTransportInformation info)
+{
+ callOnMainThread([protectedThis = makeRef(*this), info = WTFMove(info)]() mutable {
+ protectedThis->updateState(WTFMove(info));
+ });
+}
+
+LibWebRTCSctpTransportBackend::LibWebRTCSctpTransportBackend(rtc::scoped_refptr<webrtc::SctpTransportInterface>&& backend, rtc::scoped_refptr<webrtc::DtlsTransportInterface>&& dtlsBackend)
+ : m_backend(WTFMove(backend))
+ , m_dtlsBackend(WTFMove(dtlsBackend))
+{
+ ASSERT(m_backend);
+}
+
+LibWebRTCSctpTransportBackend::~LibWebRTCSctpTransportBackend()
+{
+ if (m_observer)
+ m_observer->stop();
+}
+
+UniqueRef<RTCDtlsTransportBackend> LibWebRTCSctpTransportBackend::dtlsTransportBackend()
+{
+ return makeUniqueRef<LibWebRTCDtlsTransportBackend>(m_dtlsBackend.get());
+}
+
+void LibWebRTCSctpTransportBackend::registerClient(Client& client)
+{
+ ASSERT(!m_observer);
+ m_observer = LibWebRTCSctpTransportBackendObserver::create(client, m_backend);
+ m_observer->start();
+}
+
+void LibWebRTCSctpTransportBackend::unregisterClient()
+{
+ ASSERT(m_observer);
+ m_observer->stop();
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(WEB_RTC) && USE(LIBWEBRTC)
Added: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCSctpTransportBackend.h (0 => 282057)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCSctpTransportBackend.h (rev 0)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCSctpTransportBackend.h 2021-09-06 16:14:32 UTC (rev 282057)
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2021 Apple Inc.
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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
+
+#if ENABLE(WEB_RTC)
+
+#include "LibWebRTCMacros.h"
+#include "RTCSctpTransportBackend.h"
+#include <wtf/WeakPtr.h>
+
+ALLOW_UNUSED_PARAMETERS_BEGIN
+
+#include <webrtc/api/scoped_refptr.h>
+
+ALLOW_UNUSED_PARAMETERS_END
+
+namespace webrtc {
+class DtlsTransportInterface;
+class SctpTransportInterface;
+}
+
+namespace WebCore {
+class LibWebRTCSctpTransportBackendObserver;
+class LibWebRTCSctpTransportBackend final : public RTCSctpTransportBackend, public CanMakeWeakPtr<LibWebRTCSctpTransportBackend> {
+ WTF_MAKE_FAST_ALLOCATED;
+public:
+ explicit LibWebRTCSctpTransportBackend(rtc::scoped_refptr<webrtc::SctpTransportInterface>&&, rtc::scoped_refptr<webrtc::DtlsTransportInterface>&&);
+ ~LibWebRTCSctpTransportBackend();
+
+private:
+ // RTCSctpTransportBackend
+ const void* backend() const final { return m_backend.get(); }
+ UniqueRef<RTCDtlsTransportBackend> dtlsTransportBackend() final;
+ void registerClient(Client&) final;
+ void unregisterClient() final;
+
+ rtc::scoped_refptr<webrtc::SctpTransportInterface> m_backend;
+ rtc::scoped_refptr<webrtc::DtlsTransportInterface> m_dtlsBackend;
+ RefPtr<LibWebRTCSctpTransportBackendObserver> m_observer;
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(WEB_RTC)
Modified: trunk/Source/WebCore/Sources.txt (282056 => 282057)
--- trunk/Source/WebCore/Sources.txt 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/WebCore/Sources.txt 2021-09-06 16:14:32 UTC (rev 282057)
@@ -179,6 +179,7 @@
Modules/mediastream/RTCRtpSender.cpp
Modules/mediastream/RTCRtpTransform.cpp
Modules/mediastream/RTCRtpTransceiver.cpp
+Modules/mediastream/RTCSctpTransport.cpp
Modules/mediastream/RTCSessionDescription.cpp
Modules/mediastream/RTCTrackEvent.cpp
Modules/mediastream/RTCTransformEvent.cpp
@@ -193,6 +194,7 @@
Modules/mediastream/libwebrtc/LibWebRTCRtpSenderTransformBackend.cpp
Modules/mediastream/libwebrtc/LibWebRTCRtpTransformBackend.cpp
Modules/mediastream/libwebrtc/LibWebRTCRtpTransformableFrame.cpp
+Modules/mediastream/libwebrtc/LibWebRTCSctpTransportBackend.cpp
Modules/model-element/HTMLModelElement.cpp
Modules/notifications/Notification.cpp
Modules/notifications/NotificationController.cpp
@@ -3354,6 +3356,8 @@
JSRTCRtpSynchronizationSource.cpp
JSRTCRtpTransceiver.cpp
JSRTCRtpTransceiverDirection.cpp
+JSRTCSctpTransport.cpp
+JSRTCSctpTransportState.cpp
JSRTCSdpType.cpp
JSRTCSessionDescription.cpp
JSRTCSessionDescriptionInit.cpp
Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (282056 => 282057)
--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2021-09-06 16:14:32 UTC (rev 282057)
@@ -1082,6 +1082,7 @@
413CCD4A20DE034F0065A21A /* MockMediaDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 413CCD4820DE013C0065A21A /* MockMediaDevice.h */; settings = {ATTRIBUTES = (Private, ); }; };
413E00791DB0E4F2002341D2 /* MemoryRelease.h in Headers */ = {isa = PBXBuildFile; fileRef = 413E00781DB0E4DE002341D2 /* MemoryRelease.h */; settings = {ATTRIBUTES = (Private, ); }; };
414460A22412994500814BE7 /* MediaSessionIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 414460A02412994100814BE7 /* MediaSessionIdentifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 414516EC26CE526600AAABE0 /* RTCSctpTransportBackend.h in Headers */ = {isa = PBXBuildFile; fileRef = 414516EB26CE526600AAABE0 /* RTCSctpTransportBackend.h */; };
414598C223C8D177002B9CC8 /* LocalSampleBufferDisplayLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 414598C123C8AD79002B9CC8 /* LocalSampleBufferDisplayLayer.mm */; };
414B7FAD24D81CC10033D442 /* MediaRecorderPrivateOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 414B7FAB24D81C8F0033D442 /* MediaRecorderPrivateOptions.h */; settings = {ATTRIBUTES = (Private, ); }; };
414B82051D6DF0E50077EBE3 /* StructuredClone.h in Headers */ = {isa = PBXBuildFile; fileRef = 414B82031D6DF0D90077EBE3 /* StructuredClone.h */; };
@@ -7831,6 +7832,14 @@
414516DD26CC040D00AAABE0 /* LibWebRTCIceTransportBackend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LibWebRTCIceTransportBackend.h; path = libwebrtc/LibWebRTCIceTransportBackend.h; sourceTree = "<group>"; };
414516DF26CC040D00AAABE0 /* LibWebRTCIceTransportBackend.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LibWebRTCIceTransportBackend.cpp; path = libwebrtc/LibWebRTCIceTransportBackend.cpp; sourceTree = "<group>"; };
414516E026CC042100AAABE0 /* RTCIceTransportBackend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RTCIceTransportBackend.h; sourceTree = "<group>"; };
+ 414516E526CE523E00AAABE0 /* LibWebRTCSctpTransportBackend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LibWebRTCSctpTransportBackend.h; path = libwebrtc/LibWebRTCSctpTransportBackend.h; sourceTree = "<group>"; };
+ 414516E726CE523E00AAABE0 /* LibWebRTCSctpTransportBackend.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LibWebRTCSctpTransportBackend.cpp; path = libwebrtc/LibWebRTCSctpTransportBackend.cpp; sourceTree = "<group>"; };
+ 414516E826CE525300AAABE0 /* RTCSctpTransport.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RTCSctpTransport.cpp; sourceTree = "<group>"; };
+ 414516E926CE525400AAABE0 /* RTCSctpTransport.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = RTCSctpTransport.idl; sourceTree = "<group>"; };
+ 414516EA26CE525400AAABE0 /* RTCSctpTransport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RTCSctpTransport.h; sourceTree = "<group>"; };
+ 414516EB26CE526600AAABE0 /* RTCSctpTransportBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCSctpTransportBackend.h; sourceTree = "<group>"; };
+ 414516ED26CE556B00AAABE0 /* RTCSctpTransportState.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = RTCSctpTransportState.idl; sourceTree = "<group>"; };
+ 414516EE26CE556C00AAABE0 /* RTCSctpTransportState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RTCSctpTransportState.h; sourceTree = "<group>"; };
414598BE23C8AAB8002B9CC8 /* SampleBufferDisplayLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SampleBufferDisplayLayer.h; sourceTree = "<group>"; };
414598C023C8AD78002B9CC8 /* LocalSampleBufferDisplayLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocalSampleBufferDisplayLayer.h; sourceTree = "<group>"; };
414598C123C8AD79002B9CC8 /* LocalSampleBufferDisplayLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LocalSampleBufferDisplayLayer.mm; sourceTree = "<group>"; };
@@ -17343,6 +17352,12 @@
413C8B2F2552F27B00E65055 /* RTCRtpTransform.h */,
4181C5CA255582E300AEB0FF /* RTCRtpTransformableFrame.h */,
4181C5C8255573DF00AEB0FF /* RTCRtpTransformBackend.h */,
+ 414516E826CE525300AAABE0 /* RTCSctpTransport.cpp */,
+ 414516EA26CE525400AAABE0 /* RTCSctpTransport.h */,
+ 414516E926CE525400AAABE0 /* RTCSctpTransport.idl */,
+ 414516EB26CE526600AAABE0 /* RTCSctpTransportBackend.h */,
+ 414516EE26CE556C00AAABE0 /* RTCSctpTransportState.h */,
+ 414516ED26CE556B00AAABE0 /* RTCSctpTransportState.idl */,
410F565824FCF85400A2E50C /* RTCSdpType.idl */,
07221B7A17CEC32700848E51 /* RTCSessionDescription.cpp */,
07221B7B17CEC32700848E51 /* RTCSessionDescription.h */,
@@ -19402,6 +19417,8 @@
4181C5CC2555836800AEB0FF /* LibWebRTCRtpTransformableFrame.h */,
4181C5CE2555895500AEB0FF /* LibWebRTCRtpTransformBackend.cpp */,
4181C5CF2555895600AEB0FF /* LibWebRTCRtpTransformBackend.h */,
+ 414516E726CE523E00AAABE0 /* LibWebRTCSctpTransportBackend.cpp */,
+ 414516E526CE523E00AAABE0 /* LibWebRTCSctpTransportBackend.h */,
41D28D0B2139E01D00F4206F /* LibWebRTCStatsCollector.cpp */,
41D28D0C2139E01E00F4206F /* LibWebRTCStatsCollector.h */,
41D1A049213EDDFD0063FB6B /* LibWebRTCUtils.cpp */,
@@ -34500,6 +34517,7 @@
413C8B342552F27D00E65055 /* RTCRtpTransform.h in Headers */,
4181C5CB255582E400AEB0FF /* RTCRtpTransformableFrame.h in Headers */,
4181C5C9255573DF00AEB0FF /* RTCRtpTransformBackend.h in Headers */,
+ 414516EC26CE526600AAABE0 /* RTCSctpTransportBackend.h in Headers */,
3135910A1E7DDC7300F30630 /* RTCSdpType.h in Headers */,
078E092617D14D1C00420AA1 /* RTCSessionDescription.h in Headers */,
078E094317D16E1C00420AA1 /* RTCSessionDescriptionDescriptor.h in Headers */,
Modified: trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h (282056 => 282057)
--- trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h 2021-09-06 16:14:32 UTC (rev 282057)
@@ -212,6 +212,7 @@
macro(RTCRtpSender) \
macro(RTCRtpTransceiver) \
macro(RTCRtpTransform) \
+ macro(RTCSctpTransport) \
macro(RTCSessionDescription) \
macro(RTCStatsReport) \
macro(RTCTrackEvent) \
Modified: trunk/Source/WebCore/dom/EventTargetFactory.in (282056 => 282057)
--- trunk/Source/WebCore/dom/EventTargetFactory.in 2021-09-06 15:57:45 UTC (rev 282056)
+++ trunk/Source/WebCore/dom/EventTargetFactory.in 2021-09-06 16:14:32 UTC (rev 282057)
@@ -45,6 +45,7 @@
RTCPeerConnection conditional=WEB_RTC
RTCRtpSFrameTransform conditional=WEB_RTC
RTCRtpScriptTransform conditional=WEB_RTC
+RTCSctpTransport conditional=WEB_RTC
ServiceWorker conditional=SERVICE_WORKER
ServiceWorkerContainer conditional=SERVICE_WORKER
ServiceWorkerGlobalScope conditional=SERVICE_WORKER