<!DOCTYPE html>
<meta charset="utf-8">
<!-- Generate token with the command:
generate_token.py http://127.0.0.1:8000 RtcAudioJitterBufferMaxPackets --expire-timestamp=2000000000
-- -->
<meta http-equiv="origin-trial" content="AvnoRwhKYwWcQC6jJqdlxIbCOLYPwSfGYU5aO1b6aisTzxdejjjz0C9/9pWNjgqxtb0MeoGcJgVrW0OuIHFpOAkAAABmeyJvcmlnaW4iOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgImZlYXR1cmUiOiAiUnRjQXVkaW9KaXR0ZXJCdWZmZXJNYXhQYWNrZXRzIiwgImV4cGlyeSI6IDIwMDAwMDAwMDB9" />
<title>RtcAudioJitterBufferMaxPackets - webrtc api extension is exposed by origin trial</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
test(t => {
  let peerconnection = new RTCPeerConnection({
      rtcAudioJitterBufferMaxPackets: 79
  });
  let configuration = peerconnection.getConfiguration();
  assert_true(
      configuration.rtcAudioJitterBufferMaxPackets === 79,
      'rtcAudioJitterBufferMaxPackets equals passed values'
  );
}, 'rtcAudioJitterBufferMaxPackets property in Origin-Trial enabled document.');

test(t => {
  let peerconnection = new RTCPeerConnection({
      rtcAudioJitterBufferFastAccelerate: true
  });
  let configuration = peerconnection.getConfiguration();
  assert_true(
      configuration.rtcAudioJitterBufferFastAccelerate,
      'rtcAudioJitterBufferFastAccelerate equals passed values'
  );
}, 'rtcAudioJitterBufferFastAccelerate property in Origin-Trial enabled document.');

test(t => {
  let peerconnection = new RTCPeerConnection({
      rtcAudioJitterBufferMinDelayMs: 20
  });
  let configuration = peerconnection.getConfiguration();
  assert_true(
      configuration.rtcAudioJitterBufferMinDelayMs === 20,
      'rtcAudioJitterBufferMinDelayMs equals passed values'
  );
}, 'rtcAudioJitterBufferMinDelayMs property in Origin-Trial enabled document.');

</script>
