mirror of
https://github.com/servo/servo.git
synced 2025-07-12 09:53:40 +01:00
74 lines
2.7 KiB
HTML
74 lines
2.7 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="support/test_utils.sub.js"></script>
|
|
</head>
|
|
|
|
<body>
|
|
<script>
|
|
/**
|
|
* @typedef{TestCase}
|
|
* @type{object}
|
|
* @property{string} frame The scheme of the url of the iframe.
|
|
* @property{string} resource The scheme of the resource in the iframe.
|
|
* @property{boolean} deleted Whether it is expected that Clear-Site-Data
|
|
* will be respected when loading |resource| in |frame|.
|
|
*/
|
|
var TestCase;
|
|
|
|
/** Array<TestCase> Test cases. */
|
|
var test_cases = [
|
|
{ "frame": "https", "resource": "https", "deleted": true },
|
|
{ "frame": "http", "resource": "https", "deleted": true },
|
|
{ "frame": "https", "resource": "http", "deleted": false },
|
|
{ "frame": "http", "resource": "http", "deleted": false },
|
|
];
|
|
|
|
/**
|
|
* @param TestCase test_case The test case that is tested.
|
|
* @param Dict.<string, boolean> report A map between a datatype name and
|
|
* whether it is empty.
|
|
*/
|
|
function verifyDatatypes(test_case, report) {
|
|
if (test_case.deleted) {
|
|
assert_true(
|
|
report["storage"],
|
|
"Storage should have been cleared.");
|
|
} else {
|
|
assert_false(
|
|
report["storage"],
|
|
"Storage should NOT have been cleared.");
|
|
}
|
|
}
|
|
|
|
test_cases.forEach(function(test_case) {
|
|
var test_name =
|
|
test_case.resource + " resource on a " + test_case.frame + " page";
|
|
|
|
promise_test(function(test) {
|
|
return new Promise(function(resolve_test, reject_test) {
|
|
TestUtils.populateDatatypes()
|
|
.then(function() {
|
|
// Navigate to a page with a resource that is loaded with
|
|
// the Clear-Site-Data header, then verify that storage
|
|
// has been deleted if and only if the resource was loaded
|
|
// via HTTPS.
|
|
return new Promise(function(resolve, reject) {
|
|
window.addEventListener("message", resolve);
|
|
var iframe = document.createElement("iframe");
|
|
iframe.src = TestUtils.getPageWithResourceUrl(
|
|
test_case.frame, test_case.resource);
|
|
document.body.appendChild(iframe);
|
|
}).then(function(messageEvent) {
|
|
verifyDatatypes(test_case, messageEvent.data);
|
|
resolve_test();
|
|
});
|
|
});
|
|
});
|
|
}, test_name);
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|