diff --git a/components/script/dom/abortcontroller.rs b/components/script/dom/abortcontroller.rs index 3a7ca17220d..50c5b281d61 100644 --- a/components/script/dom/abortcontroller.rs +++ b/components/script/dom/abortcontroller.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::codegen::Bindings::AbortControllerBinding::AbortContro use crate::dom::bindings::reflector::{Reflector, reflect_dom_object_with_proto}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::globalscope::GlobalScope; +use crate::realms::InRealm; use crate::script_runtime::{CanGc, JSContext}; /// @@ -47,9 +48,9 @@ impl AbortController { } /// - fn signal_abort(&self, cx: JSContext, reason: HandleValue, can_gc: CanGc) { + fn signal_abort(&self, cx: JSContext, reason: HandleValue, realm: InRealm, can_gc: CanGc) { // signal abort on controller’s signal with reason if it is given. - self.signal.signal_abort(cx, reason, can_gc); + self.signal.signal_abort(cx, reason, realm, can_gc); } } @@ -64,10 +65,10 @@ impl AbortControllerMethods for AbortController { } /// - fn Abort(&self, cx: JSContext, reason: HandleValue, can_gc: CanGc) { + fn Abort(&self, cx: JSContext, reason: HandleValue, realm: InRealm, can_gc: CanGc) { // The abort(reason) method steps are // to signal abort on this with reason if it is given. - self.signal_abort(cx, reason, can_gc); + self.signal_abort(cx, reason, realm, can_gc); } /// diff --git a/components/script/dom/abortsignal.rs b/components/script/dom/abortsignal.rs index 7de4f85cff9..f1fa41adb9e 100644 --- a/components/script/dom/abortsignal.rs +++ b/components/script/dom/abortsignal.rs @@ -17,7 +17,7 @@ use crate::dom::bindings::root::DomRoot; use crate::dom::eventtarget::EventTarget; use crate::dom::globalscope::GlobalScope; use crate::dom::readablestream::PipeTo; -use crate::realms::{InRealm, enter_realm}; +use crate::realms::InRealm; use crate::script_runtime::{CanGc, JSContext as SafeJSContext}; impl js::gc::Rootable for AbortAlgorithm {} @@ -74,10 +74,14 @@ impl AbortSignal { } /// - pub(crate) fn signal_abort(&self, cx: SafeJSContext, reason: HandleValue, can_gc: CanGc) { + pub(crate) fn signal_abort( + &self, + cx: SafeJSContext, + reason: HandleValue, + realm: InRealm, + can_gc: CanGc, + ) { let global = self.global(); - let realm = enter_realm(&*global); - let comp = InRealm::Entered(&realm); // If signal is aborted, then return. if self.Aborted() { @@ -101,7 +105,7 @@ impl AbortSignal { // TODO: #36936 // Run the abort steps for signal. - self.run_the_abort_steps(cx, &global, comp, can_gc); + self.run_the_abort_steps(cx, &global, realm, can_gc); // For each dependentSignal of dependentSignalsToAbort, run the abort steps for dependentSignal. // TODO: #36936 diff --git a/components/script_bindings/codegen/Bindings.conf b/components/script_bindings/codegen/Bindings.conf index dd034654974..634067a6553 100644 --- a/components/script_bindings/codegen/Bindings.conf +++ b/components/script_bindings/codegen/Bindings.conf @@ -16,6 +16,7 @@ DOMInterfaces = { 'AbortController': { 'canGc':['Abort'], + 'inRealms': ['Abort'], }, 'AbstractRange': {