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/subtlecrypto.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/subtlecrypto.rs')
-rw-r--r-- | components/script/dom/subtlecrypto.rs | 24 |
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); |