<!doctype html> <meta charset=utf-8> <title></title> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="RTCPeerConnection-helper.js"></script> <script> "use strict"; promise_test(async t => { const pc1 = new RTCPeerConnection(); const pc2 = new RTCPeerConnection(); t.add_cleanup(() => pc1.close()); t.add_cleanup(() => pc2.close()); pc1.addTransceiver("audio"); await pc1.setLocalDescription(await pc1.createOffer()); pc1.restartIce(); await pc2.setRemoteDescription(pc1.localDescription); await pc2.setLocalDescription(await pc2.createAnswer()); await pc1.setRemoteDescription(pc2.localDescription); // When the setRemoteDescription() promise above is resolved a task should be // queued to fire the onnegotiationneeded event. Because of this, we should // have time to hook up the event listener *after* awaiting the SRD promise. await new Promise(r => pc1.onnegotiationneeded = r); }, "Negotiation needed when returning to stable does not fire too early"); </script>