diff options
Diffstat (limited to 'testing/web-platform/tests/webrtc/RTCPeerConnectionIceEvent-constructor.html')
-rw-r--r-- | testing/web-platform/tests/webrtc/RTCPeerConnectionIceEvent-constructor.html | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webrtc/RTCPeerConnectionIceEvent-constructor.html b/testing/web-platform/tests/webrtc/RTCPeerConnectionIceEvent-constructor.html new file mode 100644 index 0000000000..447002dca1 --- /dev/null +++ b/testing/web-platform/tests/webrtc/RTCPeerConnectionIceEvent-constructor.html @@ -0,0 +1,126 @@ +<!doctype html> +<meta charset="utf-8"> +<!-- +4.8.2 RTCPeerConnectionIceEvent + + The icecandidate event of the RTCPeerConnection uses the RTCPeerConnectionIceEvent interface. + +--> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +/* +RTCPeerConnectionIceEvent + +[Constructor(DOMString type, optional RTCPeerConnectionIceEventInit eventInitDict)] + +interface RTCPeerConnectionIceEvent : Event { + readonly attribute RTCIceCandidate? candidate; + readonly attribute DOMString? url; +}; + */ +test(() => { + assert_throws_js(TypeError, () => { + new RTCPeerConnectionIceEvent(); + }); +}, "RTCPeerConnectionIceEvent with no arguments throws TypeError"); + +test(() => { + const event = new RTCPeerConnectionIceEvent("type"); + /* + candidate of type RTCIceCandidate, readonly, nullable + url of type DOMString, readonly, nullable + */ + assert_equals(event.candidate, null); + assert_equals(event.url, null); + + /* + Firing an RTCPeerConnectionIceEvent event named e with an RTCIceCandidate + candidate means that an event with the name e, which does not bubble + (except where otherwise stated) and is not cancelable + (except where otherwise stated), + */ + assert_false(event.bubbles); + assert_false(event.cancelable); + +}, "RTCPeerConnectionIceEvent with no eventInitDict (default)"); + +test(() => { + const event = new RTCPeerConnectionIceEvent("type", {}); + + /* + candidate of type RTCIceCandidate, readonly, nullable + url of type DOMString, readonly, nullable + */ + assert_equals(event.candidate, null); + assert_equals(event.url, null); + + /* + Firing an RTCPeerConnectionIceEvent event named e with an RTCIceCandidate + candidate means that an event with the name e, which does not bubble + (except where otherwise stated) and is not cancelable + (except where otherwise stated), + */ + assert_false(event.bubbles); + assert_false(event.cancelable); + +}, "RTCPeerConnectionIceEvent with empty object as eventInitDict (default)"); + +test(() => { + const event = new RTCPeerConnectionIceEvent("type", { + candidate: null + }); + assert_equals(event.candidate, null); +}, "RTCPeerConnectionIceEvent.candidate is null when constructed with { candidate: null }"); + +test(() => { + const event = new RTCPeerConnectionIceEvent("type", { + candidate: undefined + }); + assert_equals(event.candidate, null); +}, "RTCPeerConnectionIceEvent.candidate is null when constructed with { candidate: undefined }"); + + +/* + +4.8.1 RTCIceCandidate Interface + +The RTCIceCandidate() constructor takes a dictionary argument, candidateInitDict, +whose content is used to initialize the new RTCIceCandidate object. When run, if +both the sdpMid and sdpMLineIndex dictionary members are null, throw a TypeError. +*/ +const candidate = ""; +const sdpMid = "sdpMid"; +const sdpMLineIndex = 1; +const usernameFragment = ""; +const url = "foo.bar"; + +test(() => { + const iceCandidate = new RTCIceCandidate({ candidate, sdpMid, sdpMLineIndex, usernameFragment }); + const event = new RTCPeerConnectionIceEvent("type", { + candidate: iceCandidate, + url, + }); + + assert_equals(event.candidate, iceCandidate); + assert_false(event.bubbles); + assert_false(event.cancelable); +}, "RTCPeerConnectionIceEvent with RTCIceCandidate"); + +test(() => { + const plain = { candidate, sdpMid, sdpMLineIndex, usernameFragment }; + assert_throws_js(TypeError, () => new RTCPeerConnectionIceEvent("type", { candidate: plain })); +}, "RTCPeerConnectionIceEvent with non RTCIceCandidate object throws"); + +test(() => { + const event = new RTCPeerConnectionIceEvent("type", { + candidate: null, + bubbles: true, + cancelable: true, + }); + + assert_true(event.bubbles); + assert_true(event.cancelable); +}, "RTCPeerConnectionIceEvent bubbles and cancelable"); + +</script> |