Various CanGc fixes in components/script/dom (#33706)

* Propagate 'can_gc' in IFrame DOM code

Signed-off-by: webbeef <me@webbeef.org>

* Propagate 'can_gc' in HTML video and image elements

Signed-off-by: webbeef <me@webbeef.org>

* Propagate 'can_gc' in Blob and dependencies

Signed-off-by: webbeef <me@webbeef.org>

* Leftover can_gc fixes for HTMLMediaElement

Signed-off-by: webbeef <me@webbeef.org>

* Address comment

Signed-off-by: webbeef <me@webbeef.org>

---------

Signed-off-by: webbeef <me@webbeef.org>
This commit is contained in:
webbeef 2024-10-07 19:30:04 -07:00 committed by GitHub
parent 7d931e673a
commit d3c0785d64
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 67 additions and 42 deletions

View file

@ -182,6 +182,7 @@ impl TestBindingMethods for TestBinding {
Blob::new(
&self.global(),
BlobImpl::new_from_bytes(vec![], "".to_owned()),
CanGc::note(),
)
}
fn SetInterfaceAttribute(&self, _: &Blob) {}
@ -327,6 +328,7 @@ impl TestBindingMethods for TestBinding {
Some(Blob::new(
&self.global(),
BlobImpl::new_from_bytes(vec![], "".to_owned()),
CanGc::note(),
))
}
fn SetInterfaceAttributeNullable(&self, _: Option<&Blob>) {}
@ -421,6 +423,7 @@ impl TestBindingMethods for TestBinding {
Blob::new(
&self.global(),
BlobImpl::new_from_bytes(vec![], "".to_owned()),
CanGc::note(),
)
}
fn ReceiveAny(&self, _: SafeJSContext) -> JSVal {
@ -469,6 +472,7 @@ impl TestBindingMethods for TestBinding {
vec![Blob::new(
&self.global(),
BlobImpl::new_from_bytes(vec![], "".to_owned()),
CanGc::note(),
)]
}
fn ReceiveUnionIdentity(
@ -534,6 +538,7 @@ impl TestBindingMethods for TestBinding {
Some(Blob::new(
&self.global(),
BlobImpl::new_from_bytes(vec![], "".to_owned()),
CanGc::note(),
))
}
fn ReceiveNullableObject(&self, cx: SafeJSContext) -> Option<NonNull<JSObject>> {
@ -1030,7 +1035,7 @@ impl TestBindingMethods for TestBinding {
}
}
impl Callback for SimpleHandler {
fn callback(&self, cx: SafeJSContext, v: HandleValue, realm: InRealm) {
fn callback(&self, cx: SafeJSContext, v: HandleValue, realm: InRealm, _can_gc: CanGc) {
let global = GlobalScope::from_safe_context(cx, realm);
let _ = self.handler.Call_(&*global, v, ExceptionHandling::Report);
}