blob: 525de84f9d32bb1462de97c2f20e55ffcc15e4b2 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script>
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
async function isFilteringEnabled()
{
let resolve, reject;
const promise = new Promise((res, rej) => { resolve = res; reject = rej; });
setTimeout(() => { reject("Test timed out"); }, 5000);
var pc = new RTCPeerConnection();
pc.createDataChannel("");
var candidates = [];
pc.onicecandidate = (event) => {
if (event.candidate === null) {
resolve(!candidates.length);
return;
}
if (event.candidate.candidate.indexOf('.local') === -1)
candidates.push(event.candidate.candidate);
};
const offer = await pc.createOffer();
await pc.setLocalDescription(offer);
return promise;
}
function endTest(message)
{
result.innerHTML = message;
if (window.testRunner)
testRunner.notifyDone();
}
function test() {
if (window.localStorage.getItem("after-reload") == null) {
window.localStorage.setItem("after-reload", "true")
isFilteringEnabled().then((filtering) => {
if (!filtering) {
endTest("FAIL, initial ice candidate filtering is off");
return;
}
navigator.mediaDevices.getUserMedia({audio:true, video:true}).then(() => { return isFilteringEnabled(); }).then((filtering) => {
if (filtering) {
endTest("FAIL, initial ice candidate filtering after getUserMedia is on");
return;
}
internals.forceReload(true);
});
});
} else {
window.localStorage.clear();
isFilteringEnabled().then((filtering) => { endTest(filtering ? "PASS" : "FAIL"); });
}
}
</script>
</head>
<body onload="setTimeout(test, 0);">
<div>This test requires internals. It checks that after reload, we are back to filtering ice candidate.</div>
<div id="result"></div>
</body>
</html>