blob: e825d7b4023751fe6aefd4957fdc08d81c608990 [file] [log] [blame]
Soares Chene674bf92017-07-06 06:41:061<!doctype html>
2<meta charset=utf-8>
3<title>RTCConfiguration bundlePolicy</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 4.3.2. Interface Definition
14 [Constructor(optional RTCConfiguration configuration)]
15 interface RTCPeerConnection : EventTarget {
16 ...
17 RTCConfiguration getConfiguration();
18 void setConfiguration(RTCConfiguration configuration);
19 };
20
21 4.2.1. RTCConfiguration Dictionary
22 dictionary RTCConfiguration {
23 RTCBundlePolicy bundlePolicy = "balanced";
24 ...
25 };
26
27 4.2.6. RTCBundlePolicy Enum
28 enum RTCBundlePolicy {
29 "balanced",
30 "max-compat",
31 "max-bundle"
32 };
33 */
34
35 test(() => {
36 const pc = new RTCPeerConnection();
37 assert_equals(pc.getConfiguration().bundlePolicy, 'balanced');
38 }, 'Default bundlePolicy should be balanced');
39
40 test(() => {
41 const pc = new RTCPeerConnection({ bundlePolicy: undefined });
42 assert_equals(pc.getConfiguration().bundlePolicy, 'balanced');
43 }, `new RTCPeerConnection({ bundlePolicy: undefined }) should have bundlePolicy balanced`);
44
45 test(() => {
46 const pc = new RTCPeerConnection({ bundlePolicy: 'balanced' });
47 assert_equals(pc.getConfiguration().bundlePolicy, 'balanced');
48 }, `new RTCPeerConnection({ bundlePolicy: 'balanced' }) should succeed`);
49
50 test(() => {
51 const pc = new RTCPeerConnection({ bundlePolicy: 'max-compat' });
52 assert_equals(pc.getConfiguration().bundlePolicy, 'max-compat');
53 }, `new RTCPeerConnection({ bundlePolicy: 'max-compat' }) should succeed`);
54
55 test(() => {
56 const pc = new RTCPeerConnection({ bundlePolicy: 'max-bundle' });
57 assert_equals(pc.getConfiguration().bundlePolicy, 'max-bundle');
58 }, `new RTCPeerConnection({ bundlePolicy: 'max-bundle' }) should succeed`);
59
60 test(() => {
61 const pc = new RTCPeerConnection();
62 pc.setConfiguration({});
63 }, 'setConfiguration({}) with initial default bundlePolicy balanced should succeed');
64
65 test(() => {
66 const pc = new RTCPeerConnection({ bundlePolicy: 'balanced' });
67 pc.setConfiguration({});
68 }, 'setConfiguration({}) with initial bundlePolicy balanced should succeed');
69
70 test(() => {
71 const pc = new RTCPeerConnection();
72 pc.setConfiguration({ bundlePolicy: 'balanced' });
73 }, 'setConfiguration({ bundlePolicy: balanced }) with initial default bundlePolicy balanced should succeed');
74
75 test(() => {
76 const pc = new RTCPeerConnection({ bundlePolicy: 'balanced' });
77 pc.setConfiguration({ bundlePolicy: 'balanced' });
78 }, `setConfiguration({ bundlePolicy: 'balanced' }) with initial bundlePolicy balanced should succeed`);
79
80 test(() => {
81 const pc = new RTCPeerConnection({ bundlePolicy: 'max-compat' });
82 pc.setConfiguration({ bundlePolicy: 'max-compat' });
83 }, `setConfiguration({ bundlePolicy: 'max-compat' }) with initial bundlePolicy max-compat should succeed`);
84
85 test(() => {
86 const pc = new RTCPeerConnection({ bundlePolicy: 'max-bundle' });
87 pc.setConfiguration({ bundlePolicy: 'max-bundle' });
88 }, `setConfiguration({ bundlePolicy: 'max-bundle' }) with initial bundlePolicy max-bundle should succeed`);
89
90 test(() => {
Stephen McGruer2c5c3c42020-01-23 15:51:0791 assert_throws_js(TypeError, () =>
Soares Chene674bf92017-07-06 06:41:0692 new RTCPeerConnection({ bundlePolicy: null }));
93 }, `new RTCPeerConnection({ bundlePolicy: null }) should throw TypeError`);
94
95 test(() => {
Stephen McGruer2c5c3c42020-01-23 15:51:0796 assert_throws_js(TypeError, () =>
Soares Chene674bf92017-07-06 06:41:0697 new RTCPeerConnection({ bundlePolicy: 'invalid' }));
98 }, `new RTCPeerConnection({ bundlePolicy: 'invalid' }) should throw TypeError`);
99
100 /*
101 4.3.2. Interface Definition
102 To set a configuration
103 5. If configuration.bundlePolicy is set and its value differs from the
104 connection's bundle policy, throw an InvalidModificationError.
105 */
106 test(() => {
107 const pc = new RTCPeerConnection({ bundlePolicy: 'max-bundle' });
Soares Chen7f6d19c2017-08-04 09:41:50108 assert_idl_attribute(pc, 'setConfiguration');
Soares Chene674bf92017-07-06 06:41:06109
Stephen McGruerd5103042020-01-23 21:45:45110 assert_throws_dom('InvalidModificationError', () =>
Soares Chene674bf92017-07-06 06:41:06111 pc.setConfiguration({ bundlePolicy: 'max-compat' }));
112 }, `setConfiguration({ bundlePolicy: 'max-compat' }) with initial bundlePolicy max-bundle should throw InvalidModificationError`);
113
114 test(() => {
115 const pc = new RTCPeerConnection({ bundlePolicy: 'max-bundle' });
Soares Chen7f6d19c2017-08-04 09:41:50116 assert_idl_attribute(pc, 'setConfiguration');
Soares Chene674bf92017-07-06 06:41:06117
118 // the default value for bundlePolicy is balanced
Stephen McGruerd5103042020-01-23 21:45:45119 assert_throws_dom('InvalidModificationError', () =>
Soares Chene674bf92017-07-06 06:41:06120 pc.setConfiguration({}));
121 }, `setConfiguration({}) with initial bundlePolicy max-bundle should throw InvalidModificationError`);
122
123 /*
124 Coverage Report
125 Tested 2
126 Total 2
127 */
128</script>