tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

RTCTrackEvent-constructor.html (5007B)


      1 <!doctype html>
      2 <meta charset=utf-8>
      3 <title>RTCTrackEvent constructor</title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script>
      7  'use strict';
      8 
      9  // Test is based on the following editor draft:
     10  // https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
     11 
     12  /*
     13    5.7.  RTCTrackEvent
     14      [Constructor(DOMString type, RTCTrackEventInit eventInitDict)]
     15      interface RTCTrackEvent : Event {
     16        readonly attribute RTCRtpReceiver           receiver;
     17        readonly attribute MediaStreamTrack         track;
     18        [SameObject]
     19        readonly attribute FrozenArray<MediaStream> streams;
     20        readonly attribute RTCRtpTransceiver        transceiver;
     21      };
     22 
     23      dictionary RTCTrackEventInit : EventInit {
     24        required RTCRtpReceiver        receiver;
     25        required MediaStreamTrack      track;
     26                 sequence<MediaStream> streams = [];
     27        required RTCRtpTransceiver     transceiver;
     28      };
     29   */
     30 
     31  test(t => {
     32    const pc = new RTCPeerConnection();
     33    const transceiver = pc.addTransceiver('audio');
     34    const { receiver } = transceiver;
     35    const { track } = receiver;
     36 
     37    const trackEvent = new RTCTrackEvent('track', {
     38      receiver, track, transceiver
     39    });
     40 
     41    assert_equals(trackEvent.receiver, receiver);
     42    assert_equals(trackEvent.track, track);
     43    assert_array_equals(trackEvent.streams, []);
     44    assert_equals(trackEvent.streams, trackEvent.streams, '[SameObject]');
     45    assert_equals(trackEvent.transceiver, transceiver);
     46 
     47    assert_equals(trackEvent.type, 'track');
     48    assert_false(trackEvent.bubbles);
     49    assert_false(trackEvent.cancelable);
     50 
     51  }, `new RTCTrackEvent() with valid receiver, track, transceiver should succeed`);
     52 
     53  test(t => {
     54    const pc = new RTCPeerConnection();
     55    const transceiver = pc.addTransceiver('audio');
     56    const { receiver } = transceiver;
     57    const { track } = receiver;
     58 
     59    const stream = new MediaStream([track]);
     60 
     61    const trackEvent = new RTCTrackEvent('track', {
     62      receiver, track, transceiver,
     63      streams: [stream]
     64    });
     65 
     66    assert_equals(trackEvent.receiver, receiver);
     67    assert_equals(trackEvent.track, track);
     68    assert_array_equals(trackEvent.streams, [stream]);
     69    assert_equals(trackEvent.transceiver, transceiver);
     70 
     71  }, `new RTCTrackEvent() with valid receiver, track, streams, transceiver should succeed`);
     72 
     73  test(t => {
     74    const pc = new RTCPeerConnection();
     75    const transceiver = pc.addTransceiver('audio');
     76    const { receiver } = transceiver;
     77    const { track } = receiver;
     78 
     79    const stream1 = new MediaStream([track]);
     80    const stream2 = new MediaStream([track]);
     81 
     82    const trackEvent = new RTCTrackEvent('track', {
     83      receiver, track, transceiver,
     84      streams: [stream1, stream2]
     85    });
     86 
     87    assert_equals(trackEvent.receiver, receiver);
     88    assert_equals(trackEvent.track, track);
     89    assert_array_equals(trackEvent.streams, [stream1, stream2]);
     90    assert_equals(trackEvent.transceiver, transceiver);
     91 
     92  }, `new RTCTrackEvent() with valid receiver, track, multiple streams, transceiver should succeed`);
     93 
     94  test(t => {
     95    const pc = new RTCPeerConnection();
     96    const transceiver = pc.addTransceiver('audio');
     97    const receiver = pc.addTransceiver('audio').receiver;
     98    const track =  pc.addTransceiver('audio').receiver.track;
     99 
    100    const stream = new MediaStream();
    101 
    102    const trackEvent = new RTCTrackEvent('track', {
    103      receiver, track, transceiver,
    104      streams: [stream]
    105    });
    106 
    107    assert_equals(trackEvent.receiver, receiver);
    108    assert_equals(trackEvent.track, track);
    109    assert_array_equals(trackEvent.streams, [stream]);
    110    assert_equals(trackEvent.transceiver, transceiver);
    111 
    112  }, `new RTCTrackEvent() with unrelated receiver, track, streams, transceiver should succeed`);
    113 
    114  test(t => {
    115    const pc = new RTCPeerConnection();
    116    const transceiver = pc.addTransceiver('audio');
    117    const { receiver } = transceiver;
    118    const { track } = receiver;
    119 
    120    assert_throws_js(TypeError, () =>
    121      new RTCTrackEvent('track', {
    122        receiver, track
    123      }));
    124 
    125  }, `new RTCTrackEvent() with no transceiver should throw TypeError`);
    126 
    127  test(t => {
    128    const pc = new RTCPeerConnection();
    129    const transceiver = pc.addTransceiver('audio');
    130    const { receiver } = transceiver;
    131 
    132    assert_throws_js(TypeError, () =>
    133      new RTCTrackEvent('track', {
    134        receiver, transceiver
    135      }));
    136 
    137  }, `new RTCTrackEvent() with no track should throw TypeError`);
    138 
    139  test(t => {
    140    const pc = new RTCPeerConnection();
    141    const transceiver = pc.addTransceiver('audio');
    142    const { receiver } = transceiver;
    143    const { track } = receiver;
    144 
    145    assert_throws_js(TypeError, () =>
    146      new RTCTrackEvent('track', {
    147        track, transceiver
    148      }));
    149 
    150  }, `new RTCTrackEvent() with no receiver should throw TypeError`);
    151 
    152  /*
    153    Coverage Report
    154      Interface tests are counted as 1 trivial test
    155 
    156      Tested         1
    157      Total          1
    158   */
    159 </script>