Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add insertion tests for the new changes with the "deferred steps queue" #15264

Closed
wants to merge 16 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions dom/nodes/Node-appendChild-script-and-button-from-div.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<!doctype html>
<meta charset=utf-8>
<title>Node.appendChild: inserting script and button from a div</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="log"></div>
<form id="form"></form>
<script>
let button = null;
let buttonForm = null;
test(() => {
const form = document.getElementById("form");
const script = document.createElement("script");
script.textContent = `
buttonForm = button.form;
`;
button = document.createElement("button");
const div = document.createElement("div");
div.appendChild(script);
div.appendChild(button);
assert_equals(buttonForm, null);
form.appendChild(div);
assert_equals(buttonForm, form);
});
</script>
32 changes: 32 additions & 0 deletions dom/nodes/Node-appendChild-script-and-custom-from-fragment.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<!doctype html>
<meta charset=utf-8>
<title>Node.appendChild: inserting script and custom element from a DocumentFragment</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="log"></div>
<script>
let customConstructed = false;
let isCustomConstructed = false;
class CustomElement extends HTMLElement {
constructor() {
super();
customConstructed = true;
}
}
test(() => {
const script = document.createElement("script");
script.textContent = `
customElements.define("custom-element", CustomElement);
isCustomConstructed = customConstructed;
`;
const custom = document.createElement("custom-element");
const df = document.createDocumentFragment();
df.appendChild(script);
df.appendChild(custom);
assert_false(customConstructed);
assert_false(isCustomConstructed);
document.head.appendChild(df);
assert_true(customConstructed);
assert_true(isCustomConstructed);
});
</script>
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<!doctype html>
<meta charset=utf-8>
<title>Node.appendChild: inserting script and default-style meta from a fragment</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<link rel="alternate stylesheet" title="alternative" href="data:text/css,%23div{display:none}">
<div id="log"></div>
<div id="div">hello</div>
<script>
let scriptRan = false;
let computedStyle = null;
test(() => {
const div = document.getElementById("div");
const meta = document.createElement("meta");
meta.httpEquiv = "default-style";
meta.content = "alternative";
const script = document.createElement("script");
script.textContent = `
computedStyle = getComputedStyle(div).display;
scriptRan = true;
`;
const df = document.createDocumentFragment();
df.appendChild(script);
df.appendChild(meta);
assert_equals(getComputedStyle(div).display, "block", "div is not a block");
assert_false(scriptRan, "script ran");
document.head.appendChild(df);
assert_true(scriptRan, "script has not run");
assert_equals(computedStyle, "none", "div is still visible");
assert_equals(getComputedStyle(div).display, "none", "div is still visible after insertion");
});
</script>
28 changes: 28 additions & 0 deletions dom/nodes/Node-appendChild-script-and-div-from-fragment.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<!doctype html>
<meta charset=utf-8>
<title>Node.appendChild: inserting script and div from a DocumentFragment</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="log"></div>
<script>
let script = null;
let scriptParent = null;
let div = null;
let divParent = null;
test(() => {
script = document.createElement("script");
div = document.createElement("div");
script.textContent = `
divParent = div.parentNode;
scriptParent = script.parentNode;
`;
const df = document.createDocumentFragment();
df.appendChild(script);
df.appendChild(div);
assert_equals(divParent, null);
assert_equals(scriptParent, null);
document.head.appendChild(df);
assert_equals(divParent, scriptParent);
assert_equals(divParent, document.head);
});
</script>
26 changes: 26 additions & 0 deletions dom/nodes/Node-appendChild-script-and-iframe-from-fragment.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<!doctype html>
<meta charset=utf-8>
<title>Node.appendChild: inserting script and iframe from a div</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="log"></div>
<script>
let happened = [];
const iframe = document.createElement("iframe");
test(() => {
iframe.src = "data:text/html,"

const script = document.createElement("script");
script.textContent = `
happened.push(iframe.contentWindow === null);
`;

const df = document.createDocumentFragment();
df.appendChild(script);
df.appendChild(iframe);

assert_array_equals(happened, []);
document.body.appendChild(df);
assert_array_equals(happened, [false])
});
</script>
27 changes: 27 additions & 0 deletions dom/nodes/Node-appendChild-script-and-iframe.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<!doctype html>
<meta charset=utf-8>
<title>Node.appendChild: inserting script and iframe from a div</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="log"></div>
<script>
const happened = [];
const iframe = document.createElement("iframe");

test(() => {
iframe.src = "data:text/html,"

const script = document.createElement("script");
script.textContent = `
happened.push(iframe.contentWindow === null);
`;

const div = document.createElement("div");
div.appendChild(script);
div.appendChild(iframe);

assert_array_equals(happened, []);
document.body.appendChild(div);
assert_array_equals(happened, [false])
});
</script>
26 changes: 26 additions & 0 deletions dom/nodes/Node-appendChild-script-and-source-from-fragment.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<!doctype html>
<meta charset=utf-8>
<title>Node.appendChild: inserting script and source from a fragment</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="log"></div>
<video id="media"></video>
<script>
const happened = [];
const media = document.getElementById("media");
test(() => {
const source = document.createElement("source");
const script = document.createElement("script");
script.textContent = `
happened.push(media.networkState);
`;

const df = document.createDocumentFragment();
df.appendChild(script);
df.appendChild(source);

assert_array_equals(happened, []);
media.appendChild(df);
assert_array_equals(happened, [HTMLMediaElement.NETWORK_NO_SOURCE]);
});
</script>
30 changes: 30 additions & 0 deletions dom/nodes/Node-appendChild-script-and-style-from-fragment.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<!doctype html>
<meta charset=utf-8>
<title>Node.appendChild: inserting a script and a style from a fragment</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="log"></div>
<script>
const happened = []
const style = document.createElement("style");
let styleSheet = null;
test(() => {
style.appendChild(new Text("body {}"));
const script = document.createElement("script");
script.textContent = `
happened.push(style.sheet === null);
style.appendChild(new Text("body {}"));
happened.push(style.sheet.cssRules.length);
styleSheet = style.sheet;
`;

const df = document.createDocumentFragment();
df.appendChild(script);
df.appendChild(style);

assert_array_equals(happened, []);
document.body.appendChild(df);
assert_array_equals(happened, [true, 2]);
assert_not_equals(style.sheet, styleSheet, "style sheet was created only once");
});
</script>
30 changes: 30 additions & 0 deletions dom/nodes/Node-appendChild-script-and-style.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<!doctype html>
<meta charset=utf-8>
<title>Node.appendChild: inserting a script and a style where the script modifies the style</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="log"></div>
<script>
const happened = [];
const style = document.createElement("style");
let styleSheet = null;
test(() => {
style.appendChild(new Text("body {}"));
const script = document.createElement("script");
script.textContent = `
happened.push(style.sheet === null);
style.appendChild(new Text("body {}"));
happened.push(style.sheet.cssRules.length);
styleSheet = style.sheet;
`;

const div = document.createElement("div");
div.appendChild(script);
div.appendChild(style);

assert_array_equals(happened, []);
document.body.appendChild(div);
assert_array_equals(happened, [true, 2]);
assert_not_equals(style.sheet, styleSheet, "style sheet was created only once");
});
</script>
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<!doctype html>
<meta charset=utf-8>
<title>Node.appendChild: inserting script and stylesheet link from a fragment</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="log"></div>
<script>
const happened = [];
const link = document.createElement("link");
test(() => {
link.rel = "stylesheet";
link.href = "data:text/css,"

const script = document.createElement("script");
script.textContent = `
happened.push(link.sheet === null);
`;

const df = document.createDocumentFragment();
df.appendChild(script);
df.appendChild(link);

assert_array_equals(happened, []);
document.body.appendChild(df);
assert_array_equals(happened, [true]);
});
</script>
27 changes: 27 additions & 0 deletions dom/nodes/Node-appendChild-script-and-stylesheet-link.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<!doctype html>
<meta charset=utf-8>
<title>Node.appendChild: inserting script and stylesheet link from a div</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="log"></div>
<script>
const happened = [];
const link = document.createElement("link");
test(() => {
link.rel = "stylesheet";
link.href = "data:text/css,"

const script = document.createElement("script");
script.textContent = `
happened.push(link.sheet === null);
`;

const div = document.createElement("div");
div.appendChild(script);
div.appendChild(link);

assert_array_equals(happened, []);
document.body.appendChild(div);
assert_array_equals(happened, [true]);
});
</script>
27 changes: 27 additions & 0 deletions dom/nodes/Node-appendChild-script-in-script.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<!doctype html>
<meta charset=utf-8>
<title>Node.appendChild: inserting a script and some code in an empty script</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="log"></div>
<script id="s1"></script>
<script>
const happened = [];
test(() => {
const s1 = document.getElementById("s1");
const s2 = document.createElement("script");
s2.textContent = `
happened.push("s2");
s1.appendChild(new Text("happened.push('s1ran');"));
happened.push("s2ran");
`;

const df = document.createDocumentFragment();
df.appendChild(new Text(`happened.push("s1");`));
df.appendChild(s2);

assert_array_equals(happened, []);
s1.appendChild(df);
assert_array_equals(happened, ["s2", "s2ran", "s1", "s1ran"]);
});
</script>
28 changes: 28 additions & 0 deletions dom/nodes/Node-appendChild-text-and-script-in-style.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<!doctype html>
<meta charset=utf-8>
<title>Node.appendChild: inserting text and script nodes in a style element</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="log"></div>
<style id="style"></style>
<script>
const happened = []
const style = document.getElementById("style");
test(() => {
const r1 = new Text("body {}");
const r2 = new Text("body {}");
const script = document.createElement("script");
script.textContent = `
happened.push(style.sheet.cssRules.length);
`;

const df = document.createDocumentFragment();
df.appendChild(r1);
df.appendChild(script);
df.appendChild(r2);

assert_array_equals(happened, []);
style.appendChild(df);
assert_array_equals(happened, [2]);
});
</script>
Loading