Skip to content

Test foster parenting into a Document with an element child - #61396

Merged
annevk merged 1 commit into
masterfrom
foster-parenting-document-element-child
Aug 18, 2026
Merged

Test foster parenting into a Document with an element child#61396
annevk merged 1 commit into
masterfrom
foster-parenting-document-element-child

Conversation

@annevk

@annevk annevk commented Jul 19, 2026

Copy link
Copy Markdown
Member

When the HTML parser's adjusted insertion location is a Document that already has an element child, the foster-parented node is dropped on the floor: "insert an element at the adjusted insertion location" aborts, and "insert a character" likewise for text. This is reachable when script reparents an on-stack <table> to be a Document's document element.

  • resources/scripted_foster01.dat: same-document element and text cases.
  • foster-parenting-into-document-with-element-child.html: the multi-document case, where the foster target is a separate Document.

See whatwg/html#1706

When the HTML parser's adjusted insertion location is a Document that already
has an element child, the foster-parented node is dropped on the floor:
"insert an element at the adjusted insertion location" aborts, and "insert a
character" likewise for text. This is reachable when script reparents an
on-stack <table> to be a Document's document element.

- resources/scripted_foster01.dat: same-document element and text cases.
- foster-parenting-into-document-with-element-child.html: the multi-document
  case, where the foster target is a separate Document.

See whatwg/html#1706
@annevk
annevk merged commit 34178ab into master Aug 18, 2026
29 checks passed
@annevk
annevk deleted the foster-parenting-document-element-child branch August 18, 2026 11:37
annevk added a commit to whatwg/html that referenced this pull request Aug 20, 2026
"Insert an element at the adjusted insertion location" previously aborted when
it was "not possible to insert" the element, without defining what that meant.
Replace it with an explicit condition — the adjusted insertion location is in a
Document that already has an element child — mirroring the analogous check in
"insert a character", and assert that the insertion then satisfies the DOM's
"ensure pre-insert validity".

Tests: web-platform-tests/wpt#61396

See #1706.
annevk added a commit to whatwg/html that referenced this pull request Aug 20, 2026
"Insert an element at the adjusted insertion location" aborted when it was "not possible to insert" the element, without defining what that meant.

Also, the "initial" and "before html" insertion modes append a doctype and the html element directly to the document, which the DOM does not allow when it already has a doctype or element child.

Also stop describing the node an insertion location finds itself in as an element, as it can be a Document or DocumentFragment node.

Tests: web-platform-tests/wpt#61396
	   web-platform-tests/wpt#62020

See #1706.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants