mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-03-22 04:34:44 +00:00
Merge pull request #1852 from lightpanda-io/fix-domparser-error-doc
Fix domparser error doc
This commit is contained in:
@@ -11,9 +11,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
// Empty XML is a parse error (no root element)
|
|
||||||
const parser = new DOMParser();
|
const parser = new DOMParser();
|
||||||
testing.expectError('Error', () => parser.parseFromString('', 'text/xml'));
|
let d = parser.parseFromString('', 'text/xml');
|
||||||
|
testing.expectEqual('<parsererror>error</parsererror>', new XMLSerializer().serializeToString(d));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -86,15 +86,15 @@ pub fn parseFromString(
|
|||||||
var parser = Parser.init(arena, doc_node, page);
|
var parser = Parser.init(arena, doc_node, page);
|
||||||
parser.parseXML(html);
|
parser.parseXML(html);
|
||||||
|
|
||||||
if (parser.err) |pe| {
|
if (parser.err != null or doc_node.firstChild() == null) {
|
||||||
return pe.err;
|
// Return a document with a <parsererror> element per spec.
|
||||||
|
const err_doc = try page._factory.document(XMLDocument{ ._proto = undefined });
|
||||||
|
var err_parser = Parser.init(arena, err_doc.asNode(), page);
|
||||||
|
err_parser.parseXML("<parsererror xmlns=\"http://www.mozilla.org/newlayout/xml/parsererror.xml\">error</parsererror>");
|
||||||
|
return err_doc.asDocument();
|
||||||
}
|
}
|
||||||
|
|
||||||
const first_child = doc_node.firstChild() orelse {
|
const first_child = doc_node.firstChild().?;
|
||||||
// Empty XML or no root element - this is a parse error.
|
|
||||||
// TODO: Return a document with a <parsererror> element per spec.
|
|
||||||
return error.JsException;
|
|
||||||
};
|
|
||||||
|
|
||||||
// If first node is a `ProcessingInstruction`, skip it.
|
// If first node is a `ProcessingInstruction`, skip it.
|
||||||
if (first_child.getNodeType() == 7) {
|
if (first_child.getNodeType() == 7) {
|
||||||
|
|||||||
Reference in New Issue
Block a user