make ownPropertyKeys trap return @@toStringTag key

This fixes the failures in the “[[OwnPropertyKeys]]” subtest.
This commit is contained in:
Delan Azabani 2023-03-09 20:33:39 +08:00
parent bbaacb7b2d
commit 9a8a5bdbf7

View file

@ -11,8 +11,13 @@ use crate::dom::window::Window;
use crate::js::conversions::ToJSValConvertible; use crate::js::conversions::ToJSValConvertible;
use crate::script_runtime::JSContext as SafeJSContext; use crate::script_runtime::JSContext as SafeJSContext;
use js::conversions::jsstr_to_string; use js::conversions::jsstr_to_string;
use js::glue::{CreateProxyHandler, NewProxyObject, ProxyTraps}; use js::glue::{
use js::jsapi::{GetWellKnownSymbol, JS_SetImmutablePrototype, SymbolCode}; 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::{ use js::jsapi::{
Handle, HandleObject, JSClass, JSContext, JSErrNum, MutableHandleObject, UndefinedHandleValue, Handle, HandleObject, JSClass, JSContext, JSErrNum, MutableHandleObject, UndefinedHandleValue,
}; };
@ -147,11 +152,12 @@ unsafe extern "C" fn get_own_property_descriptor(
#[allow(unsafe_code)] #[allow(unsafe_code)]
unsafe extern "C" fn own_property_keys( unsafe extern "C" fn own_property_keys(
_cx: *mut JSContext, cx: *mut JSContext,
_proxy: HandleObject, _proxy: HandleObject,
_props: MutableHandleIdVector, props: MutableHandleIdVector,
) -> bool { ) -> bool {
// FIXME(pylbrecht): dummy implementation rooted!(in(cx) let mut rooted = SymbolId(GetWellKnownSymbol(cx, SymbolCode::toStringTag)));
AppendToIdVector(props, rooted.handle().into());
true true
} }