From 9a8a5bdbf7b035f3d9a70e9e8e3aaecdb35ef7d1 Mon Sep 17 00:00:00 2001 From: Delan Azabani Date: Thu, 9 Mar 2023 20:33:39 +0800 Subject: [PATCH] make ownPropertyKeys trap return @@toStringTag key MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes the failures in the “[[OwnPropertyKeys]]” subtest. --- components/script/window_named_properties.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/components/script/window_named_properties.rs b/components/script/window_named_properties.rs index 89a8c185c23..abe42825758 100644 --- a/components/script/window_named_properties.rs +++ b/components/script/window_named_properties.rs @@ -11,8 +11,13 @@ use crate::dom::window::Window; use crate::js::conversions::ToJSValConvertible; use crate::script_runtime::JSContext as SafeJSContext; use js::conversions::jsstr_to_string; -use js::glue::{CreateProxyHandler, NewProxyObject, ProxyTraps}; -use js::jsapi::{GetWellKnownSymbol, JS_SetImmutablePrototype, SymbolCode}; +use js::glue::{ + AppendToIdVector, CreateProxyHandler, NewProxyObject, ProxyTraps, RUST_SYMBOL_TO_JSID, +}; +use js::jsapi::{ + jsid, GetPropertyKeys, GetWellKnownSymbol, JS_SetImmutablePrototype, SymbolCode, JSITER_HIDDEN, + JSITER_OWNONLY, JSITER_SYMBOLS, +}; use js::jsapi::{ Handle, HandleObject, JSClass, JSContext, JSErrNum, MutableHandleObject, UndefinedHandleValue, }; @@ -147,11 +152,12 @@ unsafe extern "C" fn get_own_property_descriptor( #[allow(unsafe_code)] unsafe extern "C" fn own_property_keys( - _cx: *mut JSContext, + cx: *mut JSContext, _proxy: HandleObject, - _props: MutableHandleIdVector, + props: MutableHandleIdVector, ) -> bool { - // FIXME(pylbrecht): dummy implementation + rooted!(in(cx) let mut rooted = SymbolId(GetWellKnownSymbol(cx, SymbolCode::toStringTag))); + AppendToIdVector(props, rooted.handle().into()); true }