96 lines
3.2 KiB
HTML
96 lines
3.2 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
<script>
|
|
description("Tests that cookie-averse documents cannot return or set cookies.");
|
|
jsTestIsAsync = true;
|
|
|
|
shouldBe("document.cookie.indexOf('ppkcookie1=testcookie')", "-1");
|
|
shouldNotThrow("document.cookie = 'ppkcookie1=testcookie'");
|
|
shouldBeTrue("document.cookie.indexOf('ppkcookie1=testcookie') >= 0");
|
|
|
|
debug("");
|
|
debug("* Frameless document cases");
|
|
const framelessDocument1 = document.implementation.createHTMLDocument("test");
|
|
shouldBeEqualToString("framelessDocument1.cookie", "");
|
|
shouldNotThrow("framelessDocument1.cookie = 'ppkcookie2=testcookie'");
|
|
shouldBeEqualToString("framelessDocument1.cookie", "");
|
|
|
|
const framelessDocument2 = new DOMParser().parseFromString("<body></body>", "text/html");
|
|
shouldBeEqualToString("framelessDocument2.cookie", "");
|
|
shouldNotThrow("framelessDocument2.cookie = 'ppkcookie3=testcookie'");
|
|
shouldBeEqualToString("framelessDocument2.cookie", "");
|
|
|
|
debug("");
|
|
debug("* Frame with about:blank URL");
|
|
let frame = document.createElement("iframe");
|
|
frame.src = "about:blank";
|
|
document.body.appendChild(frame);
|
|
let frameDocument = frame.contentDocument;
|
|
shouldBeTrue("frameDocument.cookie.indexOf('ppkcookie1=testcookie') >= 0");
|
|
shouldNotThrow("frameDocument.cookie = 'ppkcookie4=testcookie'");
|
|
shouldBeTrue("frameDocument.cookie.indexOf('ppkcookie4=testcookie') >= 0");
|
|
frame.remove();
|
|
frame = null;
|
|
gc();
|
|
shouldBeEqualToString("frameDocument.cookie", "");
|
|
shouldNotThrow("frameDocument.cookie = 'ppkcookie4=testcookie'");
|
|
shouldBeEqualToString("frameDocument.cookie", "");
|
|
|
|
function runDataURLTest()
|
|
{
|
|
return new Promise((resolve) => {
|
|
debug("");
|
|
debug("* Frame using data: scheme");
|
|
frame = document.createElement("iframe");
|
|
frame.src = "data:text/html,<body></body>";
|
|
|
|
frame.onload = function() {
|
|
frameDocument = frame.contentDocument;
|
|
shouldBeEqualToString("frameDocument.cookie", "");
|
|
shouldNotThrow("frameDocument.cookie = 'ppkcookie5=testcookie'");
|
|
shouldBeEqualToString("frameDocument.cookie", "");
|
|
|
|
frame.remove();
|
|
frame = null;
|
|
resolve();
|
|
}
|
|
document.body.appendChild(frame);
|
|
});
|
|
}
|
|
|
|
function runFileURLTest()
|
|
{
|
|
return new Promise((resolve) => {
|
|
debug("");
|
|
debug("* Frame using file:// scheme");
|
|
frame = document.createElement("iframe");
|
|
frame.src = "../loader/resources/empty-subframe.html";
|
|
frame.onload = function() {
|
|
frameDocument = frame.contentDocument;
|
|
shouldNotThrow("frameDocument.cookie = 'ppkcookie6=testcookie'");
|
|
shouldBeTrue("frameDocument.cookie.indexOf('ppkcookie6=testcookie') >= 0");
|
|
evalAndLog("frame.remove()");
|
|
frame = null;
|
|
gc();
|
|
shouldBeEqualToString("frameDocument.cookie", "");
|
|
shouldNotThrow("frameDocument.cookie = 'ppkcookie7=testcookie'");
|
|
shouldBeEqualToString("frameDocument.cookie", "");
|
|
|
|
resolve();
|
|
}
|
|
document.body.appendChild(frame);
|
|
});
|
|
}
|
|
|
|
runDataURLTest().then(() => {
|
|
runFileURLTest().then(() => {
|
|
finishJSTest();
|
|
})
|
|
});
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
<html>
|