<!doctype html>
<meta charset=utf-8>
<title>RTCRtpReceiver.prototype.getContributingSources</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="RTCPeerConnection-helper.js"></script>
<script>
'use strict';

async function connectAndExpectNoCsrcs(t, kind) {
  const pc1 = new RTCPeerConnection();
  t.add_cleanup(() => pc1.close());
  const pc2 = new RTCPeerConnection();
  t.add_cleanup(() => pc2.close());

  const stream = await getNoiseStream({[kind]:true});
  const [track] = stream.getTracks();
  t.add_cleanup(() => track.stop());
  pc1.addTrack(track, stream);

  exchangeIceCandidates(pc1, pc2);
  const trackEvent = await exchangeOfferAndListenToOntrack(t, pc1, pc2);
  await exchangeAnswer(pc1, pc2);

  assert_array_equals(trackEvent.receiver.getContributingSources(), []);
}

promise_test(async t => {
  await connectAndExpectNoCsrcs(t, 'audio');
}, '[audio] getContributingSources() returns an empty list in loopback call');

promise_test(async t => {
  await connectAndExpectNoCsrcs(t, 'video');
}, '[video] getContributingSources() returns an empty list in loopback call');
</script>
