RTCRtpSendParameters-degradationPreference.html (4917B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <title>RTCRtpSendParameters degradationPreference</title> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <script> 7 'use strict'; 8 9 promise_test(async t => { 10 const pc = new RTCPeerConnection(); 11 t.add_cleanup(() => pc.close()); 12 const { sender } = pc.addTransceiver('video'); 13 14 let param = sender.getParameters(); 15 16 assert_equals(param.degradationPreference, undefined, 17 'Expect initial param.degradationPreference to be undefined'); 18 19 param.degradationPreference = 'maintain-framerate'; 20 await sender.setParameters(param); 21 param = sender.getParameters(); 22 assert_equals(param.degradationPreference, 'maintain-framerate'); 23 24 param.degradationPreference = 'maintain-resolution'; 25 await sender.setParameters(param); 26 param = sender.getParameters(); 27 assert_equals(param.degradationPreference, 'maintain-resolution'); 28 29 param.degradationPreference = 'balanced'; 30 await sender.setParameters(param); 31 param = sender.getParameters(); 32 assert_equals(param.degradationPreference, 'balanced'); 33 34 param.degradationPreference = 'maintain-framerate-and-resolution'; 35 await sender.setParameters(param); 36 param = sender.getParameters(); 37 assert_equals(param.degradationPreference, 'maintain-framerate-and-resolution'); 38 39 param.degradationPreference = undefined; 40 await sender.setParameters(param); 41 param = sender.getParameters(); 42 assert_equals(param.degradationPreference, undefined); 43 }, 'setParameters with degradationPreference set should succeed on video transceiver'); 44 45 promise_test(async t => { 46 const pc = new RTCPeerConnection(); 47 t.add_cleanup(() => pc.close()); 48 const { sender } = pc.addTransceiver('video'); 49 50 let param = sender.getParameters(); 51 52 assert_equals(param.degradationPreference, undefined, 53 'Expect initial param.degradationPreference to be undefined'); 54 55 param.degradationPreference = undefined; 56 57 await sender.setParameters(param); 58 59 param = sender.getParameters(); 60 assert_equals(param.degradationPreference, undefined); 61 }, 'setParameters with degradationPreference unset should succeed on video transceiver'); 62 63 promise_test(async t => { 64 const pc = new RTCPeerConnection(); 65 t.add_cleanup(() => pc.close()); 66 const { sender } = pc.addTransceiver('video'); 67 68 let param = sender.getParameters(); 69 param.degradationPreference = 'invalid'; 70 71 return promise_rejects_js(t, TypeError, sender.setParameters(param)); 72 }, 'setParameters with invalid degradationPreference should throw TypeError on video transceiver'); 73 74 promise_test(async t => { 75 const pc = new RTCPeerConnection(); 76 t.add_cleanup(() => pc.close()); 77 const { sender } = pc.addTransceiver('audio'); 78 79 let param = sender.getParameters(); 80 81 assert_equals(param.degradationPreference, undefined, 82 'Expect initial param.degradationPreference to be undefined'); 83 84 param.degradationPreference = 'maintain-framerate'; 85 await sender.setParameters(param); 86 param = sender.getParameters(); 87 assert_equals(param.degradationPreference, 'maintain-framerate'); 88 89 param.degradationPreference = 'maintain-resolution'; 90 await sender.setParameters(param); 91 param = sender.getParameters(); 92 assert_equals(param.degradationPreference, 'maintain-resolution'); 93 94 param.degradationPreference = 'balanced'; 95 await sender.setParameters(param); 96 param = sender.getParameters(); 97 assert_equals(param.degradationPreference, 'balanced'); 98 99 param.degradationPreference = 'maintain-framerate-and-resolution'; 100 await sender.setParameters(param); 101 param = sender.getParameters(); 102 assert_equals(param.degradationPreference, 'maintain-framerate-and-resolution'); 103 104 param.degradationPreference = undefined; 105 await sender.setParameters(param); 106 param = sender.getParameters(); 107 assert_equals(param.degradationPreference, undefined); 108 }, 'setParameters with degradationPreference set should succeed on audio transceiver'); 109 110 promise_test(async t => { 111 const pc = new RTCPeerConnection(); 112 t.add_cleanup(() => pc.close()); 113 const { sender } = pc.addTransceiver('audio'); 114 115 let param = sender.getParameters(); 116 117 assert_equals(param.degradationPreference, undefined, 118 'Expect initial param.degradationPreference to be undefined'); 119 120 param.degradationPreference = undefined; 121 122 await sender.setParameters(param); 123 124 param = sender.getParameters(); 125 assert_equals(param.degradationPreference, undefined); 126 }, 'setParameters with degradationPreference unset should succeed on audio transceiver'); 127 128 promise_test(async t => { 129 const pc = new RTCPeerConnection(); 130 t.add_cleanup(() => pc.close()); 131 const { sender } = pc.addTransceiver('audio'); 132 133 let param = sender.getParameters(); 134 param.degradationPreference = 'invalid'; 135 136 return promise_rejects_js(t, TypeError, sender.setParameters(param)); 137 }, 'setParameters with invalid degradationPreference should throw TypeError on audio transceiver'); 138 139 </script>