<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[281631] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/281631">281631</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2021-08-26 09:55:04 -0700 (Thu, 26 Aug 2021)</dd>
</dl>

<h3>Log Message</h3>
<pre>Unreviewed, reverting <a href="http://trac.webkit.org/projects/webkit/changeset/281616">r281616</a>.
https://bugs.webkit.org/show_bug.cgi?id=229570

It is crashing in iOS Debug

Reverted changeset:

"Signaling state check when applying a local or remote
description is no longer aligned with the WebRTC spec"
https://bugs.webkit.org/show_bug.cgi?id=229138
https://commits.webkit.org/<a href="http://trac.webkit.org/projects/webkit/changeset/281616">r281616</a></pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastmediastreamRTCPeerConnectionsetRemoteDescriptionofferexpectedtxt">trunk/LayoutTests/fast/mediastream/RTCPeerConnection-setRemoteDescription-offer-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmediastreamRTCPeerConnectionstableexpectedtxt">trunk/LayoutTests/fast/mediastream/RTCPeerConnection-stable-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionSLDSRDtiminghttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-SLD-SRD-timing.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionoperationshttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-operations.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionperfectnegotiationstressglarelinearhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-perfect-negotiation-stress-glare-linear.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionperfectnegotiationstressglarehttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-perfect-negotiation-stress-glare.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionrestartIcehttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-restartIce.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionsetDescriptiontransceiverexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setDescription-transceiver-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionsetLocalDescriptionanswerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-answer-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionsetLocalDescriptionofferexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-offer-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionsetLocalDescriptionpranswerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-pranswer-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionsetLocalDescriptionrollbackexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-rollback-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionsetRemoteDescriptionexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionsetRemoteDescriptionofferexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionsetRemoteDescriptionrollbackexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCRtpTransceiverhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpTransceiver.https-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamPeerConnectionBackendcpp">trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamRTCSignalingStateh">trunk/Source/WebCore/platform/mediastream/RTCSignalingState.h</a></li>
<li><a href="#trunkSourceWebCoretestingMockLibWebRTCPeerConnectioncpp">trunk/Source/WebCore/testing/MockLibWebRTCPeerConnection.cpp</a></li>
<li><a href="#trunkSourceWebCoretestingMockLibWebRTCPeerConnectionh">trunk/Source/WebCore/testing/MockLibWebRTCPeerConnection.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog      2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/ChangeLog 2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2021-08-26  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, reverting r281616.
+        https://bugs.webkit.org/show_bug.cgi?id=229570
+
+        It is crashing in iOS Debug
+
+        Reverted changeset:
+
+        "Signaling state check when applying a local or remote
+        description is no longer aligned with the WebRTC spec"
+        https://bugs.webkit.org/show_bug.cgi?id=229138
+        https://commits.webkit.org/r281616
+
</ins><span class="cx"> 2021-08-26  Eric Hutchison  <ehutchison@apple.com>
</span><span class="cx"> 
</span><span class="cx">         [iOS wk2 release] imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-subpixel-clip.html is a flaky failure.
</span></span></pre></div>
<a id="trunkLayoutTestsfastmediastreamRTCPeerConnectionsetRemoteDescriptionofferexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/mediastream/RTCPeerConnection-setRemoteDescription-offer-expected.txt (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/RTCPeerConnection-setRemoteDescription-offer-expected.txt     2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/fast/mediastream/RTCPeerConnection-setRemoteDescription-offer-expected.txt        2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -20,8 +20,8 @@
</span><span class="cx"> FAIL pc.signalingState should be have-remote-offer. Was stable.
</span><span class="cx"> 
</span><span class="cx"> *** Try setting local descriptions with bad types for the current state
</span><del>-PASS promise pc.setRemoteDescription({type:'answer', sdp:remoteOffer1.sdp}); rejected with InvalidStateError: The object is in an invalid state.
-PASS promise pc.setRemoteDescription({type:'pranswer', sdp:remoteOffer1.sdp}); rejected with InvalidStateError: The object is in an invalid state.
</del><ins>+PASS promise pc.setRemoteDescription({type:'answer', sdp:remoteOffer1.sdp}); rejected with InvalidStateError: Remote description type 2 is incompatible with current signaling state 0
+PASS promise pc.setRemoteDescription({type:'pranswer', sdp:remoteOffer1.sdp}); rejected with InvalidStateError: Remote description type 1 is incompatible with current signaling state 0
</ins><span class="cx"> 
</span><span class="cx"> *** Create (remote) offer with video (remoteOffer2)
</span><span class="cx"> *** Done, start testing with remoteOffer2
</span></span></pre></div>
<a id="trunkLayoutTestsfastmediastreamRTCPeerConnectionstableexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/mediastream/RTCPeerConnection-stable-expected.txt (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/RTCPeerConnection-stable-expected.txt 2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/fast/mediastream/RTCPeerConnection-stable-expected.txt    2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -6,25 +6,25 @@
</span><span class="cx"> PASS pc.signalingState is "stable"
</span><span class="cx"> PASS pc.setLocalDescription(sessionDescription).then(finishIfSucceeded, requestFailed1); did not throw exception.
</span><span class="cx"> PASS setLocalDescription failed.
</span><del>-FAIL errorReason.name should be InvalidSessionDescriptionError. Was OperationError.
</del><ins>+FAIL errorReason.name should be InvalidSessionDescriptionError. Was InvalidStateError.
</ins><span class="cx"> FAIL pc.localDescription should throw an exception. Was null.
</span><span class="cx"> FAIL pc.remoteDescription should throw an exception. Was null.
</span><span class="cx"> PASS pc.signalingState is "stable"
</span><span class="cx"> PASS pc.setLocalDescription(sessionDescription).then(finishIfSucceeded, requestFailed2); did not throw exception.
</span><span class="cx"> PASS setLocalDescription failed.
</span><del>-FAIL errorReason.name should be InvalidSessionDescriptionError. Was OperationError.
</del><ins>+FAIL errorReason.name should be InvalidSessionDescriptionError. Was InvalidStateError.
</ins><span class="cx"> FAIL pc.localDescription should throw an exception. Was null.
</span><span class="cx"> FAIL pc.remoteDescription should throw an exception. Was null.
</span><span class="cx"> PASS pc.signalingState is "stable"
</span><span class="cx"> PASS pc.setRemoteDescription(sessionDescription).then(finishIfSucceeded, requestFailed3); did not throw exception.
</span><span class="cx"> PASS setRemoteDescription failed.
</span><del>-FAIL errorReason.name should be InvalidSessionDescriptionError. Was SyntaxError.
</del><ins>+FAIL errorReason.name should be InvalidSessionDescriptionError. Was InvalidStateError.
</ins><span class="cx"> FAIL pc.localDescription should throw an exception. Was null.
</span><span class="cx"> FAIL pc.remoteDescription should throw an exception. Was null.
</span><span class="cx"> PASS pc.signalingState is "stable"
</span><span class="cx"> PASS pc.setRemoteDescription(sessionDescription).then(finishIfSucceeded, requestFailed4); did not throw exception.
</span><span class="cx"> PASS setRemoteDescription failed.
</span><del>-FAIL errorReason.name should be InvalidSessionDescriptionError. Was SyntaxError.
</del><ins>+FAIL errorReason.name should be InvalidSessionDescriptionError. Was InvalidStateError.
</ins><span class="cx"> FAIL pc.localDescription should throw an exception. Was null.
</span><span class="cx"> FAIL pc.remoteDescription should throw an exception. Was null.
</span><span class="cx"> PASS pc.signalingState is "stable"
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog 2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/imported/w3c/ChangeLog    2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2021-08-26  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, reverting r281616.
+        https://bugs.webkit.org/show_bug.cgi?id=229570
+
+        It is crashing in iOS Debug
+
+        Reverted changeset:
+
+        "Signaling state check when applying a local or remote
+        description is no longer aligned with the WebRTC spec"
+        https://bugs.webkit.org/show_bug.cgi?id=229138
+        https://commits.webkit.org/r281616
+
</ins><span class="cx"> 2021-08-26  Enrique Ocaña González  <eocanha@igalia.com>
</span><span class="cx"> 
</span><span class="cx">         [GStreamer][MSE] Implement the "sequence" mode in SourceBuffer for the GStreamer ports
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionSLDSRDtiminghttpsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-SLD-SRD-timing.https-expected.txt (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-SLD-SRD-timing.https-expected.txt     2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-SLD-SRD-timing.https-expected.txt        2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> 
</span><del>-FAIL setLocalDescription and setRemoteDescription are not racy promise_test: Unhandled rejection with value: object "InvalidStateError: Failed to set remote offer sdp: Called in wrong state: have-local-offer"
</del><ins>+FAIL setLocalDescription and setRemoteDescription are not racy promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 0 is incompatible with current signaling state 1"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionoperationshttpsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-operations.https-expected.txt (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-operations.https-expected.txt 2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-operations.https-expected.txt    2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> PASS promiseStateFinal helper works
</span><span class="cx"> FAIL createOffer must detect InvalidStateError synchronously when chain is empty (prerequisite) assert_equals: expected "InvalidStateError" but got "Error"
</span><span class="cx"> PASS createAnswer must detect InvalidStateError synchronously when chain is empty (prerequisite)
</span><del>-FAIL SLD(rollback) must detect InvalidStateError synchronously when chain is empty assert_equals: promise rejected on same task expected "rejected" but got "pending"
</del><ins>+PASS SLD(rollback) must detect InvalidStateError synchronously when chain is empty
</ins><span class="cx"> FAIL addIceCandidate must detect InvalidStateError synchronously when chain is empty assert_equals: expected "InvalidStateError" but got "TypeError"
</span><span class="cx"> PASS replaceTrack must detect InvalidStateError synchronously when chain is empty and transceiver is stopped
</span><span class="cx"> PASS setParameters must detect InvalidStateError synchronously always when transceiver is stopped
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> PASS sender.getStats does NOT use the operations chain
</span><span class="cx"> PASS receiver.getStats does NOT use the operations chain
</span><span class="cx"> FAIL addIceCandidate chains onto SRD, fails before assert_equals: expected "InvalidStateError" but got "Error"
</span><del>-FAIL Operations queue not vulnerable to recursion by chained negotiationneeded promise_test: Unhandled rejection with value: object "InvalidStateError: Failed to set remote offer sdp: Called in wrong state: have-local-offer"
</del><ins>+FAIL Operations queue not vulnerable to recursion by chained negotiationneeded promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 0 is incompatible with current signaling state 1"
</ins><span class="cx"> FAIL Pack operations queue with implicit offer and answer promise_test: Unhandled rejection with value: object "OperationError: Expect line: v="
</span><span class="cx"> TIMEOUT Negotiate solely by operations queue and signaling state Test timed out
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionperfectnegotiationstressglarelinearhttpsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-perfect-negotiation-stress-glare-linear.https-expected.txt (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-perfect-negotiation-stress-glare-linear.https-expected.txt    2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-perfect-negotiation-stress-glare-linear.https-expected.txt       2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -1,6 +1,4 @@
</span><span class="cx"> 
</span><del>-Harness Error (FAIL), message = Unhandled rejection: null is not an object (evaluating 'target.postMessage')
</del><ins>+FAIL Perfect negotiation stress glare linear Remote description type 0 is incompatible with current signaling state 1
+FAIL Perfect negotiation stress glare linear with roles reversed assert_unreached: Error in iframe: InvalidStateError: Remote description type 0 is incompatible with current signaling state 1 Reached unreachable code
</ins><span class="cx"> 
</span><del>-FAIL Perfect negotiation stress glare linear Failed to set remote offer sdp: Called in wrong state: have-local-offer
-FAIL Perfect negotiation stress glare linear with roles reversed assert_unreached: Error in iframe: InvalidStateError: Failed to set remote offer sdp: Called in wrong state: have-local-offer Reached unreachable code
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionperfectnegotiationstressglarehttpsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-perfect-negotiation-stress-glare.https-expected.txt (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-perfect-negotiation-stress-glare.https-expected.txt   2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-perfect-negotiation-stress-glare.https-expected.txt      2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><span class="cx"> 
</span><del>-FAIL Perfect negotiation stress glare Failed to set remote offer sdp: Called in wrong state: have-local-offer
-FAIL Perfect negotiation stress glare with roles reversed assert_unreached: Error in iframe: InvalidStateError: Failed to set remote offer sdp: Called in wrong state: have-local-offer Reached unreachable code
</del><ins>+FAIL Perfect negotiation stress glare Remote description type 0 is incompatible with current signaling state 1
+FAIL Perfect negotiation stress glare with roles reversed assert_unreached: Error in iframe: InvalidStateError: Remote description type 0 is incompatible with current signaling state 1 Reached unreachable code
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionrestartIcehttpsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-restartIce.https-expected.txt (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-restartIce.https-expected.txt 2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-restartIce.https-expected.txt    2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -10,6 +10,6 @@
</span><span class="cx"> PASS restartIce() survives remote offer
</span><span class="cx"> PASS restartIce() is satisfied by remote ICE restart
</span><span class="cx"> PASS restartIce() trumps {iceRestart: false}
</span><del>-PASS restartIce() survives rollback
</del><ins>+FAIL restartIce() survives rollback promise_test: Unhandled rejection with value: object "InvalidStateError: Local description type 3 is incompatible with current signaling state 1"
</ins><span class="cx"> FAIL restartIce() survives remote offer containing partial restart assert_false: Restarted 2 expected false got true
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionsetDescriptiontransceiverexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setDescription-transceiver-expected.txt (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setDescription-transceiver-expected.txt       2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setDescription-transceiver-expected.txt  2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -1,8 +1,8 @@
</span><span class="cx"> 
</span><span class="cx"> PASS setLocalDescription(offer) with m= section should assign mid to corresponding transceiver
</span><span class="cx"> PASS setRemoteDescription(offer) with m= section and no existing transceiver should create corresponding transceiver
</span><del>-PASS setLocalDescription(rollback) should unset transceiver.mid
-PASS setLocalDescription(rollback) should only unset transceiver mids associated with current round
-FAIL setRemoteDescription(rollback) should remove newly created transceiver from transceiver list assert_array_equals: Expect transceiver to be removed from pc2's transceiver list lengths differ, expected array [] length 0, got [object "[object RTCRtpTransceiver]"] length 1
</del><ins>+FAIL setLocalDescription(rollback) should unset transceiver.mid promise_test: Unhandled rejection with value: object "InvalidStateError: Local description type 3 is incompatible with current signaling state 1"
+FAIL setLocalDescription(rollback) should only unset transceiver mids associated with current round promise_test: Unhandled rejection with value: object "InvalidStateError: Local description type 3 is incompatible with current signaling state 1"
+FAIL setRemoteDescription(rollback) should remove newly created transceiver from transceiver list promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 3 is incompatible with current signaling state 2"
</ins><span class="cx"> PASS setRemoteDescription should set transceiver inactive if its corresponding m section is rejected
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionsetLocalDescriptionanswerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-answer-expected.txt (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-answer-expected.txt       2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-answer-expected.txt  2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -1,9 +1,9 @@
</span><span class="cx"> 
</span><span class="cx"> PASS setLocalDescription() with valid answer should succeed
</span><span class="cx"> FAIL setLocalDescription() with type answer and null sdp should use lastAnswer generated from createAnswer promise_test: Unhandled rejection with value: object "OperationError: Expect line: v="
</span><del>-FAIL setLocalDescription() with answer not created by own createAnswer() should reject with InvalidModificationError promise_rejects_dom: function "function () { throw e }" threw object "OperationError: Failed to set local answer sdp: Failed to apply the description for m= section with mid='0': Local fingerprint does not match identity. Expected: sha-256 5A:90:E6:76:2B:68:BA:02:57:FC:0E:37:B6:BF:A7:1E:79:58:12:D4:6C:0D:84:CB:08:D2:F7:BB:01:9E:B9:CB Got: sha-256 05:68:D4:79:D9:47:72:10:F1:2A:F8:81:C7:C0:C5:28:4C:9B:B9:90:9A:60:81:E6:2C:31:35:E5:9D:C7:E2:0A" that is not a DOMException InvalidModificationError: property "code" is equal to 0, expected 13
-FAIL Calling setLocalDescription(answer) from stable state should reject with InvalidModificationError promise_rejects_dom: function "function () { throw e }" threw object "InvalidStateError: Failed to set local answer sdp: no pending remote description." that is not a DOMException InvalidModificationError: property "code" is equal to 11, expected 13
-FAIL Calling setLocalDescription(answer) from have-local-offer state should reject with InvalidModificationError promise_rejects_dom: function "function () { throw e }" threw object "InvalidStateError: Failed to set local answer sdp: no pending remote description." that is not a DOMException InvalidModificationError: property "code" is equal to 11, expected 13
-PASS Setting previously generated answer after a call to createOffer should work
</del><ins>+FAIL setLocalDescription() with answer not created by own createAnswer() should reject with InvalidModificationError promise_rejects_dom: function "function () { throw e }" threw object "OperationError: Failed to set local answer sdp: Failed to apply the description for m= section with mid='0': Local fingerprint does not match identity. Expected: sha-256 0D:E2:FA:94:4D:00:FD:19:00:18:DC:96:C0:5D:20:81:53:91:E1:DE:73:E9:B6:99:A3:64:B9:F1:58:69:81:18 Got: sha-256 94:25:42:B4:B7:8C:8C:F5:DF:C5:ED:6A:82:03:44:0D:4E:1B:0A:B7:76:D6:BE:DA:72:80:7D:3D:6C:78:2B:F3" that is not a DOMException InvalidModificationError: property "code" is equal to 0, expected 13
+FAIL Calling setLocalDescription(answer) from stable state should reject with InvalidModificationError promise_rejects_dom: function "function () { throw e }" threw object "InvalidStateError: Local description type 2 is incompatible with current signaling state 0" that is not a DOMException InvalidModificationError: property "code" is equal to 11, expected 13
+FAIL Calling setLocalDescription(answer) from have-local-offer state should reject with InvalidModificationError promise_rejects_dom: function "function () { throw e }" threw object "InvalidStateError: Local description type 2 is incompatible with current signaling state 1" that is not a DOMException InvalidModificationError: property "code" is equal to 11, expected 13
+FAIL Setting previously generated answer after a call to createOffer should work promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 3 is incompatible with current signaling state 2"
</ins><span class="cx"> FAIL setLocalDescription(answer) should update internal state with a queued task, in the right order assert_not_equals: pendingRemoteDescription should not be set synchronously after a call to sLD got disallowed value null
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionsetLocalDescriptionofferexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-offer-expected.txt (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-offer-expected.txt        2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-offer-expected.txt   2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -1,10 +1,10 @@
</span><span class="cx"> 
</span><span class="cx"> PASS setLocalDescription with valid offer should succeed
</span><span class="cx"> FAIL setLocalDescription with type offer and null sdp should use lastOffer generated from createOffer promise_test: Unhandled rejection with value: object "OperationError: Expect line: v="
</span><del>-FAIL setLocalDescription() with offer not created by own createOffer() should reject with InvalidModificationError promise_rejects_dom: function "function () { throw e }" threw object "OperationError: Failed to set local offer sdp: Failed to apply the description for m= section with mid='0': Local fingerprint does not match identity. Expected: sha-256 CB:DD:6C:16:C3:EB:2B:91:4B:45:55:4F:C1:45:DC:BF:53:7C:F4:4B:F5:07:80:18:31:8A:51:3A:35:0E:36:4C Got: sha-256 DD:D9:E2:F3:33:68:9A:4C:1D:FD:BE:CA:4E:0F:35:78:FC:B5:2A:0A:C8:E5:CD:E2:93:7B:C7:7A:99:C2:31:63" that is not a DOMException InvalidModificationError: property "code" is equal to 0, expected 13
</del><ins>+FAIL setLocalDescription() with offer not created by own createOffer() should reject with InvalidModificationError promise_rejects_dom: function "function () { throw e }" threw object "OperationError: Failed to set local offer sdp: Failed to apply the description for m= section with mid='0': Local fingerprint does not match identity. Expected: sha-256 AC:89:BE:E6:A4:DB:0A:BB:A7:A5:85:7E:53:F6:60:11:D8:97:44:6D:D0:A1:4C:32:80:B3:03:94:C8:83:AD:A8 Got: sha-256 34:AF:27:F0:FE:EF:83:BC:1D:76:C6:89:C7:D9:81:7C:C3:FB:DA:F0:04:CF:D3:81:FC:62:FA:9A:84:B5:3B:E8" that is not a DOMException InvalidModificationError: property "code" is equal to 0, expected 13
</ins><span class="cx"> FAIL Set created offer other than last offer should reject with InvalidModificationError assert_unreached: Should have rejected: undefined Reached unreachable code
</span><span class="cx"> PASS Creating and setting offer multiple times should succeed
</span><del>-PASS Setting previously generated offer after a call to createAnswer should work
</del><ins>+FAIL Setting previously generated offer after a call to createAnswer should work promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 3 is incompatible with current signaling state 2"
</ins><span class="cx"> FAIL Negotiation works when there has been a repeated setLocalDescription(offer) assert_equals: expected 1 but got 0
</span><span class="cx"> FAIL setLocalDescription(offer) should update internal state with a queued task, in the right order assert_equals: pendingRemoteDescription should never be set due to sLD expected null but got object "[object RTCSessionDescription]"
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionsetLocalDescriptionpranswerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-pranswer-expected.txt (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-pranswer-expected.txt     2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-pranswer-expected.txt        2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> 
</span><del>-FAIL setLocalDescription(pranswer) from stable state should reject with InvalidStateError promise_rejects_dom: function "function () { throw e }" threw object "OperationError: Failed to set local pranswer sdp: Called in wrong state: stable" that is not a DOMException InvalidStateError: property "code" is equal to 0, expected 11
</del><ins>+PASS setLocalDescription(pranswer) from stable state should reject with InvalidStateError
</ins><span class="cx"> FAIL setLocalDescription(pranswer) should succeed assert_equals: expected null but got object "[object RTCSessionDescription]"
</span><span class="cx"> PASS setLocalDescription(pranswer) can be applied multiple times while still in have-local-pranswer
</span><span class="cx"> PASS setLocalDescription(answer) from have-local-pranswer state should succeed
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionsetLocalDescriptionrollbackexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-rollback-expected.txt (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-rollback-expected.txt     2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-rollback-expected.txt        2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> 
</span><del>-PASS setLocalDescription(rollback) from have-local-offer state should reset back to stable state
</del><ins>+FAIL setLocalDescription(rollback) from have-local-offer state should reset back to stable state promise_test: Unhandled rejection with value: object "InvalidStateError: Local description type 3 is incompatible with current signaling state 1"
</ins><span class="cx"> PASS setLocalDescription(rollback) from stable state should reject with InvalidStateError
</span><span class="cx"> PASS setLocalDescription(rollback) after setting answer description should reject with InvalidStateError
</span><del>-PASS setLocalDescription(rollback) should ignore invalid sdp content and succeed
-FAIL setLocalDescription(rollback) should update internal state with a queued tassk, in the right order assert_not_equals: pendingLocalDescription should not be set synchronously after a call to sLD got disallowed value null
</del><ins>+FAIL setLocalDescription(rollback) should ignore invalid sdp content and succeed promise_test: Unhandled rejection with value: object "InvalidStateError: Local description type 3 is incompatible with current signaling state 1"
+FAIL setLocalDescription(rollback) should update internal state with a queued tassk, in the right order promise_test: Unhandled rejection with value: object "InvalidStateError: Local description type 3 is incompatible with current signaling state 1"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionsetRemoteDescriptionexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-expected.txt (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-expected.txt     2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-expected.txt        2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> 
</span><span class="cx"> PASS setRemoteDescription with invalid type and invalid SDP should reject with TypeError
</span><del>-FAIL setRemoteDescription() with invalid SDP and stable state should reject with InvalidStateError assert_throws_dom: function "() => { throw e }" threw object "SyntaxError: Expect line: v=" that is not a DOMException InvalidStateError: property "code" is equal to 12, expected 11
</del><ins>+PASS setRemoteDescription() with invalid SDP and stable state should reject with InvalidStateError
</ins><span class="cx"> PASS Negotiation should fire signalingsstate events
</span><span class="cx"> PASS Calling setRemoteDescription() again after one round of remote-offer/local-answer should succeed
</span><span class="cx"> PASS Switching role from offerer to answerer after going back to stable state should succeed
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionsetRemoteDescriptionofferexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer-expected.txt (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer-expected.txt       2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer-expected.txt  2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> PASS setRemoteDescription multiple times should succeed
</span><span class="cx"> PASS setRemoteDescription multiple times with different offer should succeed
</span><span class="cx"> FAIL setRemoteDescription(offer) with invalid SDP should reject with RTCError assert_equals: Expect error detail field to set to sdp-syntax-error expected (string) "sdp-syntax-error" but got (undefined) undefined
</span><del>-FAIL setRemoteDescription(offer) from have-local-offer should roll back and succeed promise_test: Unhandled rejection with value: object "InvalidStateError: Failed to set remote offer sdp: Called in wrong state: have-local-offer"
</del><ins>+FAIL setRemoteDescription(offer) from have-local-offer should roll back and succeed promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 0 is incompatible with current signaling state 1"
</ins><span class="cx"> TIMEOUT setRemoteDescription(offer) from have-local-offer fires signalingstatechange twice Test timed out
</span><span class="cx"> NOTRUN setRemoteDescription(offer) in stable should update internal state with a queued task, in the right order
</span><span class="cx"> NOTRUN setRemoteDescription(offer) in have-local-offer should update internal state with a queued task, in the right order
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCPeerConnectionsetRemoteDescriptionrollbackexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback-expected.txt (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback-expected.txt    2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback-expected.txt       2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -1,23 +1,23 @@
</span><span class="cx"> 
</span><del>-PASS setRemoteDescription(rollback) in have-remote-offer state should revert to stable state
</del><ins>+FAIL setRemoteDescription(rollback) in have-remote-offer state should revert to stable state promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 3 is incompatible with current signaling state 2"
</ins><span class="cx"> PASS setRemoteDescription(rollback) from stable state should reject with InvalidStateError
</span><del>-PASS setRemoteDescription(rollback) should ignore invalid sdp content and succeed
-PASS local offer created before setRemoteDescription(remote offer) then rollback should still be usable
-PASS local offer created before setRemoteDescription(remote offer) with different transceiver level assignments then rollback should still be usable
-FAIL rollback of a remote offer should remove a transceiver assert_equals: expected 0 but got 1
-FAIL rollback of a remote offer should remove touched transceiver assert_equals: expected 0 but got 1
-PASS rollback of a remote offer should keep a transceiver
-PASS rollback of a remote offer should keep a transceiver created by addtrack
-PASS rollback of a remote offer should keep a transceiver without tracks
-PASS explicit rollback of local offer should remove transceivers and transport
</del><ins>+FAIL setRemoteDescription(rollback) should ignore invalid sdp content and succeed promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 3 is incompatible with current signaling state 2"
+FAIL local offer created before setRemoteDescription(remote offer) then rollback should still be usable promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 3 is incompatible with current signaling state 2"
+FAIL local offer created before setRemoteDescription(remote offer) with different transceiver level assignments then rollback should still be usable promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 3 is incompatible with current signaling state 2"
+FAIL rollback of a remote offer should remove a transceiver promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 3 is incompatible with current signaling state 2"
+FAIL rollback of a remote offer should remove touched transceiver promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 3 is incompatible with current signaling state 2"
+FAIL rollback of a remote offer should keep a transceiver promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 3 is incompatible with current signaling state 2"
+FAIL rollback of a remote offer should keep a transceiver created by addtrack promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 3 is incompatible with current signaling state 2"
+FAIL rollback of a remote offer should keep a transceiver without tracks promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 3 is incompatible with current signaling state 2"
+FAIL explicit rollback of local offer should remove transceivers and transport promise_test: Unhandled rejection with value: object "InvalidStateError: Local description type 3 is incompatible with current signaling state 1"
</ins><span class="cx"> FAIL when using addTransceiver, implicit rollback of a local offer should visit stable state, but not fire negotiationneeded until we settle in stable assert_true: There should be no negotiationneeded event right now expected true got false
</span><span class="cx"> FAIL when using addTrack, implicit rollback of a local offer should visit stable state, but not fire negotiationneeded assert_true: There should be no negotiationneeded event in this test expected true got false
</span><del>-PASS rollback of a remote offer to negotiated stable state should enable applying of a local offer
-PASS rollback of a local offer to negotiated stable state should enable applying of a remote offer
-PASS rollback a local offer with audio direction change to negotiated stable state and then add video receiver
-FAIL two transceivers with same mids promise_test: Unhandled rejection with value: object "InvalidStateError: Failed to set remote offer sdp: Called in wrong state: have-local-offer"
-PASS onremovetrack fires during remote rollback
</del><ins>+FAIL rollback of a remote offer to negotiated stable state should enable applying of a local offer promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 3 is incompatible with current signaling state 2"
+FAIL rollback of a local offer to negotiated stable state should enable applying of a remote offer promise_test: Unhandled rejection with value: object "InvalidStateError: Local description type 3 is incompatible with current signaling state 1"
+FAIL rollback a local offer with audio direction change to negotiated stable state and then add video receiver promise_test: Unhandled rejection with value: object "InvalidStateError: Local description type 3 is incompatible with current signaling state 1"
+FAIL two transceivers with same mids promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 0 is incompatible with current signaling state 1"
+FAIL onremovetrack fires during remote rollback promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 3 is incompatible with current signaling state 2"
</ins><span class="cx"> FAIL rollback of a remote offer with stream changes assert_equals: expected 2 but got 1
</span><span class="cx"> PASS removeTrack() with a sender being rolled back does not crash or throw
</span><del>-FAIL Implicit rollback with only a datachannel works promise_test: Unhandled rejection with value: object "InvalidStateError: Failed to set remote offer sdp: Called in wrong state: have-local-offer"
</del><ins>+FAIL Implicit rollback with only a datachannel works promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 0 is incompatible with current signaling state 1"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCRtpTransceiverhttpsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpTransceiver.https-expected.txt (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpTransceiver.https-expected.txt    2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpTransceiver.https-expected.txt       2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -21,7 +21,7 @@
</span><span class="cx"> PASS checkReplaceTrackNullDoesntPreventPairing
</span><span class="cx"> PASS checkRemoveAndReadd
</span><span class="cx"> PASS checkAddTrackExistingTransceiverThenRemove
</span><del>-FAIL checkRemoveTrackNegotiation assert_equals: Rollback should have added two tracks expected 2 but got 0
</del><ins>+FAIL checkRemoveTrackNegotiation promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 3 is incompatible with current signaling state 2"
</ins><span class="cx"> FAIL checkMute assert_true: expected true got false
</span><span class="cx"> FAIL checkStop assert_equals: expected "[{currentDirection:\"sendrecv\",direction:\"stopped\",receiver:{track:{kind:\"audio\",readyState:\"ended\"}},sender:{track:{kind:\"audio\"}}}]" but got "[{currentDirection:\"sendrecv\",direction:\"inactive\",receiver:{track:{kind:\"audio\",readyState:\"ended\"}},sender:{track:null}}]"
</span><span class="cx"> FAIL checkStopAfterCreateOffer assert_equals: expected "[{currentDirection:\"sendrecv\",direction:\"stopped\"}]" but got "[{currentDirection:\"sendrecv\",direction:\"inactive\"}]"
</span><span class="lines">@@ -30,11 +30,11 @@
</span><span class="cx"> FAIL checkStopAfterCreateAnswer assert_equals: expected "[{currentDirection:null,direction:\"stopped\"}]" but got "[{currentDirection:null,direction:\"inactive\"}]"
</span><span class="cx"> FAIL checkStopAfterSetLocalAnswer assert_equals: expected "[{currentDirection:\"sendrecv\",direction:\"stopped\"}]" but got "[{currentDirection:\"sendrecv\",direction:\"inactive\"}]"
</span><span class="cx"> PASS checkStopAfterClose
</span><del>-FAIL checkLocalRollback assert_equals: expected "[{direction:\"stopped\"}]" but got "[{direction:\"inactive\"}]"
-PASS checkRollbackAndSetRemoteOfferWithDifferentType
-FAIL checkRemoteRollback assert_equals: expected "[]" but got "[{}]"
</del><ins>+FAIL checkLocalRollback promise_test: Unhandled rejection with value: object "InvalidStateError: Local description type 3 is incompatible with current signaling state 1"
+FAIL checkRollbackAndSetRemoteOfferWithDifferentType promise_test: Unhandled rejection with value: object "InvalidStateError: Local description type 3 is incompatible with current signaling state 1"
+FAIL checkRemoteRollback promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 3 is incompatible with current signaling state 2"
</ins><span class="cx"> FAIL checkMsectionReuse assert_equals: expected "[{currentDirection:null,mid:null}]" but got "[{currentDirection:\"inactive\",mid:\"0\"}]"
</span><span class="cx"> PASS checkStopAfterCreateOfferWithReusedMsection
</span><del>-PASS checkAddIceCandidateToStoppedTransceiver
</del><ins>+FAIL checkAddIceCandidateToStoppedTransceiver promise_test: Unhandled rejection with value: object "InvalidStateError: Remote description type 0 is incompatible with current signaling state 1"
</ins><span class="cx"> FAIL checkBundleTagRejected promise_test: Unhandled rejection with value: object "InvalidAccessError: Failed to set remote offer sdp: The m= section with mid='1' should be rejected."
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog   2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/Source/WebCore/ChangeLog      2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2021-08-26  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, reverting r281616.
+        https://bugs.webkit.org/show_bug.cgi?id=229570
+
+        It is crashing in iOS Debug
+
+        Reverted changeset:
+
+        "Signaling state check when applying a local or remote
+        description is no longer aligned with the WebRTC spec"
+        https://bugs.webkit.org/show_bug.cgi?id=229138
+        https://commits.webkit.org/r281616
+
</ins><span class="cx"> 2021-08-26  Kimmo Kinnunen  <kkinnunen@apple.com>
</span><span class="cx"> 
</span><span class="cx">         WebGL calls into static GraphicsContextGLOpenGL functions needlessly
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamPeerConnectionBackendcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp       2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp  2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -160,10 +160,34 @@
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static inline bool isLocalDescriptionTypeValidForState(RTCSdpType type, RTCSignalingState state)
+{
+    switch (state) {
+    case RTCSignalingState::Stable:
+        return type == RTCSdpType::Offer;
+    case RTCSignalingState::HaveLocalOffer:
+        return type == RTCSdpType::Offer;
+    case RTCSignalingState::HaveRemoteOffer:
+        return type == RTCSdpType::Answer || type == RTCSdpType::Pranswer;
+    case RTCSignalingState::HaveLocalPranswer:
+        return type == RTCSdpType::Answer || type == RTCSdpType::Pranswer;
+    default:
+        return false;
+    };
+
+    ASSERT_NOT_REACHED();
+    return false;
+}
+
</ins><span class="cx"> void PeerConnectionBackend::setLocalDescription(const RTCSessionDescription* sessionDescription, DOMPromiseDeferred<void>&& promise)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_peerConnection.isClosed());
</span><span class="cx"> 
</span><ins>+    if (sessionDescription && !isLocalDescriptionTypeValidForState(sessionDescription->type(), m_peerConnection.signalingState())) {
+        promise.reject(InvalidStateError, makeString("Local description type ", sessionDescription->type(), " is incompatible with current signaling state ", m_peerConnection.signalingState()));
+        return;
+    }
+
</ins><span class="cx">     m_setDescriptionPromise = WTF::makeUnique<DOMPromiseDeferred<void>>(WTFMove(promise));
</span><span class="cx">     doSetLocalDescription(sessionDescription);
</span><span class="cx"> }
</span><span class="lines">@@ -196,10 +220,34 @@
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static inline bool isRemoteDescriptionTypeValidForState(RTCSdpType type, RTCSignalingState state)
+{
+    switch (state) {
+    case RTCSignalingState::Stable:
+        return type == RTCSdpType::Offer;
+    case RTCSignalingState::HaveLocalOffer:
+        return type == RTCSdpType::Answer || type == RTCSdpType::Pranswer;
+    case RTCSignalingState::HaveRemoteOffer:
+        return type == RTCSdpType::Offer;
+    case RTCSignalingState::HaveRemotePranswer:
+        return type == RTCSdpType::Answer || type == RTCSdpType::Pranswer;
+    default:
+        return false;
+    };
+
+    ASSERT_NOT_REACHED();
+    return false;
+}
+
</ins><span class="cx"> void PeerConnectionBackend::setRemoteDescription(const RTCSessionDescription& sessionDescription, DOMPromiseDeferred<void>&& promise)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_peerConnection.isClosed());
</span><span class="cx"> 
</span><ins>+    if (!isRemoteDescriptionTypeValidForState(sessionDescription.type(), m_peerConnection.signalingState())) {
+        promise.reject(InvalidStateError, makeString("Remote description type ", sessionDescription.type(), " is incompatible with current signaling state ", m_peerConnection.signalingState()));
+        return;
+    }
+
</ins><span class="cx">     m_setDescriptionPromise = WTF::makeUnique<DOMPromiseDeferred<void>>(WTFMove(promise));
</span><span class="cx">     doSetRemoteDescription(sessionDescription);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamRTCSignalingStateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/RTCSignalingState.h (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/RTCSignalingState.h    2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/Source/WebCore/platform/mediastream/RTCSignalingState.h       2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -26,8 +26,6 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_RTC)
</span><span class="cx"> 
</span><del>-#include <wtf/text/WTFString.h>
-
</del><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> enum class RTCSignalingState {
</span></span></pre></div>
<a id="trunkSourceWebCoretestingMockLibWebRTCPeerConnectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/MockLibWebRTCPeerConnection.cpp (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/MockLibWebRTCPeerConnection.cpp     2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/Source/WebCore/testing/MockLibWebRTCPeerConnection.cpp        2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -262,31 +262,6 @@
</span><span class="cx"> 
</span><span class="cx"> void MockLibWebRTCPeerConnection::SetLocalDescription(webrtc::SetSessionDescriptionObserver* observer, webrtc::SessionDescriptionInterface* sessionDescription)
</span><span class="cx"> {
</span><del>-    bool isCorrectState = true;
-    switch (m_signalingState) {
-    case RTCSignalingState::Stable:
-    case RTCSignalingState::HaveLocalOffer:
-        isCorrectState = sessionDescription->GetType() == webrtc::SdpType::kOffer;
-        if (isCorrectState)
-            m_signalingState = RTCSignalingState::HaveLocalOffer;
-        break;
-    case RTCSignalingState::HaveRemoteOffer:
-        isCorrectState = sessionDescription->GetType() == webrtc::SdpType::kAnswer;
-        if (isCorrectState)
-            m_signalingState = RTCSignalingState::Stable;
-        break;
-    case RTCSignalingState::HaveLocalPranswer:
-    case RTCSignalingState::HaveRemotePranswer:
-    case RTCSignalingState::Closed:
-        isCorrectState = false;
-    }
-    if (!isCorrectState) {
-        LibWebRTCProvider::callOnWebRTCSignalingThread([observer] {
-            observer->OnFailure(webrtc::RTCError(webrtc::RTCErrorType::INVALID_STATE));
-        });
-        return;
-    }
-
</del><span class="cx">     std::unique_ptr<webrtc::SessionDescriptionInterface> toBeFreed(sessionDescription);
</span><span class="cx">     LibWebRTCProvider::callOnWebRTCSignalingThread([this, observer] {
</span><span class="cx">         observer->OnSuccess();
</span><span class="lines">@@ -296,31 +271,6 @@
</span><span class="cx"> 
</span><span class="cx"> void MockLibWebRTCPeerConnection::SetRemoteDescription(webrtc::SetSessionDescriptionObserver* observer, webrtc::SessionDescriptionInterface* sessionDescription)
</span><span class="cx"> {
</span><del>-    bool isCorrectState = true;
-    switch (m_signalingState) {
-    case RTCSignalingState::HaveRemoteOffer:
-    case RTCSignalingState::Stable:
-        isCorrectState = sessionDescription->GetType() == webrtc::SdpType::kOffer;
-        if (isCorrectState)
-            m_signalingState = RTCSignalingState::HaveRemoteOffer;
-        break;
-    case RTCSignalingState::HaveLocalOffer:
-        isCorrectState = sessionDescription->GetType() == webrtc::SdpType::kAnswer;
-        if (isCorrectState)
-            m_signalingState = RTCSignalingState::Stable;
-        break;
-    case RTCSignalingState::HaveLocalPranswer:
-    case RTCSignalingState::HaveRemotePranswer:
-    case RTCSignalingState::Closed:
-        isCorrectState = false;
-    }
-    if (!isCorrectState) {
-        LibWebRTCProvider::callOnWebRTCSignalingThread([observer] {
-            observer->OnFailure(webrtc::RTCError(webrtc::RTCErrorType::INVALID_STATE));
-        });
-        return;
-    }
-
</del><span class="cx">     std::unique_ptr<webrtc::SessionDescriptionInterface> toBeFreed(sessionDescription);
</span><span class="cx">     LibWebRTCProvider::callOnWebRTCSignalingThread([observer] {
</span><span class="cx">         observer->OnSuccess();
</span></span></pre></div>
<a id="trunkSourceWebCoretestingMockLibWebRTCPeerConnectionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/MockLibWebRTCPeerConnection.h (281630 => 281631)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/MockLibWebRTCPeerConnection.h       2021-08-26 16:41:56 UTC (rev 281630)
+++ trunk/Source/WebCore/testing/MockLibWebRTCPeerConnection.h  2021-08-26 16:55:04 UTC (rev 281631)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> #if USE(LIBWEBRTC)
</span><span class="cx"> 
</span><span class="cx"> #include "LibWebRTCMacros.h"
</span><del>-#include "RTCSignalingState.h"
</del><span class="cx"> 
</span><span class="cx"> ALLOW_UNUSED_PARAMETERS_BEGIN
</span><span class="cx"> ALLOW_DEPRECATED_DECLARATIONS_BEGIN
</span><span class="lines">@@ -326,7 +325,6 @@
</span><span class="cx">     bool m_isReceivingAudio { false };
</span><span class="cx">     bool m_isReceivingVideo { false };
</span><span class="cx">     std::string m_streamLabel;
</span><del>-    RTCSignalingState m_signalingState { RTCSignalingState::Stable };
</del><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class MockLibWebRTCPeerConnectionFactory : public webrtc::PeerConnectionFactoryInterface {
</span></span></pre>
</div>
</div>

</body>
</html>