41 lines
1.7 KiB
HTML
41 lines
1.7 KiB
HTML
<!doctype html>
|
|
<meta charset=utf-8>
|
|
<title>Node.appendChild: inserting script and meta-referrer from a div</title>
|
|
<script src=/resources/testharness.js></script>
|
|
<script src=/resources/testharnessreport.js></script>
|
|
<script>
|
|
promise_test(async t => {
|
|
const preMetaScript = document.createElement("script");
|
|
preMetaScript.textContent = `
|
|
window.preMetaScriptPromise = fetch('/html/infrastructure/urls/terminology-0/resources/echo-referrer-text.py')
|
|
.then(response => response.text());
|
|
`;
|
|
|
|
const meta = document.createElement("meta");
|
|
meta.name = "referrer";
|
|
meta.content = "no-referrer";
|
|
|
|
const postMetaScript = document.createElement("script");
|
|
postMetaScript.textContent = `
|
|
window.postMetaScriptPromise = fetch('/html/infrastructure/urls/terminology-0/resources/echo-referrer-text.py')
|
|
.then(response => response.text());
|
|
`;
|
|
|
|
const fragment = new DocumentFragment();
|
|
fragment.append(preMetaScript, meta, postMetaScript);
|
|
document.head.append(fragment);
|
|
|
|
const preMetaReferrer = await window.preMetaScriptPromise;
|
|
assert_equals(preMetaReferrer, location.href,
|
|
"preMetaReferrer is the full URL; by the time the first script runs in " +
|
|
"its post-insertion steps, the later-inserted meta tag has not run its " +
|
|
"post-insertion steps, which is where meta tags are processed");
|
|
|
|
const postMetaReferrer = await window.postMetaScriptPromise;
|
|
assert_equals(postMetaReferrer, "",
|
|
"postMetaReferrer is empty; by the time the second script runs in " +
|
|
"its post-insertion steps, the later-inserted meta tag has run its " +
|
|
"post-insertion steps, and observes the meta tag's effect");
|
|
}, "<meta name=referrer> gets processed and applied in the post-insertion " +
|
|
"steps");
|
|
</script>
|