Bug 1523562 [wpt PR 13922] - Ensure that the 'address' member remains null in RTCIceCandidateStats for remote prflx candidates, a=testonly
authorYouenn Fablet <youennf@gmail.com>
Thu, 31 Jan 2019 18:56:51 +0000
changeset 458024 b01f5b07debc7edd14faef964409d9d41cc1b0c4
parent 458023 af919f886ca9bff3147905623c7d831923c27210
child 458025 c9721188b1df1cfe7d6c5bec1026af3013fcc4c6
push id35518
push useropoprus@mozilla.com
push dateFri, 08 Feb 2019 09:55:14 +0000
treeherdermozilla-central@3a3e393396f4 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerstestonly
bugs1523562, 13922
milestone67.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1523562 [wpt PR 13922] - Ensure that the 'address' member remains null in RTCIceCandidateStats for remote prflx candidates, a=testonly Automatic update from web-platform-tests Ensure that the 'address' member remains undefined in RTCIceCandidateStats for remote prflx candidates -- Moving from undefined to null -- Updated according comments -- Merge pull request #13922 from youennf/no-address-member-in-remote-candidate-stats Ensure that the 'address' member remains null in RTCIceCandidateStats for remote prflx candidates -- wpt-commits: 0580aeec33f1c68636eb84f70b5aae04ec05d3bb, 0ec8f2cf94d81c73bc13ded0a57cf12b68633727, e3136b484e2c3f8a4ef4ba49739e8e458d80ef30, cba8de7d7ed600943951e16aa757173586a6881c wpt-pr: 13922
testing/web-platform/tests/webrtc-stats/getStats-remote-candidate-address.html
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/webrtc-stats/getStats-remote-candidate-address.html
@@ -0,0 +1,81 @@
+<!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>