| <!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> |