64 lines
2.3 KiB
HTML
64 lines
2.3 KiB
HTML
<!DOCTYPE html>
|
|
<script src="../resources/js-test-pre.js"></script>
|
|
<script>
|
|
description("Tests that Object.getOwnPropertyDescriptor() works correctly for [Unforgeable] IDL attributes.");
|
|
|
|
function checkUnforgeablePropertyDescriptor(descriptor, readOnly)
|
|
{
|
|
shouldBeType("descriptor.get", "Function");
|
|
if (readOnly)
|
|
shouldBeUndefined("descriptor.set");
|
|
else
|
|
shouldBeType("descriptor.set", "Function");
|
|
shouldBeTrue("descriptor.enumerable");
|
|
shouldBeFalse("descriptor.configurable");
|
|
invalidObject = { };
|
|
shouldThrow("descriptor.get.call(invalidObject)");
|
|
}
|
|
|
|
debug("* Document.location");
|
|
descriptor = Object.getOwnPropertyDescriptor(document, "location");
|
|
checkUnforgeablePropertyDescriptor(descriptor);
|
|
shouldBe("descriptor.get.call(document)", "document.location");
|
|
|
|
var locationProperties = Object.getOwnPropertyNames(document.location);
|
|
for (var i = 0; i < locationProperties.length; i++) {
|
|
var propertyName = locationProperties[i];
|
|
descriptor = Object.getOwnPropertyDescriptor(document.location, propertyName);
|
|
if (descriptor.value)
|
|
continue;
|
|
|
|
debug("");
|
|
debug("* Location." + propertyName);
|
|
var isReadOnly = propertyName == "origin" || propertyName == "ancestorOrigins";
|
|
checkUnforgeablePropertyDescriptor(descriptor, isReadOnly);
|
|
if (propertyName != "ancestorOrigins")
|
|
shouldBeTrue("descriptor.get.call(document.location) === document.location." + propertyName);
|
|
}
|
|
|
|
debug("");
|
|
debug("* Window.location");
|
|
descriptor = Object.getOwnPropertyDescriptor(window, "location");
|
|
checkUnforgeablePropertyDescriptor(descriptor);
|
|
shouldBeTrue("descriptor.get.call(window) === window.location");
|
|
|
|
debug("");
|
|
debug("* Window.window");
|
|
descriptor = Object.getOwnPropertyDescriptor(window, "window");
|
|
checkUnforgeablePropertyDescriptor(descriptor, true);
|
|
shouldBeTrue("descriptor.get.call(window) === window.window");
|
|
|
|
debug("");
|
|
debug("* Window.top");
|
|
descriptor = Object.getOwnPropertyDescriptor(window, "top");
|
|
checkUnforgeablePropertyDescriptor(descriptor, true);
|
|
shouldBeTrue("descriptor.get.call(window) === window.top");
|
|
|
|
debug("");
|
|
debug("* Window.document");
|
|
descriptor = Object.getOwnPropertyDescriptor(window, "document");
|
|
checkUnforgeablePropertyDescriptor(descriptor, true);
|
|
|
|
</script>
|
|
<script src="../resources/js-test-post.js"></script>
|