test_peerConnection_setParameters_oldSetParameters.html (3064B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <script type="application/javascript" src="pc.js"></script> 5 </head> 6 <body> 7 <pre id="test"> 8 <script type="application/javascript"> 9 createHTML({ 10 bug: "1230184", 11 title: "Set parameters on sender", 12 visible: true 13 }); 14 15 function parameterstest(pc) { 16 ok(pc.getSenders().length, "have senders"); 17 var sender = pc.getSenders()[0]; 18 19 var testParameters = (params, errorName, errorMsg) => { 20 info("Trying to set " + JSON.stringify(params)); 21 22 var validateParameters = (a, b) => { 23 var validateEncoding = (a, b) => { 24 is(a.rid, b.rid, "same rid"); 25 is(a.maxBitrate, b.maxBitrate, "same maxBitrate"); 26 is(a.maxFramerate, b.maxFramerate, "same maxFramerate"); 27 is(a.scaleResolutionDownBy, b.scaleResolutionDownBy, 28 "same scaleResolutionDownBy"); 29 }; 30 is(a.encodings.length, (b.encodings || []).length, "same encodings"); 31 a.encodings.forEach((en, i) => validateEncoding(en, b.encodings[i])); 32 }; 33 34 var before = JSON.stringify(sender.getParameters()); 35 isnot(JSON.stringify(params), before, "starting condition"); 36 37 var p = sender.setParameters(params) 38 .then(() => { 39 isnot(JSON.stringify(sender.getParameters()), before, "parameters changed"); 40 validateParameters(sender.getParameters(), params); 41 is(null, errorName || null, "is success expected"); 42 }, e => { 43 is(e.name, errorName, "correct error name"); 44 is(e.message, errorMsg, "correct error message"); 45 }); 46 is(JSON.stringify(sender.getParameters()), before, "parameters not set yet"); 47 return p; 48 }; 49 50 return [ 51 [{ encodings: [ { rid: "foo", maxBitrate: 40000, scaleResolutionDownBy: 2 }, 52 { rid: "bar", maxBitrate: 10000, scaleResolutionDownBy: 4 }] 53 }], 54 [{ encodings: [{ maxBitrate: 10000, scaleResolutionDownBy: 4 }]}], 55 [{ encodings: [{ maxFramerate: 0.0, scaleResolutionDownBy: 1 }]}], 56 [{ encodings: [{ maxFramerate: 30.5, scaleResolutionDownBy: 1 }]}], 57 [{ encodings: [{ maxFramerate: -1, scaleResolutionDownBy: 1 }]}, "RangeError", "maxFramerate must be non-negative"], 58 [{ encodings: [{ maxBitrate: 40000 }, 59 { rid: "bar", maxBitrate: 10000 }] }, "TypeError", "Missing rid"], 60 [{ encodings: [{ rid: "foo", maxBitrate: 40000 }, 61 { rid: "bar", maxBitrate: 10000 }, 62 { rid: "bar", maxBitrate: 20000 }] }, "TypeError", "Duplicate rid"], 63 [{}, "TypeError", `RTCRtpSender.setParameters: Missing required 'encodings' member of RTCRtpSendParameters.`] 64 ].reduce((p, args) => p.then(() => testParameters.apply(this, args)), 65 Promise.resolve()); 66 } 67 68 runNetworkTest(() => { 69 const test = new PeerConnectionTest(); 70 test.setMediaConstraints([{video: true}], [{video: true}]); 71 test.chain.removeAfter("PC_REMOTE_WAIT_FOR_MEDIA_FLOW"); 72 73 // Test sender parameters. 74 test.chain.append([ 75 function PC_LOCAL_SET_PARAMETERS(test) { 76 return parameterstest(test.pcLocal._pc); 77 } 78 ]); 79 80 return test.run(); 81 }); 82 83 </script> 84 </pre> 85 </body> 86 </html>