46 lines
1.7 KiB
HTML
46 lines
1.7 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>DOM getters should perform type checks</title>
|
|
<script src="../../resources/testharness.js"></script>
|
|
<script src="../../resources/testharnessreport.js"></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
var div = document.createElement("div");
|
|
var getter = Object.getOwnPropertyDescriptor(Element.prototype, "scrollTop").get;
|
|
|
|
test(() => {
|
|
assert_equals(typeof getter, "function");
|
|
}, "DOM getter should be a function");
|
|
|
|
test(() => {
|
|
assert_throws(new TypeError(), () => { getter(); }, "DOM getter throws an error with undefined");
|
|
assert_throws(new TypeError(), () => { getter.call(null); }, "DOM getter throws an error with null");
|
|
assert_throws(new TypeError(), () => { getter.call({}); }, "DOM getter throws an error with unrelated object");
|
|
assert_throws(new TypeError(), () => { getter.call(document.createText("Hello")); }, "DOM getter throws an error with unrelated DOM object");
|
|
}, "DOM getter throws an error with unrelated values");
|
|
|
|
test(() => {
|
|
assert_equals(typeof getter.call(div), "number");
|
|
}, "DOM getter works with element object");
|
|
|
|
test(() => {
|
|
var object = {
|
|
};
|
|
Object.defineProperty(object, "scrollTop", {
|
|
get: getter
|
|
});
|
|
assert_throws(new TypeError(), () => { object.scrollTop; });
|
|
}, "DOM getter access throws an error with unrelated object");
|
|
|
|
test(() => {
|
|
var object = {
|
|
__proto__: Element.prototype
|
|
};
|
|
assert_throws(new TypeError(), () => { object.scrollTop; });
|
|
}, "DOM getter access through Element.prototype throws an error with unrelated object");
|
|
</script>
|
|
</body>
|