https://github.com/web-platform-tests/wpt
Raw File
Tip revision: f0f68cccb916d714a702a77f2cef0954db937af0 authored by Chris Nardi on 29 March 2018, 23:36:08 UTC
Check that specName is in URLs
Tip revision: f0f68cc
RTCRtpParameters-degradationPreference.html
<!doctype html>
<meta charset=utf-8>
<title>RTCRtpParameters degradationPreference</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="dictionary-helper.js"></script>
<script src="RTCRtpParameters-helper.js"></script>
<script>
  'use strict';

  // Test is based on the following editor draft:
  // https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html

  // The following helper functions are called from RTCRtpParameters-helper.js:
  //   validateSenderRtpParameters

  /*
    5.2.  RTCRtpSender Interface
      interface RTCRtpSender {
        Promise<void>           setParameters(optional RTCRtpParameters parameters);
        RTCRtpParameters        getParameters();
      };

      dictionary RTCRtpParameters {
        DOMString                                 transactionId;
        sequence<RTCRtpEncodingParameters>        encodings;
        sequence<RTCRtpHeaderExtensionParameters> headerExtensions;
        RTCRtcpParameters                         rtcp;
        sequence<RTCRtpCodecParameters>           codecs;
        RTCDegradationPreference                  degradationPreference;
      };

      enum RTCDegradationPreference {
        "maintain-framerate",
        "maintain-resolution",
        "balanced"
      };

      - degradationPreference is set to the last value passed into setParameters,
        or the default value of "balanced" if setParameters hasn't been called.
   */

  promise_test(t => {
    const pc = new RTCPeerConnection();
    const { sender } = pc.addTransceiver('audio');

    const param = sender.getParameters();
    validateSenderRtpParameters(param);

    assert_equals(param.degradationPreference, 'balanced',
      'Expect initial param.degradationPreference to be balanced');

    param.degradationPreference = 'maintain-framerate';

    return pc.setParameters(param)
    .then(() => {
      const param = sender.getParameters();
      validateSenderRtpParameters(param);

      assert_equals(param.degradationPreference, 'maintain-framerate');
    });
  }, 'setParameters with degradationPreference set should succeed');

  promise_test(t => {
    const pc = new RTCPeerConnection();
    const { sender } = pc.addTransceiver('audio');

    const param = sender.getParameters();
    validateSenderRtpParameters(param);

    assert_equals(param.degradationPreference, 'balanced',
      'Expect initial param.degradationPreference to be balanced');

    param.degradationPreference = undefined;

    return pc.setParameters(param)
    .then(() => {
      const param = sender.getParameters();
      validateSenderRtpParameters(param);

      assert_equals(param.degradationPreference, undefined);
    });
  }, 'setParameters with degradationPreference unset should succeed');

</script>
back to top