mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:17:44 +00:00
LibWeb: Make factory method of DOM::ElementFactory fallible
This commit is contained in:
parent
a2381a672d
commit
ff92324fa5
15 changed files with 115 additions and 111 deletions
|
@ -68,7 +68,7 @@ JS::NonnullGCPtr<DOM::Document> DOMParser::parse_from_string(DeprecatedString co
|
|||
// 1. Assert: document has no child nodes.
|
||||
document->remove_all_children(true);
|
||||
// 2. Let root be the result of creating an element given document, "parsererror", and "http://www.mozilla.org/newlayout/xml/parsererror.xml".
|
||||
auto root = DOM::create_element(*document, "parsererror", "http://www.mozilla.org/newlayout/xml/parsererror.xml");
|
||||
auto root = DOM::create_element(*document, "parsererror", "http://www.mozilla.org/newlayout/xml/parsererror.xml").release_value_but_fixme_should_propagate_errors();
|
||||
// FIXME: 3. Optionally, add attributes or children to root to describe the nature of the parsing error.
|
||||
// 4. Append root to document.
|
||||
MUST(document->append_child(*root));
|
||||
|
|
|
@ -88,7 +88,7 @@ JS::NonnullGCPtr<HTMLTableCaptionElement> HTMLTableElement::create_caption()
|
|||
return *maybe_caption;
|
||||
}
|
||||
|
||||
auto caption = DOM::create_element(document(), TagNames::caption, Namespace::HTML);
|
||||
auto caption = DOM::create_element(document(), TagNames::caption, Namespace::HTML).release_value_but_fixme_should_propagate_errors();
|
||||
MUST(pre_insert(caption, first_child()));
|
||||
return static_cast<HTMLTableCaptionElement&>(*caption);
|
||||
}
|
||||
|
@ -166,7 +166,7 @@ JS::NonnullGCPtr<HTMLTableSectionElement> HTMLTableElement::create_t_head()
|
|||
if (maybe_thead)
|
||||
return *maybe_thead;
|
||||
|
||||
auto thead = DOM::create_element(document(), TagNames::thead, Namespace::HTML);
|
||||
auto thead = DOM::create_element(document(), TagNames::thead, Namespace::HTML).release_value_but_fixme_should_propagate_errors();
|
||||
|
||||
// We insert the new thead after any <caption> or <colgroup> elements
|
||||
DOM::Node* child_to_insert_before = nullptr;
|
||||
|
@ -242,7 +242,7 @@ JS::NonnullGCPtr<HTMLTableSectionElement> HTMLTableElement::create_t_foot()
|
|||
if (maybe_tfoot)
|
||||
return *maybe_tfoot;
|
||||
|
||||
auto tfoot = DOM::create_element(document(), TagNames::tfoot, Namespace::HTML);
|
||||
auto tfoot = DOM::create_element(document(), TagNames::tfoot, Namespace::HTML).release_value_but_fixme_should_propagate_errors();
|
||||
MUST(append_child(tfoot));
|
||||
return static_cast<HTMLTableSectionElement&>(*tfoot);
|
||||
}
|
||||
|
@ -272,7 +272,7 @@ JS::NonnullGCPtr<DOM::HTMLCollection> HTMLTableElement::t_bodies()
|
|||
// https://html.spec.whatwg.org/multipage/tables.html#dom-table-createtbody
|
||||
JS::NonnullGCPtr<HTMLTableSectionElement> HTMLTableElement::create_t_body()
|
||||
{
|
||||
auto tbody = DOM::create_element(document(), TagNames::tbody, Namespace::HTML);
|
||||
auto tbody = DOM::create_element(document(), TagNames::tbody, Namespace::HTML).release_value_but_fixme_should_propagate_errors();
|
||||
|
||||
// We insert the new tbody after the last <tbody> element
|
||||
DOM::Node* child_to_insert_before = nullptr;
|
||||
|
@ -335,9 +335,9 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<HTMLTableRowElement>> HTMLTableElement::ins
|
|||
if (index < -1 || index > (long)rows_length) {
|
||||
return WebIDL::IndexSizeError::create(realm(), "Index is negative or greater than the number of rows");
|
||||
}
|
||||
auto& tr = static_cast<HTMLTableRowElement&>(*DOM::create_element(document(), TagNames::tr, Namespace::HTML));
|
||||
auto& tr = static_cast<HTMLTableRowElement&>(*TRY(DOM::create_element(document(), TagNames::tr, Namespace::HTML)));
|
||||
if (rows_length == 0 && !has_child_of_type<HTMLTableRowElement>()) {
|
||||
auto tbody = DOM::create_element(document(), TagNames::tbody, Namespace::HTML);
|
||||
auto tbody = TRY(DOM::create_element(document(), TagNames::tbody, Namespace::HTML));
|
||||
TRY(tbody->append_child(tr));
|
||||
TRY(append_child(tbody));
|
||||
} else if (rows_length == 0) {
|
||||
|
|
|
@ -112,7 +112,7 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<HTMLTableCellElement>> HTMLTableRowElement:
|
|||
return WebIDL::IndexSizeError::create(realm(), "Index is negative or greater than the number of cells");
|
||||
|
||||
// 2. Let table cell be the result of creating an element given this tr element's node document, td, and the HTML namespace.
|
||||
auto& table_cell = static_cast<HTMLTableCellElement&>(*DOM::create_element(document(), HTML::TagNames::td, Namespace::HTML));
|
||||
auto& table_cell = static_cast<HTMLTableCellElement&>(*TRY(DOM::create_element(document(), HTML::TagNames::td, Namespace::HTML)));
|
||||
|
||||
// 3. If index is equal to −1 or equal to the number of items in cells collection, then append table cell to this tr element.
|
||||
if (index == -1 || index == cells_collection_size)
|
||||
|
|
|
@ -60,7 +60,7 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<HTMLTableRowElement>> HTMLTableSectionEleme
|
|||
return WebIDL::IndexSizeError::create(realm(), "Index is negative or greater than the number of rows");
|
||||
|
||||
// 2. Let table row be the result of creating an element given this element's node document, tr, and the HTML namespace.
|
||||
auto& table_row = static_cast<HTMLTableRowElement&>(*DOM::create_element(document(), TagNames::tr, Namespace::HTML));
|
||||
auto& table_row = static_cast<HTMLTableRowElement&>(*TRY(DOM::create_element(document(), TagNames::tr, Namespace::HTML)));
|
||||
|
||||
// 3. If index is −1 or equal to the number of items in the rows collection, then append table row to this element.
|
||||
if (index == -1 || index == rows_collection_size)
|
||||
|
|
|
@ -536,8 +536,8 @@ void HTMLParser::handle_before_html(HTMLToken& token)
|
|||
// -> Anything else
|
||||
AnythingElse:
|
||||
// Create an html element whose node document is the Document object. Append it to the Document object. Put this element in the stack of open elements.
|
||||
auto element = create_element(document(), HTML::TagNames::html, Namespace::HTML);
|
||||
MUST(document().append_child(*element));
|
||||
auto element = create_element(document(), HTML::TagNames::html, Namespace::HTML).release_value_but_fixme_should_propagate_errors();
|
||||
MUST(document().append_child(element));
|
||||
m_stack_of_open_elements.push(element);
|
||||
|
||||
// Switch the insertion mode to "before head", then reprocess the token.
|
||||
|
@ -638,7 +638,7 @@ JS::NonnullGCPtr<DOM::Element> HTMLParser::create_element_for(HTMLToken const& t
|
|||
// 9. Let element be the result of creating an element given document, localName, given namespace, null, and is.
|
||||
// FIXME: If will execute script is true, set the synchronous custom elements flag; otherwise, leave it unset.
|
||||
// FIXME: Pass in `null` and `is`.
|
||||
auto element = create_element(*document, local_name, namespace_);
|
||||
auto element = create_element(*document, local_name, namespace_).release_value_but_fixme_should_propagate_errors();
|
||||
|
||||
// 10. Append each attribute in the given token to element.
|
||||
// FIXME: This isn't the exact `append` the spec is talking about.
|
||||
|
@ -3499,7 +3499,7 @@ Vector<JS::Handle<DOM::Node>> HTMLParser::parse_html_fragment(DOM::Element& cont
|
|||
}
|
||||
|
||||
// 5. Let root be a new html element with no attributes.
|
||||
auto root = create_element(context_element.document(), HTML::TagNames::html, Namespace::HTML);
|
||||
auto root = create_element(context_element.document(), HTML::TagNames::html, Namespace::HTML).release_value_but_fixme_should_propagate_errors();
|
||||
|
||||
// 6. Append the element root to the Document node created above.
|
||||
MUST(temp_document->append_child(root));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue