Automatic update from web-platform-tests Add tests for text modules This is to support the spec changes in: - https://github.com/tc39/proposal-import-text - https://github.com/whatwg/html/pull/11933 - https://github.com/whatwg/fetch/pull/1898 - https://github.com/w3c/webappsec-csp/pull/794 -- wpt-commits: 5419f98d72f4b1ae49980581a6a66710d6a3dee7 wpt-pr: 56812
89 lines
6.4 KiB
HTML
89 lines
6.4 KiB
HTML
<!doctype html>
|
|
<meta charset=utf-8>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script>
|
|
// Compared to modulepreload.html, this tests behavior when elements are
|
|
// initially on an HTML page instead of being added by Javascript.
|
|
const scriptLikes = [
|
|
'audioworklet',
|
|
'paintworklet',
|
|
'script',
|
|
'serviceworker',
|
|
'sharedworker',
|
|
'worker',
|
|
];
|
|
|
|
const goodAsValues = ['', 'invalid-dest', 'sCrIpT', 'style', 'json', 'text', ...scriptLikes];
|
|
const linkPromises = {};
|
|
|
|
function handleEvent(target, type) {
|
|
const asValue = target.dataset.as;
|
|
if (!linkPromises[asValue]) {
|
|
linkPromises[asValue] = {};
|
|
linkPromises[asValue].promise = new Promise((resolve) => {
|
|
linkPromises[asValue].resolve = resolve;
|
|
});
|
|
}
|
|
linkPromises[asValue].resolve({ target, eventType: type });
|
|
}
|
|
</script>
|
|
<link rel="modulepreload" href="resources/module1.js?empty-string" as="" data-as="" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?audio" as="audio" data-as="audio" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?audioworklet" as="audioworklet" data-as="audioworklet" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?document" as="document" data-as="document" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?embed" as="embed" data-as="embed" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?font" as="font" data-as="font" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?frame" as="frame" data-as="frame" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?iframe" as="iframe" data-as="iframe" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?image" as="image" data-as="image" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?manifest" as="manifest" data-as="manifest" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?object" as="object" data-as="object" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?paintworklet" as="paintworklet" data-as="paintworklet" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?report" as="report" data-as="report" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?script" as="script" data-as="script" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?serviceworker" as="serviceworker" data-as="serviceworker" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?sharedworker" as="sharedworker" data-as="sharedworker" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?track" as="track" data-as="track" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?video" as="video" data-as="video" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?webidentity" as="webidentity" data-as="webidentity" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?worker" as="worker" data-as="worker" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?xslt" as="xslt" data-as="xslt" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?fetch" as="fetch" data-as="fetch" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?invalid-dest" as="invalid-dest" data-as="invalid-dest" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?iMaGe" as="iMaGe" data-as="iMaGe" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/module1.js?sCrIpT" as="sCrIpT" data-as="sCrIpT" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/dummy.css?style" as="style" data-as="style" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/dummy.json?json" as="json" data-as="json" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<link rel="modulepreload" href="resources/dummy.txt?text" as="text" data-as="text" onload="handleEvent(this, 'load')" onerror="handleEvent(this, 'error')">
|
|
<script>
|
|
const links = document.querySelectorAll('link[rel="modulepreload"]');
|
|
for (const link of links) {
|
|
const asValue = link.dataset.as;
|
|
|
|
// Ensure promise exists (in case the event hasn't fired yet).
|
|
if (!linkPromises[asValue]) {
|
|
linkPromises[asValue] = {};
|
|
linkPromises[asValue].promise = new Promise((resolve) => {
|
|
linkPromises[asValue].resolve = resolve;
|
|
});
|
|
}
|
|
|
|
const shouldSucceed = goodAsValues.includes(asValue);
|
|
const description = shouldSucceed
|
|
? `Modulepreload should fire onload with as="${asValue}"`
|
|
: `Modulepreload should fire onerror with as="${asValue}"`;
|
|
|
|
promise_test(async t => {
|
|
const { eventType } = await linkPromises[asValue].promise;
|
|
|
|
if (shouldSucceed) {
|
|
assert_equals(eventType, 'load', 'Expected onload to fire');
|
|
} else {
|
|
assert_equals(eventType, 'error', 'Expected onerror to fire');
|
|
}
|
|
}, description);
|
|
}
|
|
</script>
|
|
<body>
|