mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-29 12:49:08 +00:00
LibWeb: Make HTMLDocumentParser take an existing document
We shouldn't really be creating the document objects inside the parser, since that makes it hard to hook up e.g JavaScript bindings early on.
This commit is contained in:
@@ -112,21 +112,15 @@ static Vector<FlyString> s_quirks_public_ids = {
|
||||
|
||||
RefPtr<DOM::Document> parse_html_document(const StringView& data, const URL& url, const String& encoding)
|
||||
{
|
||||
HTMLDocumentParser parser(data, TextCodec::get_standardized_encoding(encoding));
|
||||
auto document = DOM::Document::create(url);
|
||||
HTMLDocumentParser parser(document, data, TextCodec::get_standardized_encoding(encoding));
|
||||
parser.run(url);
|
||||
return parser.document();
|
||||
return document;
|
||||
}
|
||||
|
||||
HTMLDocumentParser::HTMLDocumentParser(const StringView& input, const String& encoding)
|
||||
HTMLDocumentParser::HTMLDocumentParser(DOM::Document& document, const StringView& input, const String& encoding)
|
||||
: m_tokenizer(input, encoding)
|
||||
{
|
||||
m_document = DOM::Document::create();
|
||||
m_document->set_encoding(encoding);
|
||||
}
|
||||
|
||||
HTMLDocumentParser::HTMLDocumentParser(const StringView& input, const String& encoding, DOM::Document& existing_document)
|
||||
: m_tokenizer(input, encoding)
|
||||
, m_document(existing_document)
|
||||
, m_document(document)
|
||||
{
|
||||
m_document->set_encoding(encoding);
|
||||
}
|
||||
@@ -2975,7 +2969,8 @@ DOM::Document& HTMLDocumentParser::document()
|
||||
|
||||
NonnullRefPtrVector<DOM::Node> HTMLDocumentParser::parse_html_fragment(DOM::Element& context_element, const StringView& markup)
|
||||
{
|
||||
HTMLDocumentParser parser(markup, "utf-8");
|
||||
auto temp_document = DOM::Document::create();
|
||||
HTMLDocumentParser parser(*temp_document, markup, "utf-8");
|
||||
parser.m_context_element = context_element;
|
||||
parser.m_parsing_fragment = true;
|
||||
parser.document().set_quirks_mode(context_element.document().mode());
|
||||
@@ -3022,5 +3017,4 @@ NonnullRefPtrVector<DOM::Node> HTMLDocumentParser::parse_html_fragment(DOM::Elem
|
||||
}
|
||||
return children;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user