https://github.com/web-platform-tests/wpt
Revision 8214a83ae15810425ebbdb305ba5a0a746f4b36e authored by Stephen McGruer on 27 March 2018, 18:33:18 UTC, committed by Blink WPT Bot on 27 March 2018, 18:53:44 UTC
Bug: 699244
Change-Id: Ia85a44be9d9f7b0d0db382892520f2755523f514
Reviewed-on: https://chromium-review.googlesource.com/980236
Reviewed-by: Robert Flack <flackr@chromium.org>
Commit-Queue: Stephen McGruer <smcgruer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#546172}
1 parent e96e038
Raw File
Tip revision: 8214a83ae15810425ebbdb305ba5a0a746f4b36e authored by Stephen McGruer on 27 March 2018, 18:33:18 UTC
Port nested sticky tests from reftests to JS tests
Tip revision: 8214a83
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="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 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(() => {
    const pc = new RTCPeerConnection();
    const { sender } = pc.addTransceiver('audio');

    return sender.getStats()
    .then(statsReport => {
      validateStatsReport(statsReport);
      assert_stats_report_has_stats(statsReport, ['outbound-rtp']);
    });
  }, 'sender.getStats() via addTransceiver should return stats report containing outbound-rtp stats');

  promise_test(() => {
    const pc = new RTCPeerConnection();

    return navigator.mediaDevices.getUserMedia({ audio: true })
    .then(mediaStream => {
      const [track] = mediaStream.getTracks();
      const sender = pc.addTrack(track, mediaStream);

      return sender.getStats()
      .then(statsReport => {
        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