| <!DOCTYPE html> |
| <html> |
| <body> |
| <script> |
| function gatherCandidates() |
| { |
| var pc = new RTCPeerConnection(); |
| pc.createDataChannel(""); |
| |
| var candidates = []; |
| return new Promise((resolve, reject) => { |
| pc.onicecandidate = (event) => { |
| if (event.candidate === null) { |
| resolve(candidates); |
| return; |
| } |
| candidates.push(event.candidate.candidate); |
| }; |
| pc.createOffer().then((offer) => { |
| pc.setLocalDescription(offer); |
| }); |
| }); |
| } |
| |
| function checkFiltering() |
| { |
| gatherCandidates().then((candidates) => { |
| parent.postMessage(candidates.length ? "filtering disabled" : "filtering enabled", "*"); |
| }); |
| } |
| |
| window.addEventListener("message", (event) => { |
| checkFiltering(); |
| }); |
| |
| checkFiltering(); |
| |
| </script> |
| <div>Checking ICE candidate filtering</div> |
| </body> |
| </html> |
| |
| |