aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/subtlecrypto.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/subtlecrypto.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/subtlecrypto.rs')
-rw-r--r--components/script/dom/subtlecrypto.rs24
1 files changed, 17 insertions, 7 deletions
diff --git a/components/script/dom/subtlecrypto.rs b/components/script/dom/subtlecrypto.rs
index 6f2bef75990..4f125f2e925 100644
--- a/components/script/dom/subtlecrypto.rs
+++ b/components/script/dom/subtlecrypto.rs
@@ -43,7 +43,7 @@ use crate::dom::promise::Promise;
use crate::dom::window::Window;
use crate::dom::workerglobalscope::WorkerGlobalScope;
use crate::realms::InRealm;
-use crate::script_runtime::JSContext;
+use crate::script_runtime::{CanGc, JSContext};
use crate::task::TaskCanceller;
use crate::task_source::dom_manipulation::DOMManipulationTaskSource;
use crate::task_source::TaskSource;
@@ -141,9 +141,10 @@ impl SubtleCryptoMethods for SubtleCrypto {
key: &CryptoKey,
data: ArrayBufferViewOrArrayBuffer,
comp: InRealm,
+ can_gc: CanGc,
) -> Rc<Promise> {
let normalized_algorithm = normalize_algorithm(cx, algorithm, "encrypt");
- let promise = Promise::new_in_current_realm(comp);
+ let promise = Promise::new_in_current_realm(comp, can_gc);
let data = match data {
ArrayBufferViewOrArrayBuffer::ArrayBufferView(view) => view.to_vec(),
ArrayBufferViewOrArrayBuffer::ArrayBuffer(buffer) => buffer.to_vec(),
@@ -197,9 +198,10 @@ impl SubtleCryptoMethods for SubtleCrypto {
key: &CryptoKey,
data: ArrayBufferViewOrArrayBuffer,
comp: InRealm,
+ can_gc: CanGc,
) -> Rc<Promise> {
let normalized_algorithm = normalize_algorithm(cx, algorithm, "decrypt");
- let promise = Promise::new_in_current_realm(comp);
+ let promise = Promise::new_in_current_realm(comp, can_gc);
let data = match data {
ArrayBufferViewOrArrayBuffer::ArrayBufferView(view) => view.to_vec(),
ArrayBufferViewOrArrayBuffer::ArrayBuffer(buffer) => buffer.to_vec(),
@@ -253,9 +255,10 @@ impl SubtleCryptoMethods for SubtleCrypto {
extractable: bool,
key_usages: Vec<KeyUsage>,
comp: InRealm,
+ can_gc: CanGc,
) -> Rc<Promise> {
let normalized_algorithm = normalize_algorithm(cx, algorithm, "generateKey");
- let promise = Promise::new_in_current_realm(comp);
+ let promise = Promise::new_in_current_realm(comp, can_gc);
if let Err(e) = normalized_algorithm {
promise.reject_error(e);
return promise;
@@ -296,9 +299,10 @@ impl SubtleCryptoMethods for SubtleCrypto {
extractable: bool,
key_usages: Vec<KeyUsage>,
comp: InRealm,
+ can_gc: CanGc,
) -> Rc<Promise> {
let normalized_algorithm = normalize_algorithm(cx, algorithm, "importKey");
- let promise = Promise::new_in_current_realm(comp);
+ let promise = Promise::new_in_current_realm(comp, can_gc);
if let Err(e) = normalized_algorithm {
promise.reject_error(e);
return promise;
@@ -360,8 +364,14 @@ impl SubtleCryptoMethods for SubtleCrypto {
}
/// <https://w3c.github.io/webcrypto/#SubtleCrypto-method-exportKey>
- fn ExportKey(&self, format: KeyFormat, key: &CryptoKey, comp: InRealm) -> Rc<Promise> {
- let promise = Promise::new_in_current_realm(comp);
+ fn ExportKey(
+ &self,
+ format: KeyFormat,
+ key: &CryptoKey,
+ comp: InRealm,
+ can_gc: CanGc,
+ ) -> Rc<Promise> {
+ let promise = Promise::new_in_current_realm(comp, can_gc);
let (task_source, canceller) = self.task_source_with_canceller();
let this = Trusted::new(self);