| <!doctype html> | |
| <meta charset=utf-8> | |
| <title>RTCPeerConnection constructor</title> | |
| <script src=/resources/testharness.js></script> | |
| <script src=/resources/testharnessreport.js></script> | |
| <script> | |
| test(function() { | |
| assert_equals(RTCPeerConnection.length, 0); | |
| }, 'RTCPeerConnection.length'); | |
| // These are used for string and number dictionary members to see if they are | |
| // being accessed at all. | |
| const toStringThrows = { toString: function() { throw new Error; } }; | |
| const toNumberThrows = Symbol(); | |
| // Test the first argument of the constructor. The key is the argument itself, | |
| // and the value is the first argument for assert_throws_js, or false if no | |
| // exception should be thrown. | |
| const testArgs = { | |
| // No argument or equivalent. | |
| '': false, | |
| 'null': false, | |
| 'undefined': false, | |
| '{}': false, | |
| // certificates | |
| '{ certificates: null }': TypeError, | |
| '{ certificates: undefined }': false, | |
| '{ certificates: [] }': false, | |
| '{ certificates: [null] }': TypeError, | |
| '{ certificates: [undefined] }': TypeError, | |
| // iceCandidatePoolSize | |
| '{ iceCandidatePoolSize: toNumberThrows }': TypeError, | |
| } | |
| for (const arg in testArgs) { | |
| const expr = 'new RTCPeerConnection(' + arg + ')'; | |
| test(function() { | |
| const throws = testArgs[arg]; | |
| if (throws) { | |
| assert_throws_js(throws, function() { | |
| eval(expr); | |
| }); | |
| } else { | |
| eval(expr); | |
| } | |
| }, expr); | |
| } | |
| // The initial values of attributes of RTCPeerConnection. | |
| const initialState = { | |
| 'localDescription': null, | |
| 'currentLocalDescription': null, | |
| 'pendingLocalDescription': null, | |
| 'remoteDescription': null, | |
| 'currentRemoteDescription': null, | |
| 'pendingRemoteDescription': null, | |
| 'signalingState': 'stable', | |
| 'iceGatheringState': 'new', | |
| 'iceConnectionState': 'new', | |
| 'connectionState': 'new', | |
| 'canTrickleIceCandidates': null, | |
| // TODO: defaultIceServers | |
| }; | |
| for (const attr in initialState) { | |
| test(function() { | |
| // Use one RTCPeerConnection instance for all initial value tests. | |
| if (!window.pc) { | |
| window.pc = new RTCPeerConnection; | |
| } | |
| assert_equals(window.pc[attr], initialState[attr]); | |
| }, attr + ' initial value'); | |
| } | |
| </script> |