| <!doctype html> |
| <meta charset=utf-8> |
| <title>Exposure or remote candidate address on stats</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="../webrtc/RTCPeerConnection-helper.js"></script> |
| <script src="../webrtc/RTCStats-helper.js"></script> |
| <script> |
| 'use strict'; |
| |
| promise_test(async (test) => { |
| const localPc = new RTCPeerConnection(); |
| test.add_cleanup(() => localPc.close()); |
| const remotePc = new RTCPeerConnection(); |
| test.add_cleanup(() => remotePc.close()); |
| |
| const promiseDataChannel = new Promise(resolve => { |
| remotePc.addEventListener('datachannel', (event) => { |
| resolve(event.channel); |
| }); |
| }); |
| |
| const localDataChannel = localPc.createDataChannel('test'); |
| |
| localPc.addEventListener('icecandidate', event => { |
| if (event.candidate) |
| remotePc.addIceCandidate(event.candidate); |
| }); |
| doSignalingHandshake(localPc, remotePc); |
| |
| const remoteDataChannel = await promiseDataChannel; |
| |
| localDataChannel.send("test"); |
| |
| await new Promise(resolve => { |
| remoteDataChannel.onmessage = resolve; |
| }); |
| |
| const remoteCandidateStats = getRequiredStats(await localPc.getStats(), "remote-candidate"); |
| assert_equals(remoteCandidateStats.address, null, "address should be null"); |
| }, "Do not expose in stats remote addresses that are not known to be already exposed to JS"); |
| |
| |
| promise_test(async (test) => { |
| const localPc = new RTCPeerConnection(); |
| test.add_cleanup(() => localPc.close()); |
| const remotePc = new RTCPeerConnection(); |
| test.add_cleanup(() => remotePc.close()); |
| |
| const promiseDataChannel = new Promise(resolve => { |
| remotePc.addEventListener('datachannel', (event) => { |
| resolve(event.channel); |
| }); |
| }); |
| |
| const localDataChannel = localPc.createDataChannel('test'); |
| |
| localPc.addEventListener('icecandidate', event => { |
| if (event.candidate) |
| remotePc.addIceCandidate(event.candidate); |
| }); |
| remotePc.addEventListener('icecandidate', event => { |
| if (event.candidate) |
| localPc.addIceCandidate(event.candidate); |
| }); |
| doSignalingHandshake(localPc, remotePc); |
| |
| const remoteDataChannel = await promiseDataChannel; |
| |
| localDataChannel.send("test"); |
| |
| await new Promise(resolve => { |
| remoteDataChannel.onmessage = resolve; |
| }); |
| |
| const remoteCandidateStats = getRequiredStats(await localPc.getStats(), "remote-candidate"); |
| assert_not_equals(remoteCandidateStats.address, null, "address should not be null"); |
| |
| }, "Expose in stats remote addresses that are already exposed to JS"); |
| |
| </script> |