Replace unsafe uses of HandleValueArray. (#34588)

* Replace unsafe uses of HandleValueArray.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* Fix clippy lint.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

---------

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
Josh Matthews 2024-12-13 18:21:55 -05:00 committed by GitHub
parent 2328145c25
commit a85241e635
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 33 additions and 106 deletions

View file

@ -268,7 +268,7 @@ impl PaintWorkletGlobalScope {
Entry::Occupied(entry) => paint_instance.set(entry.get().get()),
Entry::Vacant(entry) => {
// Step 5.2-5.3
let args = HandleValueArray::new();
let args = HandleValueArray::empty();
rooted!(in(*cx) let mut result = null_mut::<JSObject>());
unsafe {
Construct1(*cx, class_constructor.handle(), &args, result.handle_mut());
@ -306,23 +306,22 @@ impl PaintWorkletGlobalScope {
// TODO: Step 10
// Steps 11-12
debug!("Invoking paint function {}.", name);
rooted_vec!(let arguments_values <- arguments.iter().cloned()
.map(|argument| CSSStyleValue::new(self.upcast(), argument)));
let arguments_value_vec: Vec<JSVal> = arguments_values
.iter()
.map(|argument| ObjectValue(argument.reflector().get_jsobject().get()))
.collect();
let arguments_value_array =
unsafe { HandleValueArray::from_rooted_slice(&arguments_value_vec) };
rooted_vec!(let mut arguments_values);
for argument in arguments {
let style_value = CSSStyleValue::new(self.upcast(), argument.clone());
arguments_values.push(ObjectValue(style_value.reflector().get_jsobject().get()));
}
let arguments_value_array = HandleValueArray::from(&arguments_values);
rooted!(in(*cx) let argument_object = unsafe { NewArrayObject(*cx, &arguments_value_array) });
let args_slice = [
ObjectValue(rendering_context.reflector().get_jsobject().get()),
ObjectValue(paint_size.reflector().get_jsobject().get()),
ObjectValue(properties.reflector().get_jsobject().get()),
ObjectValue(argument_object.get()),
];
let args = unsafe { HandleValueArray::from_rooted_slice(&args_slice) };
rooted_vec!(let mut callback_args);
callback_args.push(ObjectValue(
rendering_context.reflector().get_jsobject().get(),
));
callback_args.push(ObjectValue(paint_size.reflector().get_jsobject().get()));
callback_args.push(ObjectValue(properties.reflector().get_jsobject().get()));
callback_args.push(ObjectValue(argument_object.get()));
let args = HandleValueArray::from(&callback_args);
rooted!(in(*cx) let mut result = UndefinedValue());
unsafe {