| <!doctype html> |
| <meta charset=utf-8> |
| <title>RTCConfiguration bundlePolicy</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script> |
| 'use strict'; |
| |
| // Test is based on the following editor draft: |
| // https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html |
| |
| /* |
| 4.3.2. Interface Definition |
| [Constructor(optional RTCConfiguration configuration)] |
| interface RTCPeerConnection : EventTarget { |
| ... |
| RTCConfiguration getConfiguration(); |
| void setConfiguration(RTCConfiguration configuration); |
| }; |
| |
| 4.2.1. RTCConfiguration Dictionary |
| dictionary RTCConfiguration { |
| RTCBundlePolicy bundlePolicy = "balanced"; |
| ... |
| }; |
| |
| 4.2.6. RTCBundlePolicy Enum |
| enum RTCBundlePolicy { |
| "balanced", |
| "max-compat", |
| "max-bundle" |
| }; |
| */ |
| |
| test(() => { |
| const pc = new RTCPeerConnection(); |
| assert_equals(pc.getConfiguration().bundlePolicy, 'balanced'); |
| }, 'Default bundlePolicy should be balanced'); |
| |
| test(() => { |
| const pc = new RTCPeerConnection({ bundlePolicy: undefined }); |
| assert_equals(pc.getConfiguration().bundlePolicy, 'balanced'); |
| }, `new RTCPeerConnection({ bundlePolicy: undefined }) should have bundlePolicy balanced`); |
| |
| test(() => { |
| const pc = new RTCPeerConnection({ bundlePolicy: 'balanced' }); |
| assert_equals(pc.getConfiguration().bundlePolicy, 'balanced'); |
| }, `new RTCPeerConnection({ bundlePolicy: 'balanced' }) should succeed`); |
| |
| test(() => { |
| const pc = new RTCPeerConnection({ bundlePolicy: 'max-compat' }); |
| assert_equals(pc.getConfiguration().bundlePolicy, 'max-compat'); |
| }, `new RTCPeerConnection({ bundlePolicy: 'max-compat' }) should succeed`); |
| |
| test(() => { |
| const pc = new RTCPeerConnection({ bundlePolicy: 'max-bundle' }); |
| assert_equals(pc.getConfiguration().bundlePolicy, 'max-bundle'); |
| }, `new RTCPeerConnection({ bundlePolicy: 'max-bundle' }) should succeed`); |
| |
| test(() => { |
| const pc = new RTCPeerConnection(); |
| pc.setConfiguration({}); |
| }, 'setConfiguration({}) with initial default bundlePolicy balanced should succeed'); |
| |
| test(() => { |
| const pc = new RTCPeerConnection({ bundlePolicy: 'balanced' }); |
| pc.setConfiguration({}); |
| }, 'setConfiguration({}) with initial bundlePolicy balanced should succeed'); |
| |
| test(() => { |
| const pc = new RTCPeerConnection(); |
| pc.setConfiguration({ bundlePolicy: 'balanced' }); |
| }, 'setConfiguration({ bundlePolicy: balanced }) with initial default bundlePolicy balanced should succeed'); |
| |
| test(() => { |
| const pc = new RTCPeerConnection({ bundlePolicy: 'balanced' }); |
| pc.setConfiguration({ bundlePolicy: 'balanced' }); |
| }, `setConfiguration({ bundlePolicy: 'balanced' }) with initial bundlePolicy balanced should succeed`); |
| |
| test(() => { |
| const pc = new RTCPeerConnection({ bundlePolicy: 'max-compat' }); |
| pc.setConfiguration({ bundlePolicy: 'max-compat' }); |
| }, `setConfiguration({ bundlePolicy: 'max-compat' }) with initial bundlePolicy max-compat should succeed`); |
| |
| test(() => { |
| const pc = new RTCPeerConnection({ bundlePolicy: 'max-bundle' }); |
| pc.setConfiguration({ bundlePolicy: 'max-bundle' }); |
| }, `setConfiguration({ bundlePolicy: 'max-bundle' }) with initial bundlePolicy max-bundle should succeed`); |
| |
| test(() => { |
| assert_throws(new TypeError(), () => |
| new RTCPeerConnection({ bundlePolicy: null })); |
| }, `new RTCPeerConnection({ bundlePolicy: null }) should throw TypeError`); |
| |
| test(() => { |
| assert_throws(new TypeError(), () => |
| new RTCPeerConnection({ bundlePolicy: 'invalid' })); |
| }, `new RTCPeerConnection({ bundlePolicy: 'invalid' }) should throw TypeError`); |
| |
| /* |
| 4.3.2. Interface Definition |
| To set a configuration |
| 5. If configuration.bundlePolicy is set and its value differs from the |
| connection's bundle policy, throw an InvalidModificationError. |
| */ |
| test(() => { |
| const pc = new RTCPeerConnection({ bundlePolicy: 'max-bundle' }); |
| assert_idl_attribute(pc, 'setConfiguration'); |
| |
| assert_throws('InvalidModificationError', () => |
| pc.setConfiguration({ bundlePolicy: 'max-compat' })); |
| }, `setConfiguration({ bundlePolicy: 'max-compat' }) with initial bundlePolicy max-bundle should throw InvalidModificationError`); |
| |
| test(() => { |
| const pc = new RTCPeerConnection({ bundlePolicy: 'max-bundle' }); |
| assert_idl_attribute(pc, 'setConfiguration'); |
| |
| // the default value for bundlePolicy is balanced |
| assert_throws('InvalidModificationError', () => |
| pc.setConfiguration({})); |
| }, `setConfiguration({}) with initial bundlePolicy max-bundle should throw InvalidModificationError`); |
| |
| /* |
| Coverage Report |
| Tested 2 |
| Total 2 |
| */ |
| </script> |