feat: add can_gc argument to to_frozen_array (#36043)

* feat: add can_gc argument to to_frozen_array

Signed-off-by: Arya Nair <aryaajitnair@gmail.com>

* fix: linting issues

Signed-off-by: Arya Nair <aryaajitnair@gmail.com>

* feat: add can_gc in binding.conf

Signed-off-by: Arya Nair <aryaajitnair@gmail.com>

* fix: linting issues

Signed-off-by: Arya Nair <aryaajitnair@gmail.com>

---------

Signed-off-by: Arya Nair <aryaajitnair@gmail.com>
This commit is contained in:
Arya Nair 2025-03-19 23:33:09 +05:30 committed by GitHub
parent 0917e080df
commit cb56ac8561
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 97 additions and 43 deletions

View file

@ -85,9 +85,9 @@ impl XRBoundedReferenceSpaceMethods<crate::DomTypeHolder> for XRBoundedReference
})
.collect();
to_frozen_array(&points, cx, retval)
to_frozen_array(&points, cx, retval, can_gc)
} else {
to_frozen_array::<DomRoot<DOMPointReadOnly>>(&[], cx, retval)
to_frozen_array::<DomRoot<DOMPointReadOnly>>(&[], cx, retval, can_gc)
}
}
}

View file

@ -88,9 +88,9 @@ impl XRInputSourcesChangeEvent {
let _ac = enter_realm(global);
let cx = GlobalScope::get_cx();
rooted!(in(*cx) let mut frozen_val: JSVal);
to_frozen_array(added, cx, frozen_val.handle_mut());
to_frozen_array(added, cx, frozen_val.handle_mut(), can_gc);
changeevent.added.set(*frozen_val);
to_frozen_array(removed, cx, frozen_val.handle_mut());
to_frozen_array(removed, cx, frozen_val.handle_mut(), can_gc);
changeevent.removed.set(*frozen_val);
changeevent
}

View file

@ -149,10 +149,10 @@ impl XRRenderStateMethods<crate::DomTypeHolder> for XRRenderState {
}
/// <https://immersive-web.github.io/layers/#dom-xrrenderstate-layers>
fn Layers(&self, cx: JSContext, retval: MutableHandleValue) {
fn Layers(&self, cx: JSContext, can_gc: CanGc, retval: MutableHandleValue) {
// TODO: cache this array?
let layers = self.layers.borrow();
let layers: Vec<&XRLayer> = layers.iter().map(|x| &**x).collect();
to_frozen_array(&layers[..], cx, retval)
to_frozen_array(&layers[..], cx, retval, can_gc)
}
}

View file

@ -1006,10 +1006,10 @@ impl XRSessionMethods<crate::DomTypeHolder> for XRSession {
}
/// <https://www.w3.org/TR/webxr/#dom-xrsession-enabledfeatures>
fn EnabledFeatures(&self, cx: JSContext, retval: MutableHandleValue) {
fn EnabledFeatures(&self, cx: JSContext, can_gc: CanGc, retval: MutableHandleValue) {
let session = self.session.borrow();
let features = session.granted_features();
to_frozen_array(features, cx, retval)
to_frozen_array(features, cx, retval, can_gc)
}
/// <https://www.w3.org/TR/webxr/#dom-xrsession-issystemkeyboardsupported>