summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webrtc/RTCTrackEvent-constructor.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/webrtc/RTCTrackEvent-constructor.html')
-rw-r--r--testing/web-platform/tests/webrtc/RTCTrackEvent-constructor.html159
1 files changed, 159 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webrtc/RTCTrackEvent-constructor.html b/testing/web-platform/tests/webrtc/RTCTrackEvent-constructor.html
new file mode 100644
index 0000000000..c9105e693a
--- /dev/null
+++ b/testing/web-platform/tests/webrtc/RTCTrackEvent-constructor.html
@@ -0,0 +1,159 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>RTCTrackEvent constructor</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+ 'use strict';
+
+ // Test is based on the following editor draft:
+ // https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
+
+ /*
+ 5.7. RTCTrackEvent
+ [Constructor(DOMString type, RTCTrackEventInit eventInitDict)]
+ interface RTCTrackEvent : Event {
+ readonly attribute RTCRtpReceiver receiver;
+ readonly attribute MediaStreamTrack track;
+ [SameObject]
+ readonly attribute FrozenArray<MediaStream> streams;
+ readonly attribute RTCRtpTransceiver transceiver;
+ };
+
+ dictionary RTCTrackEventInit : EventInit {
+ required RTCRtpReceiver receiver;
+ required MediaStreamTrack track;
+ sequence<MediaStream> streams = [];
+ required RTCRtpTransceiver transceiver;
+ };
+ */
+
+ test(t => {
+ const pc = new RTCPeerConnection();
+ const transceiver = pc.addTransceiver('audio');
+ const { receiver } = transceiver;
+ const { track } = receiver;
+
+ const trackEvent = new RTCTrackEvent('track', {
+ receiver, track, transceiver
+ });
+
+ assert_equals(trackEvent.receiver, receiver);
+ assert_equals(trackEvent.track, track);
+ assert_array_equals(trackEvent.streams, []);
+ assert_equals(trackEvent.streams, trackEvent.streams, '[SameObject]');
+ assert_equals(trackEvent.transceiver, transceiver);
+
+ assert_equals(trackEvent.type, 'track');
+ assert_false(trackEvent.bubbles);
+ assert_false(trackEvent.cancelable);
+
+ }, `new RTCTrackEvent() with valid receiver, track, transceiver should succeed`);
+
+ test(t => {
+ const pc = new RTCPeerConnection();
+ const transceiver = pc.addTransceiver('audio');
+ const { receiver } = transceiver;
+ const { track } = receiver;
+
+ const stream = new MediaStream([track]);
+
+ const trackEvent = new RTCTrackEvent('track', {
+ receiver, track, transceiver,
+ streams: [stream]
+ });
+
+ assert_equals(trackEvent.receiver, receiver);
+ assert_equals(trackEvent.track, track);
+ assert_array_equals(trackEvent.streams, [stream]);
+ assert_equals(trackEvent.transceiver, transceiver);
+
+ }, `new RTCTrackEvent() with valid receiver, track, streams, transceiver should succeed`);
+
+ test(t => {
+ const pc = new RTCPeerConnection();
+ const transceiver = pc.addTransceiver('audio');
+ const { receiver } = transceiver;
+ const { track } = receiver;
+
+ const stream1 = new MediaStream([track]);
+ const stream2 = new MediaStream([track]);
+
+ const trackEvent = new RTCTrackEvent('track', {
+ receiver, track, transceiver,
+ streams: [stream1, stream2]
+ });
+
+ assert_equals(trackEvent.receiver, receiver);
+ assert_equals(trackEvent.track, track);
+ assert_array_equals(trackEvent.streams, [stream1, stream2]);
+ assert_equals(trackEvent.transceiver, transceiver);
+
+ }, `new RTCTrackEvent() with valid receiver, track, multiple streams, transceiver should succeed`);
+
+ test(t => {
+ const pc = new RTCPeerConnection();
+ const transceiver = pc.addTransceiver('audio');
+ const receiver = pc.addTransceiver('audio').receiver;
+ const track = pc.addTransceiver('audio').receiver.track;
+
+ const stream = new MediaStream();
+
+ const trackEvent = new RTCTrackEvent('track', {
+ receiver, track, transceiver,
+ streams: [stream]
+ });
+
+ assert_equals(trackEvent.receiver, receiver);
+ assert_equals(trackEvent.track, track);
+ assert_array_equals(trackEvent.streams, [stream]);
+ assert_equals(trackEvent.transceiver, transceiver);
+
+ }, `new RTCTrackEvent() with unrelated receiver, track, streams, transceiver should succeed`);
+
+ test(t => {
+ const pc = new RTCPeerConnection();
+ const transceiver = pc.addTransceiver('audio');
+ const { receiver } = transceiver;
+ const { track } = receiver;
+
+ assert_throws_js(TypeError, () =>
+ new RTCTrackEvent('track', {
+ receiver, track
+ }));
+
+ }, `new RTCTrackEvent() with no transceiver should throw TypeError`);
+
+ test(t => {
+ const pc = new RTCPeerConnection();
+ const transceiver = pc.addTransceiver('audio');
+ const { receiver } = transceiver;
+
+ assert_throws_js(TypeError, () =>
+ new RTCTrackEvent('track', {
+ receiver, transceiver
+ }));
+
+ }, `new RTCTrackEvent() with no track should throw TypeError`);
+
+ test(t => {
+ const pc = new RTCPeerConnection();
+ const transceiver = pc.addTransceiver('audio');
+ const { receiver } = transceiver;
+ const { track } = receiver;
+
+ assert_throws_js(TypeError, () =>
+ new RTCTrackEvent('track', {
+ track, transceiver
+ }));
+
+ }, `new RTCTrackEvent() with no receiver should throw TypeError`);
+
+ /*
+ Coverage Report
+ Interface tests are counted as 1 trivial test
+
+ Tested 1
+ Total 1
+ */
+</script>