LibWeb: Implement Range.commonAncestorContainer

This commit is contained in:
Andreas Kling 2022-02-25 20:45:03 +01:00
parent aec0e54f73
commit c25d653c31
Notes: sideshowbarker 2024-07-17 18:16:30 +09:00
3 changed files with 20 additions and 0 deletions

View File

@ -68,4 +68,20 @@ NonnullRefPtr<Range> Range::normalized() const
return inverted();
}
// https://dom.spec.whatwg.org/#dom-range-commonancestorcontainer
NonnullRefPtr<Node> Range::common_ancestor_container() const
{
// 1. Let container be start node.
auto container = m_start_container;
// 2. While container is not an inclusive ancestor of end node, let container be containers parent.
while (!container->is_inclusive_ancestor_of(m_end_container)) {
VERIFY(container->parent());
container = *container->parent();
}
// 3. Return container.
return container;
}
}

View File

@ -55,6 +55,8 @@ public:
NonnullRefPtr<Range> normalized() const;
NonnullRefPtr<Range> clone_range() const;
NonnullRefPtr<Node> common_ancestor_container() const;
private:
explicit Range(Document&);

View File

@ -6,6 +6,8 @@ interface Range {
readonly attribute boolean collapsed;
readonly attribute Node commonAncestorContainer;
readonly attribute Node startContainer;
readonly attribute unsigned long startOffset;
readonly attribute Node endContainer;