chromium/third_party/blink/web_tests/external/wpt/webrtc/RTCRtpCapabilities-helper.js

'use strict'

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

// This file depends on dictionary-helper.js which should
// be loaded from the main HTML file.

/*
  5.2.  RTCRtpSender Interface
    dictionary RTCRtpCapabilities {
      sequence<RTCRtpCodecCapability>           codecs;
      sequence<RTCRtpHeaderExtensionCapability> headerExtensions;
    };

    dictionary RTCRtpCodecCapability {
      DOMString      mimeType;
      unsigned long  clockRate;
      unsigned short channels;
      DOMString      sdpFmtpLine;
    };

    dictionary RTCRtpHeaderExtensionCapability {
      DOMString uri;
    };
 */

function validateRtpCapabilities(capabilities) {
  assert_array_field(capabilities, 'codecs');
  for(const codec of capabilities.codecs) {
    validateCodecCapability(codec);
  }

  assert_greater_than(capabilities.codecs.length, 0,
    'Expect at least one codec capability available');

  assert_array_field(capabilities, 'headerExtensions');
  for(const headerExt of capabilities.headerExtensions) {
    validateHeaderExtensionCapability(headerExt);
  }
}

function validateCodecCapability(codec) {
  assert_optional_string_field(codec, 'mimeType');
  assert_optional_unsigned_int_field(codec, 'clockRate');
  assert_optional_unsigned_int_field(codec, 'channels');
  assert_optional_string_field(codec, 'sdpFmtpLine');
}

function validateHeaderExtensionCapability(headerExt) {
  assert_optional_string_field(headerExt, 'uri');
}