blob: baeac0b919a848afa64d622c70c573762a117c6a [file] [log] [blame]
<!DOCTYPE html><!-- webkit-test-runner [ ResizeObserverEnabled=true ] -->
<html>
<head>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="../resources/gc.js"></script>
</head>
<body>
<div id="target1" style="width:100px;height:100px;">t1
</div>
<script>
function startTest() {
// Delete the next observer.
let notifiedObserver1 = false;
let observer1 = new ResizeObserver( entries => {
if (observer2) {
observer2.disconnect();
observer2 = null;
gc();
}
notifiedObserver1 = true;
});
// Deleted before delivering.
let observer2 = new ResizeObserver( entries => {
assert_unreached("observer2 is deleted before notifying");
} );
// Delete the provious observer.
let notifiedObserver3 = false;
let observer3 = new ResizeObserver( entries => {
if (observer1) {
assert_true(notifiedObserver1, "observer1 is notified before observer3");
observer1.disconnect();
observer1 = null;
gc();
}
notifiedObserver3 = true;
});
// observer4 should be notified.
let observer4 = new ResizeObserver( entries => {
assert_true(notifiedObserver3, "observer3 is notified before observer4");
done();
});
let t1 = document.querySelector('#target1');
observer1.observe(t1);
observer2.observe(t1);
observer3.observe(t1);
observer4.observe(t1);
}
test(_ => {
assert_own_property(window, "ResizeObserver");
}, "ResizeObserver implemented");
promise_test(async () => {
return startTest();
}, 'Test deleting observer in callbacks');
</script>
</body>
</html>