mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-01 07:52:50 +00:00
LibWeb: Don't assume IO.unobserve() called on observed element
It's perfectly possible for JavaScript to call unobserve() on an element that hasn't been observed. Let's stop asserting if that happens. :^) Fixes #22020
This commit is contained in:
parent
21d9da0f3b
commit
ef809eea1e
Notes:
sideshowbarker
2024-07-17 01:23:08 +09:00
Author: https://github.com/awesomekling
Commit: ef809eea1e
Pull-request: https://github.com/SerenityOS/serenity/pull/22024
Issue: https://github.com/SerenityOS/serenity/issues/22020
3 changed files with 13 additions and 1 deletions
|
@ -0,0 +1 @@
|
|||
PASS! (Didn't crash)
|
|
@ -0,0 +1,10 @@
|
|||
<body>
|
||||
<script src="../include.js"></script>
|
||||
<script>
|
||||
test(() => {
|
||||
let observer = new IntersectionObserver(function() {});
|
||||
let div = document.createElement("div");
|
||||
observer.unobserve(div);
|
||||
println("PASS! (Didn't crash)");
|
||||
});
|
||||
</script>
|
|
@ -2086,7 +2086,8 @@ void Element::register_intersection_observer(Badge<IntersectionObserver::Interse
|
|||
|
||||
void Element::unregister_intersection_observer(Badge<IntersectionObserver::IntersectionObserver>, JS::NonnullGCPtr<IntersectionObserver::IntersectionObserver> observer)
|
||||
{
|
||||
VERIFY(m_registered_intersection_observers);
|
||||
if (!m_registered_intersection_observers)
|
||||
return;
|
||||
m_registered_intersection_observers->remove_first_matching([&observer](IntersectionObserver::IntersectionObserverRegistration const& entry) {
|
||||
return entry.observer == observer;
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue