summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webrtc/RTCPeerConnectionIceEvent-constructor.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/webrtc/RTCPeerConnectionIceEvent-constructor.html')
-rw-r--r--testing/web-platform/tests/webrtc/RTCPeerConnectionIceEvent-constructor.html126
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>