mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-21 18:00:16 +00:00
LibWeb: Frameset should be the body element if it comes before body
Fixes one WPT test: "Frameset followed by body inside the html element" http://wpt.live/html/dom/documents/dom-tree-accessors/Document.body.html
This commit is contained in:
parent
7c50903ddd
commit
5f9a36feac
Notes:
github-actions[bot]
2024-10-12 17:53:51 +00:00
Author: https://github.com/ronak69
Commit: 5f9a36feac
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/1745
Reviewed-by: https://github.com/ADKaster ✅
3 changed files with 26 additions and 6 deletions
|
@ -842,17 +842,18 @@ void Document::set_dir(String const& dir)
|
|||
html->set_dir(dir);
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/dom.html#the-body-element-2
|
||||
HTML::HTMLElement* Document::body()
|
||||
{
|
||||
// The body element of a document is the first of the html element's children that is either
|
||||
// a body element or a frameset element, or null if there is no such element.
|
||||
auto* html = html_element();
|
||||
if (!html)
|
||||
return nullptr;
|
||||
auto* first_body = html->first_child_of_type<HTML::HTMLBodyElement>();
|
||||
if (first_body)
|
||||
return first_body;
|
||||
auto* first_frameset = html->first_child_of_type<HTML::HTMLFrameSetElement>();
|
||||
if (first_frameset)
|
||||
return first_frameset;
|
||||
for (auto* child = html->first_child(); child; child = child->next_sibling()) {
|
||||
if (is<HTML::HTMLBodyElement>(*child) || is<HTML::HTMLFrameSetElement>(*child))
|
||||
return static_cast<HTML::HTMLElement*>(child);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue