blob: b169b5e8c488ea8d345e57ae8d65e2e57a8f3233 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>DNT header after redirections</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script>
</head>
<body>
<video id='video'></video>
<script>
function waitFor(test, duration)
{
return new Promise(resolve => {
test.step_timeout(resolve, duration);
});
}
async function checkDNTHeader(test, token)
{
let maxPollCount = 20;
for (let cptr = 0; cptr < maxPollCount; cptr++) {
await waitFor(test, 10);
const response = await fetch("resources/dnt-status.py?read&token=" + token);
if (await response.text() === "1")
return true;
}
return false;
}
if (window.testRunner)
testRunner.setPrivateBrowsingEnabled(true);
else
alert("Make sure to run this test in Private Browsing Mode");
promise_test(async (test) => {
const token = self.token();
const finalURL = "dnt-status.py?store&token=" + token;
video.src = "resources/redirect.py?location=" + encodeURIComponent(finalURL);
assert_false(await checkDNTHeader(test, token), "DNT header is not there");
}, "video load without DNT");
promise_test(async (test) => {
const token = self.token();
const finalURL = "dnt-status.py?store&token=" + token;
const xhr = new XMLHttpRequest();
xhr.open("GET", "resources/redirect.py?location=" + encodeURIComponent(finalURL), false);
xhr.send();
const response = await fetch("resources/dnt-status.py?read&token=" + token);
assert_equals(await response.text(), "-1", "DNT header");
}, "Sync XHR without DNT");
promise_test(async (test) => {
const token = self.token();
const finalURL = "dnt-status.py?store&token=" + token;
navigator.sendBeacon("resources/redirect.py?location=" + encodeURIComponent(finalURL), "");
assert_false(await checkDNTHeader(test, token), "DNT header is not there");
}, "Beacon without DNT");
</script>
</body>
</html>