Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test has a WPT meta file that expects 4 subtest issues.
- This WPT test may be referenced by the following Test IDs:
- /connection-allowlist/tentative/link_rel_stylesheet.sub.window.html - WPT Dashboard Interop Dashboard
// META: script=/common/get-host-info.sub.js
// META: script=/common/utils.js
// META: script=resources/utils.js
// META: timeout=long
//
// Tests that <link rel="stylesheet"> to cross-origin URLs is blocked by
// Connection-Allowlist: (response-origin). Stylesheets are subresource
// fetches and should be subject to the same fetch restrictions as scripts,
// images, and other subresources.
const port = get_host_info().HTTP_PORT_ELIDED;
const SUCCESS = true;
const FAILURE = false;
function stylesheet_test(origin, expectation) {
promise_test(
async t => {
const key = token();
const value = 'hello';
const params = new URLSearchParams();
params.set('key', key);
params.set('value', value);
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = `${origin}${STORE_URL}?${params.toString()}`;
document.head.appendChild(link);
t.add_cleanup(() => link.remove());
if (expectation === SUCCESS) {
const result = await nextValueFromServer(key);
assert_equals(result, value);
} else {
const result = await Promise.race([
new Promise(r => t.step_timeout(r, 1000)),
nextValueFromServer(key)
]);
assert_true(typeof result === 'undefined');
}
},
`Stylesheet to ${origin} ${
expectation === SUCCESS ? 'succeeds' : 'fails'}.`);
}
const test_cases = [
];
for (let i = 0; i < test_cases.length; i++) {
stylesheet_test(test_cases[i].origin, test_cases[i].expectation);
}