LibXml: Notify listener when doctype is parsed

This commit is contained in:
mikiubo 2025-01-02 00:42:49 +01:00 committed by Jelle Raaijmakers
parent fe7d7f6f6b
commit cd576e594d
Notes: github-actions[bot] 2025-01-20 13:49:22 +00:00
3 changed files with 33 additions and 3 deletions

View file

@ -182,9 +182,6 @@ ErrorOr<void, ParseError> Parser::parse_with_listener(Listener& listener)
if (result.is_error())
m_listener->error(result.error());
m_listener->document_end();
if (m_doctype.has_value()) {
m_listener->set_doctype(m_doctype.release_value());
}
m_root_node.clear();
return result;
}
@ -622,6 +619,10 @@ ErrorOr<void, ParseError> Parser::parse_doctype_decl()
rollback.disarm();
m_doctype = move(doctype);
if (m_doctype.has_value() && m_listener) {
m_listener->set_doctype(m_doctype.value());
}
return {};
}

View file

@ -0,0 +1,6 @@
Harness status: OK
Found 1 tests
1 Pass
Pass DocumentType literals

View file

@ -0,0 +1,23 @@
<!DOCTYPE html PUBLIC "STAFF" "staffNS.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>DocumentType literals</title>
<link rel="help" href="https://dom.spec.whatwg.org/#dom-documenttype-name"/>
<link rel="help" href="https://dom.spec.whatwg.org/#dom-documenttype-publicid"/>
<link rel="help" href="https://dom.spec.whatwg.org/#dom-documenttype-systemid"/>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
</head>
<body>
<div id="log"/>
<script>
test(function() {
var doctype = document.firstChild;
assert_true(doctype instanceof DocumentType)
assert_equals(doctype.name, "html")
assert_equals(doctype.publicId, 'STAFF')
assert_equals(doctype.systemId, 'staffNS.dtd')
})
</script>
</body>
</html>