- From: <bugzilla@jessica.w3.org>
- Date: Fri, 23 Jan 2015 19:18:15 +0000
- To: www-dom@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=27887
Bug ID: 27887
Summary: "Mutation method macro" should handle empty nodes
Product: WebAppsWG
Version: unspecified
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: DOM
Assignee: annevk@annevk.nl
Reporter: jsbell@google.com
QA Contact: public-webapps-bugzilla@w3.org
CC: mike@w3.org, www-dom@w3.org
https://dom.spec.whatwg.org/#mutation-method-macro (as of rev b7563aa)
Given one of the operations that references it, e.g.:
void prepend((Node or DOMString)... nodes);
Per Web IDL, the variadic argument can be omitted entirely, so e.g.
myDiv.prepend() should not throw (unless specified to in prose).
The various operations don't specify special handling when called with no
arguments. They execute the mutation method macro, which has:
1. Let /node/ be null.
2. Replace each string in /nodes/ with a Text node whose data is the string
value.
3. If /nodes/ contains more than one node, set /node/ to a new DocumentFragment
and append each node in /nodes/ to it. Rethrow any exceptions.
Otherwise, set /node/ to the single node /nodes/ contains.
Step 3 doesn't appear to handle the case if /nodes/ contains zero nodes. It's
not more than one, but yet not a single node.
Proposed fix:
Replace "contains more than one node" with "contains exactly one node".
This would result in an empty DocumentFragment, which turns most of the
ParentNode/ChildNode operations into no-ops when called with no argument except
`replaceWith` which acts like `remove`.
--
You are receiving this mail because:
You are on the CC list for the bug.
Received on Friday, 23 January 2015 19:18:17 UTC