ladybird/Tests/LibWeb/Text/input/namespace-objects-default-property-attributes.html
Luke Wilde f1801fb1d2 LibWeb: Make namespace attributes writable and configurable by default
This matches the prototype attributes.

Used by https://chatgpt.com/, where it runs this code:
```js
CSS.supports('animation-timeline: --works')
```
If this returns false, it will attempt to polyfill Animation Timeline
and override CSS.supports to support Animation Timeline properties.
2025-02-07 15:36:02 +01:00

38 lines
1.6 KiB
HTML

<!DOCTYPE html>
<script src="include.js"></script>
<script>
test(() => {
"use strict";
println("== CSS property descriptors");
const cssNamespaceDescriptors = Object.getOwnPropertyDescriptors(CSS);
const cssNamespaceKeys = Object.keys(cssNamespaceDescriptors);
for (const key of cssNamespaceKeys) {
const descriptor = cssNamespaceDescriptors[key];
println(`${key} writable: ${descriptor.writable}`);
println(`${key} configurable: ${descriptor.configurable}`);
println(`${key} enumerable: ${descriptor.enumerable}`);
if (descriptor.writable) {
println(`${key} value before: ${CSS[key]}`);
CSS[key] = "replaced";
println(`${key} value after: ${CSS[key]}`);
}
}
println("== WebAssembly property descriptors");
const wasmNamespaceDescriptors = Object.getOwnPropertyDescriptors(WebAssembly);
const wasmNamespaceKeys = Object.keys(wasmNamespaceDescriptors);
for (const key of wasmNamespaceKeys) {
const descriptor = wasmNamespaceDescriptors[key];
println(`${key} writable: ${descriptor.writable}`);
println(`${key} configurable: ${descriptor.configurable}`);
println(`${key} enumerable: ${descriptor.enumerable}`);
if (descriptor.writable) {
println(`${key} value before: ${WebAssembly[key]}`);
WebAssembly[key] = "replaced";
println(`${key} value after: ${WebAssembly[key]}`);
}
}
});
</script>