blob: 3d494241246bc00f10a55a32a9d5dad92fec38d6 [file] [log] [blame]
<!DOCTYPE html>
<title>Request's destination must be "webbundle" with the link-based API</title>
<link
rel="help"
href="https://github.com/WICG/webpackage/blob/master/explainers/subresource-loading.md"
/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../resources/test-helpers.js"></script>
<body>
<script>
// check-sec-fetch-dest-header-and-return-bundle.py returns a valid format
// bundle only if a "Sec-Fetch-Dest: webbundle" header is present in a request.
// Otherwise, returns an empty body with 400 status code.
//
// In this wpt, we assume that a <link> element fires a load event correctly if
// a valid format webbundle is returned.
const same_origin_bundle =
"../resources/check-sec-fetch-dest-header-and-return-bundle.py";
const cross_origin_bundle =
"https://{{domains[www1]}}:{{ports[https][0]}}/web-bundle/resources/check-sec-fetch-dest-header-and-return-bundle.py";
promise_test(async () => {
for (const bundle of [same_origin_bundle, cross_origin_bundle]) {
const link = document.createElement("link");
link.rel = "webbundle";
link.href = bundle;
await addElementAndWaitForLoad(link);
link.remove();
}
}, '"Sec-Fetch-Dest: webbundle" header must be present in a request for a bundle with the <link>-based API.');
promise_test(async () => {
const res = await fetch(same_origin_bundle);
assert_false(res.ok);
}, '"Sec-Fetch-Dest: webbundle" header must not be present in a fetch request for a same-origin resource.');
promise_test(async () => {
const res = await fetch(cross_origin_bundle);
assert_false(res.ok);
}, '"Sec-Fetch-Dest: webbundle" header must not be present in a fetch request for a cross-origin resource.');
</script>
</body>