瀏覽代碼

LibWeb: Don't crash when determining slot element auto directionality

Tim Ledbetter 10 月之前
父節點
當前提交
0de3145071

+ 1 - 0
Tests/LibWeb/Text/expected/HTML/dir-slot-auto-directionality.txt

@@ -0,0 +1 @@
+    Slot directionality: ltr

+ 14 - 0
Tests/LibWeb/Text/input/HTML/dir-slot-auto-directionality.html

@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<script src="../include.js"></script>
+<div id="root">
+    <span></span>
+</div>
+<script>
+    const root = document.getElementById("root");
+    test(() => {
+        const shadowTree = `<slot dir="auto"></slot>`;
+        const shadow = document.querySelector("#root").attachShadow({mode: "open"});
+        shadow.innerHTML = shadowTree;
+        println(`Slot directionality: ${getComputedStyle(shadow.querySelector("slot")).direction}`);
+    });
+</script>

+ 1 - 1
Userland/Libraries/LibWeb/DOM/Element.cpp

@@ -2643,7 +2643,7 @@ Optional<Element::Directionality> Element::auto_directionality() const
                     VERIFY(child->is_element());
                     VERIFY(child->is_element());
 
 
                     // 2. Set childDirection to the auto directionality of child.
                     // 2. Set childDirection to the auto directionality of child.
-                    child_direction = static_cast<HTML::HTMLElement const&>(*this).auto_directionality();
+                    child_direction = static_cast<HTML::HTMLElement const&>(*child).auto_directionality();
                 }
                 }
 
 
                 // 4. If childDirection is not null, then return childDirection.
                 // 4. If childDirection is not null, then return childDirection.