diff options
author | Josh Matthews <josh@joshmatthews.net> | 2024-10-22 05:35:20 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-22 09:35:20 +0000 |
commit | 575e8855294a9ee2094b110a7c1fea868e69251e (patch) | |
tree | 261ab3e890b9125e9e08f97366de34213eb67467 /components/script/dom/permissions.rs | |
parent | edc304854ff18bc686f8e2adc6cb64cbad181598 (diff) | |
download | servo-575e8855294a9ee2094b110a7c1fea868e69251e.tar.gz servo-575e8855294a9ee2094b110a7c1fea868e69251e.zip |
Mark promise creation methods with CanGc (#33928)
* Add CanGc annotations to promise constructor.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
* Propagate CanGc arguments for Promise::new_in_current_realm.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
* Fix out-of-order entries.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
* Propagate CanGc from Promise::new.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
* Suppress clippy warning.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
* Formatting.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
---------
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Diffstat (limited to 'components/script/dom/permissions.rs')
-rw-r--r-- | components/script/dom/permissions.rs | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/components/script/dom/permissions.rs b/components/script/dom/permissions.rs index 48d07eebcb3..558241993c2 100644 --- a/components/script/dom/permissions.rs +++ b/components/script/dom/permissions.rs @@ -25,7 +25,7 @@ use crate::dom::globalscope::GlobalScope; use crate::dom::permissionstatus::PermissionStatus; use crate::dom::promise::Promise; use crate::realms::{AlreadyInRealm, InRealm}; -use crate::script_runtime::JSContext; +use crate::script_runtime::{CanGc, JSContext}; pub trait PermissionAlgorithm { type Descriptor; @@ -82,13 +82,14 @@ impl Permissions { cx: JSContext, permissionDesc: *mut JSObject, promise: Option<Rc<Promise>>, + can_gc: CanGc, ) -> Rc<Promise> { // (Query, Request) Step 3. let p = match promise { Some(promise) => promise, None => { let in_realm_proof = AlreadyInRealm::assert(); - Promise::new_in_current_realm(InRealm::Already(&in_realm_proof)) + Promise::new_in_current_realm(InRealm::Already(&in_realm_proof), can_gc) }, }; @@ -177,7 +178,9 @@ impl Permissions { }; match op { // (Revoke) Step 5. - Operation::Revoke => self.manipulate(Operation::Query, cx, permissionDesc, Some(p)), + Operation::Revoke => { + self.manipulate(Operation::Query, cx, permissionDesc, Some(p), can_gc) + }, // (Query, Request) Step 4. _ => p, @@ -188,18 +191,18 @@ impl Permissions { #[allow(non_snake_case)] impl PermissionsMethods for Permissions { // https://w3c.github.io/permissions/#dom-permissions-query - fn Query(&self, cx: JSContext, permissionDesc: *mut JSObject) -> Rc<Promise> { - self.manipulate(Operation::Query, cx, permissionDesc, None) + fn Query(&self, cx: JSContext, permissionDesc: *mut JSObject, can_gc: CanGc) -> Rc<Promise> { + self.manipulate(Operation::Query, cx, permissionDesc, None, can_gc) } // https://w3c.github.io/permissions/#dom-permissions-request - fn Request(&self, cx: JSContext, permissionDesc: *mut JSObject) -> Rc<Promise> { - self.manipulate(Operation::Request, cx, permissionDesc, None) + fn Request(&self, cx: JSContext, permissionDesc: *mut JSObject, can_gc: CanGc) -> Rc<Promise> { + self.manipulate(Operation::Request, cx, permissionDesc, None, can_gc) } // https://w3c.github.io/permissions/#dom-permissions-revoke - fn Revoke(&self, cx: JSContext, permissionDesc: *mut JSObject) -> Rc<Promise> { - self.manipulate(Operation::Revoke, cx, permissionDesc, None) + fn Revoke(&self, cx: JSContext, permissionDesc: *mut JSObject, can_gc: CanGc) -> Rc<Promise> { + self.manipulate(Operation::Revoke, cx, permissionDesc, None, can_gc) } } |