mirror of
https://github.com/RGBCube/serenity
synced 2025-05-29 20:25:12 +00:00
LibWeb: Implement the rest of the Adoption Agency Algorithm
This gets us 2 points on html5test.com :^) - Before: https://html5te.st/4cf57659bc08272e (208) - After: https://html5te.st/fb8a9259bda1c115 (210)
This commit is contained in:
parent
e165ae5b60
commit
1d95745901
6 changed files with 226 additions and 30 deletions
|
@ -134,4 +134,32 @@ DOM::Element* StackOfOpenElements::element_immediately_above(DOM::Element const&
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
void StackOfOpenElements::remove(const DOM::Element& element)
|
||||
{
|
||||
m_elements.remove_first_matching([&element](DOM::Element const& other) {
|
||||
return &other == &element;
|
||||
});
|
||||
}
|
||||
|
||||
void StackOfOpenElements::replace(const DOM::Element& to_remove, NonnullRefPtr<DOM::Element> to_add)
|
||||
{
|
||||
for (size_t i = 0; i < m_elements.size(); i++) {
|
||||
if (&m_elements[i] == &to_remove) {
|
||||
m_elements.remove(i);
|
||||
m_elements.insert(i, move(to_add));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void StackOfOpenElements::insert_immediately_below(NonnullRefPtr<DOM::Element> element_to_add, DOM::Element const& target)
|
||||
{
|
||||
for (size_t i = 0; i < m_elements.size(); i++) {
|
||||
if (&m_elements[i] == &target) {
|
||||
m_elements.insert(i + 1, move(element_to_add));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue