Bug 251904

Summary: EffectiveLang optimization fails when document element is replaced
Product: WebKit Reporter: Cameron McCormack (:heycam) <heycam>
Component: DOMAssignee: Nobody <webkit-unassigned>
Status: RESOLVED DUPLICATE    
Severity: Normal CC: darin, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   

Cameron McCormack (:heycam)
Reported 2023-02-07 22:22:57 PST
If the document element has a lang attribute and it is removed from its parent document node, we can hit the assertion in Element::updateEffectiveLangStateFromParent that checks we don't have a lang attribute. This is because Element::removedFromAncestor checks that the element doesn't have effective lang state before calling updateEffectiveLangStateFromParent(), with the understanding that "no effective lang state" means the element is in the common case of inheriting the document element lang state directly, i.e. there's no intervening ancestor with a lang attribute at all. Additionally, we don't correctly handle updating the document element language when the document element is removed or replaced. (We only update the document element language when the lang attribute on a current document element is changed.)
Attachments
Radar WebKit Bug Importer
Comment 1 2023-02-07 22:23:15 PST
Cameron McCormack (:heycam)
Comment 2 2023-02-08 11:52:23 PST
*** Bug 251921 has been marked as a duplicate of this bug. ***
Cameron McCormack (:heycam)
Comment 3 2023-02-08 12:06:13 PST
Original patch in bug 251657 was reverted. I'll use this bug to re-land with these fixes folded in.
Cameron McCormack (:heycam)
Comment 4 2023-02-08 12:07:07 PST
Actually I can use the original bug. *** This bug has been marked as a duplicate of bug 251657 ***
Note You need to log in before you can comment on or make changes to this bug.