66 lines
1.7 KiB
HTML
66 lines
1.7 KiB
HTML
<!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>
|