RESOLVED INVALID Bug 61997
Cloning elements with shadow DOM does redundant element creation
https://bugs.webkit.org/show_bug.cgi?id=61997
Summary Cloning elements with shadow DOM does redundant element creation
Dominic Cooney
Reported 2011-06-03 00:53:42 PDT
Cloning an element with shadow DOM typically does redundant element creation. For example, cloning an <input type="range" style="…"> creates one shadow slider element during the HTMLInputElement clone when it clones its type attribute (which creates a RangeInputType, which creates a shadow subtree for the slider.) Then Element::copyNonAttributeProperties destroys that shadow subtree and creates another shadow subtree that is a clone of the shadow subtree of the original node. We only need one of these two shadow trees.
Attachments
Kent Tamura
Comment 1 2011-06-03 03:32:28 PDT
Kent Tamura
Comment 2 2011-06-03 03:33:08 PDT
Dominic Cooney
Comment 3 2011-06-03 03:42:16 PDT
Reverting 84528 will ensure that there is no redundant element creation. However it does not ensure that cloned elements end up with valid shadow trees. (For example, <keygen> has no hook to clone its shadow.) I think we need a general solution where elements with shadow roots get notified when they are cloned, so that they can participate in the clone. For elements like <input type="…"> where setting the type attribute will create a shadow tree anyway, it can just assert that the shadow tree was created. For elements like keygen, it can create the clone shadow tree at that point.
Kent Tamura
Comment 4 2011-06-03 03:53:44 PDT
(In reply to comment #3) Keygen build the shadow tree in the constructor. Cloning a keygen needs nothing else, right?
Dominic Cooney
Comment 5 2011-06-03 04:03:19 PDT
Yes, you’re right, keygen would work if r84528 was reverted. Maybe we should revert it…
Hajime Morrita
Comment 6 2011-06-06 21:36:36 PDT
Is this valid yet?
Dominic Cooney
Comment 7 2011-06-06 21:51:34 PDT
Since r84528 was reverted, this bug is no longer applicable.
Note You need to log in before you can comment on or make changes to this bug.