https://github.com/web-platform-tests/wpt
Raw File
Tip revision: 9ac1564951a43a313e49188ee24c90f330215b2e authored by François Beaufort on 06 December 2018, 10:51:49 UTC
[Picture-in-Picture] Don't require user gesture if capturing user media
Tip revision: 9ac1564
RTCRtpSender-getStats.https.html
<!doctype html>
<meta charset=utf-8>
<title>RTCRtpSender.prototype.getStats</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="RTCPeerConnection-helper.js"></script>
<script src="dictionary-helper.js"></script>
<script src="RTCStats-helper.js"></script>
<script>
  'use strict';

  // Test is based on the following editor draft:
  // webrtc-pc 20171130
  // webrtc-stats 20171122

  // The following helper functions are called from RTCPeerConnection-helper.js:
  //   doSignalingHandshake

  // The following helper function is called from RTCStats-helper.js
  //   validateStatsReport
  //   assert_stats_report_has_stats

  /*
    5.2.  RTCRtpSender Interface
      getStats
        1.  Let selector be the RTCRtpSender object on which the method was invoked.
        2.  Let p be a new promise, and run the following steps in parallel:
          1.  Gather the stats indicated by selector according to the stats selection
              algorithm.
          2.  Resolve p with the resulting RTCStatsReport object, containing the
              gathered stats.
        3.  Return p.

    8.5. The stats selection algorithm
      3.  If selector is an RTCRtpSender, gather stats for and add the following objects
          to result:
        - All RTCOutboundRTPStreamStats objects corresponding to selector.
        - All stats objects referenced directly or indirectly by the RTCOutboundRTPStreamStats
          objects added.
   */

  promise_test(async t => {
    const caller = new RTCPeerConnection();
    t.add_cleanup(() => caller.close());
    const callee = new RTCPeerConnection();
    t.add_cleanup(() => callee.close());

    const stream = await getNoiseStream({audio:true});
    t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
    const [track] = stream.getTracks();
    const { sender } = caller.addTransceiver(track);

    await doSignalingHandshake(caller, callee);
    const statsReport = await sender.getStats();
    validateStatsReport(statsReport);
    assert_stats_report_has_stats(statsReport, ['outbound-rtp']);
  }, 'sender.getStats() via addTransceiver should return stats report containing outbound-rtp stats');

  promise_test(async t => {
    const caller = new RTCPeerConnection();
    t.add_cleanup(() => caller.close());
    const callee = new RTCPeerConnection();
    t.add_cleanup(() => callee.close());
    const stream = await getNoiseStream({audio:true});
    t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
    const [track] = stream.getTracks();
    const sender = caller.addTrack(track, stream);

    await doSignalingHandshake(caller, callee);
    const statsReport = await sender.getStats();
    validateStatsReport(statsReport);
    assert_stats_report_has_stats(statsReport, ['outbound-rtp']);
  }, 'sender.getStats() via addTrack should return stats report containing outbound-rtp stats');

</script>
back to top