blob: 1da557dd409739693a25bf3a4dd0e801d8d2203f [file] [log] [blame]
<!DOCTYPE html>
<div id="root"></div>
<script src="../resources/js-test.js"></script>
<script src="../resources/gc.js"></script>
<script>
description("Test for observer exceptions.");
let rootDiv = document.getElementById("root");
var exc;
try {
new IntersectionObserver(e => {}, {threshold: [1.1]});
testFailed("IntersectionObserver constructor did not throw due to invalid threshold.");
} catch(e) {
exc = e;
shouldBeType("exc", "RangeError");
}
try {
new IntersectionObserver(e => {}, {rootMargin: "1"});
testFailed("IntersectionObserver constructor did not throw due to invalid rootMargin.");
} catch(e) {
exc = e;
shouldBeType("exc", "DOMException");
shouldBe("exc.code", "DOMException.SYNTAX_ERR");
}
try {
new IntersectionObserver(e => {}, {rootMargin: "2em"});
testFailed("IntersectionObserver constructor did not throw due to invalid rootMargin.");
} catch(e) {
exc = e;
shouldBeType("exc", "DOMException");
shouldBe("exc.code", "DOMException.SYNTAX_ERR");
}
try {
new IntersectionObserver(e => {}, {rootMargin: "auto"});
testFailed("IntersectionObserver constructor did not throw due to invalid rootMargin.");
} catch(e) {
exc = e;
shouldBeType("exc", "DOMException");
shouldBe("exc.code", "DOMException.SYNTAX_ERR");
}
let observer = new IntersectionObserver(c => {}, {});
try {
observer.observe("foo");
testFailed("IntersectionObserver.observe with a bad target argument did not throw.");
} catch(e) {
exc = e;
shouldBeType("exc", "TypeError");
}
</script>