RTCRtpSender-setParameters.html (1887B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <title>RTCRtpSender.prototype.setParameters</title> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <script src="RTCPeerConnection-helper.js"></script> 7 <script> 8 'use strict'; 9 10 // Test is based on the following editor draft: 11 // https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html 12 13 /* 14 5.2. setParameters 15 6. If transceiver.stopped is true, abort these steps and return a promise 16 rejected with a newly created InvalidStateError. 17 */ 18 promise_test(t => { 19 const pc = new RTCPeerConnection(); 20 t.add_cleanup(() => pc.close()); 21 const transceiver = pc.addTransceiver('audio'); 22 const { sender } = transceiver; 23 24 const param = sender.getParameters(); 25 transceiver.stop(); 26 return promise_rejects_dom(t, 'InvalidStateError', 27 sender.setParameters(param)); 28 }, `setParameters() when transceiver is stopped should reject with InvalidStateError`); 29 30 promise_test(async t => { 31 const pc = new RTCPeerConnection(); 32 t.add_cleanup(() => pc.close()); 33 const sender = pc.addTransceiver('audio').sender; 34 const param = sender.getParameters(); 35 sender.setParameters(param); 36 await sender.setParameters(param); 37 }, `setParameters() with already used parameters should work if the event loop has not been relinquished`); 38 39 promise_test(async t => { 40 const pc = new RTCPeerConnection(); 41 t.add_cleanup(() => pc.close()); 42 const sender = pc.addTransceiver('audio').sender; 43 const param = sender.getParameters(); 44 sender.setParameters(param); 45 await queueAWebrtcTask(); 46 47 await promise_rejects_dom(t, 'InvalidStateError', 48 sender.setParameters(param)); 49 }, `setParameters() with already used parameters should reject with InvalidStateError if the event loop has been relinquished`); 50 51 </script>