| <!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, or false if no |
| // exception should be thrown. |
| const testArgs = { |
| // No argument or equivalent. |
| '': false, |
| 'null': false, |
| 'undefined': false, |
| '{}': false, |
| |
| // certificates |
| '{ certificates: null }': new TypeError, |
| '{ certificates: undefined }': false, |
| '{ certificates: [] }': false, |
| '{ certificates: [null] }': new TypeError, |
| '{ certificates: [undefined] }': new TypeError, |
| |
| // iceCandidatePoolSize |
| '{ iceCandidatePoolSize: toNumberThrows }': new TypeError, |
| } |
| |
| for (const arg in testArgs) { |
| const expr = 'new RTCPeerConnection(' + arg + ')'; |
| test(function() { |
| const throws = testArgs[arg]; |
| if (throws) { |
| assert_throws(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> |