Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test has a WPT meta file that expects 1 subtest issues.
- This WPT test may be referenced by the following Test IDs:
- /webrtc-stats/getStats-remote-candidate-ufrag.html - WPT Dashboard Interop Dashboard
<!doctype html>
<meta charset=utf-8>
<title>Exposure of remote candidate ufrag on stats</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../webrtc/RTCPeerConnection-helper.js"></script>
<script>
promise_test(async (test) => {
const localPc = new RTCPeerConnection();
test.add_cleanup(() => localPc.close());
const remotePc = new RTCPeerConnection();
test.add_cleanup(() => remotePc.close());
const localDataChannel = localPc.createDataChannel('test');
localPc.addEventListener('icecandidate', event => {
remotePc.addIceCandidate(event.candidate);
});
await localPc.setLocalDescription();
await remotePc.setRemoteDescription(localPc.localDescription);
const answer = await remotePc.createAnswer();
await remotePc.setLocalDescription(answer);
await waitForIceStateChange(remotePc, ['connected', 'completed']);
const remoteCandidateStats = [...(await localPc.getStats()).values()].find(({type}) => type === 'remote-candidate');
assert_equals(remoteCandidateStats.candidateType, 'prflx', 'candidateType should be `prflx`');
assert_equals(remoteCandidateStats.usernameFragment, undefined, 'usernameFragment should be undefined');
await localPc.setRemoteDescription(answer);
await new Promise(r => test.step_timeout(r, 100));
const remoteCandidateStats2 = [...(await localPc.getStats()).values()].find(({type}) => type === 'remote-candidate');
// candidateType is still prflx since the candidate was not signaled.
assert_equals(remoteCandidateStats.candidateType, 'prflx', 'candidateType should be `prflx`');
assert_not_equals(remoteCandidateStats2.usernameFragment, undefined, 'usernameFragment should not be undefined after signaling');
}, 'Do not expose in stats remote ufrags that are not known via signaling');
</script>