| <!DOCTYPE html> |
| <html> |
| <body> |
| <script src="../../resources/js-test-pre.js"></script> |
| <script> |
| description("Test that DOMRect's properties are on the prototype."); |
| |
| var rect = document.body.getBoundingClientRect(); |
| shouldBe("rect.__proto__", "DOMRect.prototype"); |
| shouldBe("rect.__proto__.__proto__", "DOMRectReadOnly.prototype"); |
| shouldBe("Object.getOwnPropertyNames(rect).length", "0"); |
| shouldBeFalse("Object.hasOwnProperty(rect, 'top')"); |
| shouldBeFalse("Object.hasOwnProperty(rect, 'right')"); |
| shouldBeFalse("Object.hasOwnProperty(rect, 'bottom')"); |
| shouldBeFalse("Object.hasOwnProperty(rect, 'left')"); |
| shouldBeFalse("Object.hasOwnProperty(rect, 'width')"); |
| shouldBeFalse("Object.hasOwnProperty(rect, 'height')"); |
| |
| function checkAttributeGetter(prototype, propertyName) |
| { |
| descriptor = Object.getOwnPropertyDescriptor(prototype, propertyName); |
| shouldBeType("descriptor.get", "Function"); |
| shouldBeTrue("descriptor.enumerable"); |
| shouldBeTrue("descriptor.configurable"); |
| } |
| |
| for (var propertyName of ['x', 'y', 'width', 'height']) { |
| debug(""); |
| debug("* rect.__proto__." + propertyName); |
| checkAttributeGetter(rect.__proto__, propertyName); |
| |
| debug(""); |
| debug("* DOMRect.prototype." + propertyName); |
| checkAttributeGetter(DOMRect.prototype, propertyName); |
| } |
| |
| for (var propertyName of ['x', 'y', 'width', 'height', 'top', 'right', 'bottom', 'left']) { |
| debug(""); |
| debug("* rect.__proto__.__proto__." + propertyName); |
| checkAttributeGetter(rect.__proto__.__proto__, propertyName); |
| |
| debug(""); |
| debug("* DOMRectReadonly.prototype." + propertyName); |
| checkAttributeGetter(DOMRectReadOnly.prototype, propertyName); |
| } |
| |
| debug(""); |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |