| Coverage Report is based on the following editor draft: |
| https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html |
| |
| 4.3.1.6 Set the RTCSessionSessionDescription |
| |
| [Trivial] |
| 1. Let p be a new promise. |
| |
| [Trivial] |
| 2. In parallel, start the process to apply description as described in [JSEP] |
| (section 5.5. and section 5.6.). |
| |
| [Trivial] |
| 1. If the process to apply description fails for any reason, then user agent |
| MUST queue a task that runs the following steps: |
| |
| [Untestable] |
| 1. If connection's [[IsClosed]] slot is true, then abort these steps. |
| |
| [Untestable] |
| 2. If elements of the SDP were modified, then reject p with a newly created |
| InvalidModificationError and abort these steps. |
| |
| [RTCPeerConnection-setLocalDescription-answer] |
| [RTCPeerConnection-setRemoteDescription-offer] |
| [RTCPeerConnection-setRemoteDescription-answer] |
| 3. If the description's type is invalid for the current signaling state of |
| connection as described in [JSEP] (section 5.5. and section 5.6.), then |
| reject p with a newly created InvalidStateError and abort these steps. |
| |
| [RTCPeerConnection-setRemoteDescription-offer] |
| 4. If the content of description is not valid SDP syntax, then reject p |
| with an RTCError (with errorDetail set to "sdp-syntax-error" and the |
| sdpLineNumber attribute set to the line number in the SDP where the |
| syntax error was detected) and abort these steps. |
| |
| [Untestable] |
| 5. If the content of description is invalid, then reject p with a newly |
| created InvalidAccessError and abort these steps. |
| |
| [Untestable] |
| 6. For all other errors, for example if description cannot be applied at |
| the media layer, reject p with a newly created OperationError. |
| |
| [Trivial] |
| 2. If description is applied successfully, the user agent MUST queue a task |
| that runs the following steps: |
| |
| [Untestable] |
| 1. If connection's [[isClosed]] slot is true, then abort these steps. |
| |
| [RTCPeerConnection-setLocalDescription] |
| 2. If description is set as a local description, then run one of the |
| following steps: |
| |
| [RTCPeerConnection-setLocalDescription-offer] |
| - If description is of type "offer", set connection.pendingLocalDescription |
| to description and signaling state to have-local-offer. |
| |
| [RTCPeerConnection-setLocalDescription-answer] |
| - If description is of type "answer", then this completes an offer answer |
| negotiation. |
| |
| Set connection's currentLocalDescription to description and |
| currentRemoteDescription to the value of pendingRemoteDescription. |
| |
| Set both pendingRemoteDescription and pendingLocalDescription to null. |
| Finally set connection's signaling state to stable |
| |
| [RTCPeerConnection-setLocalDescription-rollback] |
| - If description is of type "rollback", then this is a rollback. Set |
| connection.pendingLocalDescription to null and signaling state to stable. |
| |
| [RTCPeerConnection-setLocalDescription-pranswer] |
| - If description is of type "pranswer", then set |
| connection.pendingLocalDescription to description and signaling state to |
| have-local-pranswer. |
| |
| [RTCPeerConnection-setRemoteDescription] |
| 3. Otherwise, if description is set as a remote description, then run one of the |
| following steps: |
| |
| [RTCPeerConnection-setRemoteDescription-offer] |
| - If description is of type "offer", set connection.pendingRemoteDescription |
| attribute to description and signaling state to have-remote-offer. |
| |
| [RTCPeerConnection-setRemoteDescription-answer] |
| - If description is of type "answer", then this completes an offer answer |
| negotiation. |
| |
| Set connection's currentRemoteDescription to description and |
| currentLocalDescription to the value of pendingLocalDescription. |
| |
| Set both pendingRemoteDescription and pendingLocalDescription to null. |
| |
| Finally setconnection's signaling state to stable |
| |
| [RTCPeerConnection-setRemoteDescription-rollback] |
| - If description is of type "rollback", then this is a rollback. |
| Set connection.pendingRemoteDescription to null and signaling state to stable. |
| |
| [RTCPeerConnection-setRemoteDescription-rollback] |
| - If description is of type "pranswer", then set |
| connection.pendingRemoteDescription to description and signaling state |
| to have-remote-pranswer. |
| |
| [RTCPeerConnection-setLocalDescription] |
| [RTCPeerConnection-setRemoteDescription] |
| 4. If connection's signaling state changed above, fire a simple event named |
| signalingstatechange at connection. |
| |
| [TODO] |
| 5. If description is of type "answer", and it initiates the closure of an existing |
| SCTP association, as defined in [SCTP-SDP], Sections 10.3 and 10.4, set the value |
| of connection's [[sctpTransport]] internal slot to null. |
| |
| [RTCSctpTransport] |
| 6. If description is of type "answer" or "pranswer", then run the following steps: |
| |
| [RTCSctpTransport] |
| 1. If description initiates the establishment of a new SCTP association, |
| as defined in [SCTP-SDP], Sections 10.3 and 10.4, set the value of connection's |
| [[sctpTransport]] internal slot to a newly created RTCSctpTransport. |
| |
| [TODO] |
| 2. If description negotiates the DTLS role of the SCTP transport, and there is an |
| RTCDataChannel with a null id, then generate an ID according to |
| [RTCWEB-DATA-PROTOCOL]. |
| |
| [Untestable] |
| If no available ID could be generated, then run the following steps: |
| |
| [Untestable] |
| 1. Let channel be the RTCDataChannel object for which an ID could not be |
| generated. |
| |
| [Untestable] |
| 2. Set channel's readyState attribute to closed. |
| |
| [Untestable] |
| 3. Fire an event named error with a ResourceInUse exception at channel. |
| |
| [Untestable] |
| 4. Fire a simple event named close at channel. |
| |
| [TODO RTCPeerConnection-setDescription-transceiver] |
| 7. If description is set as a local description, then run the following steps for |
| each media description in description that is not yet associated with an |
| RTCRtpTransceiver object: |
| |
| [TODO RTCPeerConnection-setDescription-transceiver] |
| 1. Let transceiver be the RTCRtpTransceiver used to create the media |
| description. |
| |
| [TODO RTCPeerConnection-setDescription-transceiver] |
| 2. Set transceiver's mid value to the mid of the corresponding media |
| description. |
| |
| [RTCPeerConnection-ontrack] |
| 8. If description is set as a remote description, then run the following steps |
| for each media description in description: |
| |
| [TODO RTCPeerConnection-setDescription-transceiver] |
| 1. As described by [JSEP] (section 5.9.), attempt to find an existing |
| RTCRtpTransceiver object, transceiver, to represent the media description. |
| |
| [RTCPeerConnection-ontrack] |
| 2. If no suitable transceiver is found (transceiver is unset), run the following |
| steps: |
| |
| [RTCPeerConnection-ontrack] |
| 1. Create an RTCRtpSender, sender, from the media description. |
| |
| [RTCPeerConnection-ontrack] |
| 2. Create an RTCRtpReceiver, receiver, from the media description. |
| |
| [RTCPeerConnection-ontrack] |
| 3. Create an RTCRtpTransceiver with sender, receiver and direction, and let |
| transceiver be the result. |
| |
| [RTCPeerConnection-ontrack] |
| 3. Set transceiver's mid value to the mid of the corresponding media description. |
| If the media description has no MID, and transceiver's mid is unset, generate |
| a random value as described in [JSEP] (section 5.9.). |
| |
| [RTCPeerConnection-ontrack] |
| 4. If the direction of the media description is sendrecv or sendonly, and |
| transceiver.receiver.track has not yet been fired in a track event, process |
| the remote track for the media description, given transceiver. |
| |
| [TODO RTCPeerConnection-setDescription-transceiver] |
| 5. If the media description is rejected, and transceiver is not already stopped, |
| stop the RTCRtpTransceiver transceiver. |
| |
| |
| [TODO RTCPeerConnection-setDescription-transceiver] |
| 9. If description is of type "rollback", then run the following steps: |
| |
| [TODO RTCPeerConnection-setDescription-transceiver] |
| 1. If the mid value of an RTCRtpTransceiver was set to a non-null value by |
| the RTCSessionDescription that is being rolled back, set the mid value |
| of that transceiver to null, as described by [JSEP] (section 4.1.8.2.). |
| |
| [TODO RTCPeerConnection-setDescription-transceiver] |
| 2. If an RTCRtpTransceiver was created by applying the RTCSessionDescription |
| that is being rolled back, and a track has not been attached to it via |
| addTrack, remove that transceiver from connection's set of transceivers, |
| as described by [JSEP] (section 4.1.8.2.). |
| |
| [TODO RTCPeerConnection-setDescription-transceiver] |
| 3. Restore the value of connection's [[SctpTransport]] internal slot to its |
| value at the last stable signaling state. |
| |
| [RTCPeerConnection-onnegotiationneeded] |
| 10. If connection's signaling state is now stable, update the negotiation-needed |
| flag. If connection's [[NegotiationNeeded]] slot was true both before and after |
| this update, queue a task that runs the following steps: |
| |
| [Untestable] |
| 1. If connection's [[IsClosed]] slot is true, abort these steps. |
| |
| [RTCPeerConnection-onnegotiationneeded] |
| 2. If connection's [[NegotiationNeeded]] slot is false, abort these steps. |
| |
| [RTCPeerConnection-onnegotiationneeded] |
| 3. Fire a simple event named negotiationneeded at connection. |
| |
| [Trivial] |
| 11. Resolve p with undefined. |
| |
| [Trivial] |
| 3. Return p. |
| |
| |
| Coverage Report |
| |
| Tested 35 |
| Not Tested 15 |
| Untestable 8 |
| Total 58 |