LibWeb: Implement getting the top-level traversable of a navigable

This commit is contained in:
Andreas Kling 2022-12-12 12:17:46 +01:00
parent 05dc1da321
commit 54e01824c7
Notes: sideshowbarker 2024-07-16 21:34:08 +09:00
2 changed files with 15 additions and 0 deletions

View File

@ -95,4 +95,18 @@ JS::GCPtr<TraversableNavigable> Navigable::traversable_navigable()
return static_cast<TraversableNavigable*>(navigable);
}
// https://html.spec.whatwg.org/multipage/document-sequences.html#nav-top
JS::GCPtr<TraversableNavigable> Navigable::top_level_traversable()
{
// 1. Let navigable be inputNavigable.
auto navigable = this;
// 2. While navigable's parent is not null, set navigable to navigable's parent.
while (navigable->parent())
navigable = navigable->parent();
// 3. Return navigable.
return verify_cast<TraversableNavigable>(navigable);
}
}

View File

@ -41,6 +41,7 @@ public:
void set_container(JS::GCPtr<NavigableContainer>);
JS::GCPtr<TraversableNavigable> traversable_navigable();
JS::GCPtr<TraversableNavigable> top_level_traversable();
protected:
Navigable();