Sfoglia il codice sorgente

LibWeb: Implement replacing the current body when setting document.body

Also adds an exception check to the append at the end.
Luke 4 anni fa
parent
commit
df52040ce9
1 ha cambiato i file con 6 aggiunte e 2 eliminazioni
  1. 6 2
      Userland/Libraries/LibWeb/DOM/Document.cpp

+ 6 - 2
Userland/Libraries/LibWeb/DOM/Document.cpp

@@ -222,7 +222,9 @@ ExceptionOr<void> Document::set_body(HTML::HTMLElement& new_body)
 
     auto* existing_body = body();
     if (existing_body) {
-        TODO();
+        auto replace_result = existing_body->parent()->replace_child(new_body, *existing_body);
+        if (replace_result.is_exception())
+            return NonnullRefPtr<DOMException>(replace_result.exception());
         return {};
     }
 
@@ -230,7 +232,9 @@ ExceptionOr<void> Document::set_body(HTML::HTMLElement& new_body)
     if (!document_element)
         return DOM::HierarchyRequestError::create("Missing document element");
 
-    document_element->append_child(new_body);
+    auto append_result = document_element->append_child(new_body);
+    if (append_result.is_exception())
+        return NonnullRefPtr<DOMException>(append_result.exception());
     return {};
 }