aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Wülker <simon.wuelker@arcor.de>2025-05-24 18:02:08 +0200
committerGitHub <noreply@github.com>2025-05-24 16:02:08 +0000
commit4ae72ecb8ea9af2d1e8a6be537f7616e7ecaf8ab (patch)
tree59fcd6457d21b54657a49f7aab3b9fb86d41bd07
parent60eb7c923dbb0da826e348ff0765076c7546c8f3 (diff)
downloadservo-4ae72ecb8ea9af2d1e8a6be537f7616e7ecaf8ab.tar.gz
servo-4ae72ecb8ea9af2d1e8a6be537f7616e7ecaf8ab.zip
Make unscopable objects writable and enumerable (#37119)
Testing: Covered by existing web platform tests Fixes: https://github.com/servo/servo/issues/37118 --------- Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
-rw-r--r--components/script_bindings/interface.rs8
-rw-r--r--tests/wpt/meta/dom/idlharness.window.js.ini69
2 files changed, 4 insertions, 73 deletions
diff --git a/components/script_bindings/interface.rs b/components/script_bindings/interface.rs
index 08ee0a4f420..2491924d0c0 100644
--- a/components/script_bindings/interface.rs
+++ b/components/script_bindings/interface.rs
@@ -18,9 +18,9 @@ use js::jsapi::{
JS_AtomizeAndPinString, JS_GetFunctionObject, JS_GetProperty, JS_IterateCompartments,
JS_NewFunction, JS_NewGlobalObject, JS_NewObject, JS_NewPlainObject, JS_NewStringCopyN,
JS_SetReservedSlot, JS_WrapObject, JSAutoRealm, JSClass, JSClassOps, JSContext,
- JSFUN_CONSTRUCTOR, JSFunctionSpec, JSObject, JSPROP_PERMANENT, JSPROP_READONLY,
- JSPROP_RESOLVING, JSPropertySpec, JSString, JSTracer, ObjectOps, OnNewGlobalHookOption,
- SymbolCode, TrueHandleValue, Value, jsid,
+ JSFUN_CONSTRUCTOR, JSFunctionSpec, JSObject, JSPROP_ENUMERATE, JSPROP_PERMANENT,
+ JSPROP_READONLY, JSPROP_RESOLVING, JSPropertySpec, JSString, JSTracer, ObjectOps,
+ OnNewGlobalHookOption, SymbolCode, TrueHandleValue, Value, jsid,
};
use js::jsval::{JSVal, NullValue, PrivateValue};
use js::rust::wrappers::{
@@ -481,7 +481,7 @@ fn create_unscopable_object(cx: SafeJSContext, names: &[&CStr], mut rval: Mutabl
rval.handle(),
name.as_ptr(),
HandleValue::from_raw(TrueHandleValue),
- JSPROP_READONLY as u32,
+ JSPROP_ENUMERATE as u32,
));
}
}
diff --git a/tests/wpt/meta/dom/idlharness.window.js.ini b/tests/wpt/meta/dom/idlharness.window.js.ini
index f66b84985ad..3ad37c3770f 100644
--- a/tests/wpt/meta/dom/idlharness.window.js.ini
+++ b/tests/wpt/meta/dom/idlharness.window.js.ini
@@ -1,10 +1,4 @@
[idlharness.window.html?exclude=Node]
- [Element interface: operation replaceWith((Node or DOMString)...)]
- expected: FAIL
-
- [Document interface: operation prepend((Node or DOMString)...)]
- expected: FAIL
-
[AbortSignal must be primary interface of new AbortController().signal]
expected: FAIL
@@ -35,54 +29,30 @@
[AbortController interface: operation abort()]
expected: FAIL
- [Element interface: operation prepend((Node or DOMString)...)]
- expected: FAIL
-
[AbortController interface: attribute signal]
expected: FAIL
- [CharacterData interface: operation before((Node or DOMString)...)]
- expected: FAIL
-
[AbortSignal interface: attribute aborted]
expected: FAIL
- [Element interface: operation after((Node or DOMString)...)]
- expected: FAIL
-
[CharacterData interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
- [CharacterData interface: operation remove()]
- expected: FAIL
-
[AbortController interface: new AbortController() must inherit property "signal" with the proper type]
expected: FAIL
[AbortController interface: new AbortController() must inherit property "abort()" with the proper type]
expected: FAIL
- [Element interface: attribute slot]
- expected: FAIL
-
[DocumentType interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
- [CharacterData interface: operation replaceWith((Node or DOMString)...)]
- expected: FAIL
-
- [DocumentType interface: operation replaceWith((Node or DOMString)...)]
- expected: FAIL
-
[EventTarget interface: calling dispatchEvent(Event) on new AbortController().signal with too few arguments must throw TypeError]
expected: FAIL
[DocumentFragment interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
- [DocumentType interface: operation before((Node or DOMString)...)]
- expected: FAIL
-
[AbortSignal interface: new AbortController().signal must inherit property "aborted" with the proper type]
expected: FAIL
@@ -104,51 +74,15 @@
[AbortSignal interface: existence and properties of interface prototype object]
expected: FAIL
- [Element interface: operation remove()]
- expected: FAIL
-
- [DocumentFragment interface: operation replaceChildren((Node or DOMString)...)]
- expected: FAIL
-
[NodeFilter interface: existence and properties of interface object]
expected: FAIL
[Stringification of new AbortController().signal]
expected: FAIL
- [CharacterData interface: operation after((Node or DOMString)...)]
- expected: FAIL
-
- [Element interface: operation replaceChildren((Node or DOMString)...)]
- expected: FAIL
-
- [DocumentFragment interface: operation prepend((Node or DOMString)...)]
- expected: FAIL
-
- [Document interface: operation replaceChildren((Node or DOMString)...)]
- expected: FAIL
-
- [Document interface: operation append((Node or DOMString)...)]
- expected: FAIL
-
- [DocumentType interface: operation remove()]
- expected: FAIL
-
- [DocumentType interface: operation after((Node or DOMString)...)]
- expected: FAIL
-
[Element interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
- [DocumentFragment interface: operation append((Node or DOMString)...)]
- expected: FAIL
-
- [Element interface: operation append((Node or DOMString)...)]
- expected: FAIL
-
- [Element interface: operation before((Node or DOMString)...)]
- expected: FAIL
-
[XPathNSResolver interface: document.createNSResolver(document.body) must inherit property "lookupNamespaceURI(DOMString?)" with the proper type]
expected: FAIL
@@ -454,6 +388,3 @@
[Element interface: element must inherit property "customElementRegistry" with the proper type]
expected: FAIL
-
-
-[idlharness.window.html?include=Node]