mirror of
https://github.com/servo/servo.git
synced 2025-10-17 00:39:15 +01:00
34 lines
1.6 KiB
JavaScript
34 lines
1.6 KiB
JavaScript
"use strict";
|
|
|
|
const namedPropertiesObject = Object.getPrototypeOf(Window.prototype);
|
|
|
|
test(() => {
|
|
assert_own_property(namedPropertiesObject, Symbol.toStringTag);
|
|
|
|
const propDesc = Object.getOwnPropertyDescriptor(namedPropertiesObject, Symbol.toStringTag);
|
|
assert_equals(propDesc.value, "WindowProperties", "value");
|
|
assert_equals(propDesc.configurable, true, "configurable");
|
|
assert_equals(propDesc.enumerable, false, "enumerable");
|
|
assert_equals(propDesc.writable, false, "writable");
|
|
}, "@@toStringTag exists with the appropriate descriptor");
|
|
|
|
test(() => {
|
|
assert_equals(Object.prototype.toString.call(namedPropertiesObject), "[object WindowProperties]");
|
|
}, "Object.prototype.toString");
|
|
|
|
test(t => {
|
|
assert_own_property(namedPropertiesObject, Symbol.toStringTag, "Precondition for this test: @@toStringTag exists");
|
|
|
|
t.add_cleanup(() => {
|
|
Object.defineProperty(namedPropertiesObject, Symbol.toStringTag, { value: "WindowProperties" });
|
|
});
|
|
|
|
Object.defineProperty(namedPropertiesObject, Symbol.toStringTag, { value: "NotWindowProperties" });
|
|
assert_equals(Object.prototype.toString.call(namedPropertiesObject), "[object NotWindowProperties]");
|
|
}, "Object.prototype.toString applied after modifying @@toStringTag");
|
|
|
|
// Chrome had a bug (https://bugs.chromium.org/p/chromium/issues/detail?id=793406) where if there
|
|
// was no @@toStringTag, it would fall back to a magic class string. Tests for this are present in
|
|
// the sibling class-string*.any.js tests. However, the named properties object always fails calls
|
|
// to [[DefineOwnProperty]] or [[SetPrototypeOf]] per the Web IDL spec, so there is no way to
|
|
// trigger the buggy behavior for it.
|