| 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(() => { |
| 91 | assert_throws(new TypeError(), () => |
| 92 | new RTCPeerConnection({ bundlePolicy: null })); |
| 93 | }, `new RTCPeerConnection({ bundlePolicy: null }) should throw TypeError`); |
| 94 | |
| 95 | test(() => { |
| 96 | assert_throws(new TypeError(), () => |
| 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 | |
| 110 | assert_throws('InvalidModificationError', () => |
| 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 |
| 119 | assert_throws('InvalidModificationError', () => |
| 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> |