aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/permissions.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2024-10-22 05:35:20 -0400
committerGitHub <noreply@github.com>2024-10-22 09:35:20 +0000
commit575e8855294a9ee2094b110a7c1fea868e69251e (patch)
tree261ab3e890b9125e9e08f97366de34213eb67467 /components/script/dom/permissions.rs
parentedc304854ff18bc686f8e2adc6cb64cbad181598 (diff)
downloadservo-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.rs21
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)
}
}