| <!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(new 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(new 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> |