blob: 8343a435726bf3f27b37793c364be328f69abdf4 [file] [log] [blame]
<!DOCTYPE html>
<head><title>Subresource Web Bundles Origin Trial</title></head>
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
promise_test(async (t) => {
assert_false(
document.createElement('link').relList.supports('webbundle'),
'Subresource Web Bundles should not be supported by default.');
const meta = document.createElement('meta');
meta.httpEquiv = "origin-trial";
// This Origin Trial token is generated with the command:
// tools/origin_trials/generate_token.py \
// --expire-timestamp=2000000000 \
// --version=3 \
// https://127.0.0.1:8443 SubresourceWebBundles
meta.content = "A1nOn5e148yGA6ExfhqzlxQFFC71b03gYEAJEZ1XpUw+Lv8uUA4rpeyhCme0z3bBaRtIy8XkDK8twDUuhVXOegEAAABeeyJvcmlnaW4iOiAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MyIsICJmZWF0dXJlIjogIlN1YnJlc291cmNlV2ViQnVuZGxlcyIsICJleHBpcnkiOiAyMDAwMDAwMDAwfQ==";
document.head.appendChild(meta);
assert_true(
document.createElement('link').relList.supports('webbundle'),
'Subresource Web Bundles should be supported.');
const wbn_url = 'https://localhost:8443/loading/wbn/resources/wbn/wbn-subresource-origin-trial.wbn';
const script_url = 'https://localhost:8443/loading/wbn/resources/wbn/server/wbn-subresource-origin-trial/script.js';
const SubresourceWebBundles = 3446; // From web_feature.mojom
assert_false(window.internals.isUseCounted(document, SubresourceWebBundles));
const link = document.createElement('link');
link.rel = 'webbundle';
link.href = wbn_url;
link.resources.add(script_url);
document.body.appendChild(link);
assert_true(window.internals.isUseCounted(document, SubresourceWebBundles));
async function loadScriptAndWaitReport(script_url) {
const result_promise = new Promise((resolve) => {
// This function will be called from script.js
window.report_result = resolve;
});
const script = document.createElement('script');
script.src = script_url;
document.body.appendChild(script);
return result_promise;
}
assert_equals(
await loadScriptAndWaitReport(script_url),
'from web bundle',
'Script should be loaded from the web bundle.');
document.body.removeChild(link);
assert_equals(
await loadScriptAndWaitReport(script_url),
'from server',
'Script should be loaded from the server after removing the link ' +
'rel=webbundle.');
}, 'Subresource Web Bundles Origin Trial');
</script>
</body>