| Soares Chen | e674bf9 | 2017-07-06 06:41:06 | [diff] [blame] | 1 | <!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 McGruer | 2c5c3c4 | 2020-01-23 15:51:07 | [diff] [blame] | 91 | assert_throws_js(TypeError, () => | 
| Soares Chen | e674bf9 | 2017-07-06 06:41:06 | [diff] [blame] | 92 | new RTCPeerConnection({ bundlePolicy: null })); | 
|  | 93 | }, `new RTCPeerConnection({ bundlePolicy: null }) should throw TypeError`); | 
|  | 94 |  | 
|  | 95 | test(() => { | 
| Stephen McGruer | 2c5c3c4 | 2020-01-23 15:51:07 | [diff] [blame] | 96 | assert_throws_js(TypeError, () => | 
| Soares Chen | e674bf9 | 2017-07-06 06:41:06 | [diff] [blame] | 97 | 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 Chen | 7f6d19c | 2017-08-04 09:41:50 | [diff] [blame] | 108 | assert_idl_attribute(pc, 'setConfiguration'); | 
| Soares Chen | e674bf9 | 2017-07-06 06:41:06 | [diff] [blame] | 109 |  | 
| Stephen McGruer | d510304 | 2020-01-23 21:45:45 | [diff] [blame] | 110 | assert_throws_dom('InvalidModificationError', () => | 
| Soares Chen | e674bf9 | 2017-07-06 06:41:06 | [diff] [blame] | 111 | 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 Chen | 7f6d19c | 2017-08-04 09:41:50 | [diff] [blame] | 116 | assert_idl_attribute(pc, 'setConfiguration'); | 
| Soares Chen | e674bf9 | 2017-07-06 06:41:06 | [diff] [blame] | 117 |  | 
|  | 118 | // the default value for bundlePolicy is balanced | 
| Stephen McGruer | d510304 | 2020-01-23 21:45:45 | [diff] [blame] | 119 | assert_throws_dom('InvalidModificationError', () => | 
| Soares Chen | e674bf9 | 2017-07-06 06:41:06 | [diff] [blame] | 120 | 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> |