diff options
author | Josh Matthews <josh@joshmatthews.net> | 2023-02-16 23:09:50 -0500 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2023-05-20 11:05:09 -0400 |
commit | f79e1e327dfdf047cab9652e1cc3e67a7667faa1 (patch) | |
tree | 43c1cf48c9a6448264722780e38315dafacf4a24 /components/script/dom | |
parent | 4998c65c423f995149f4b314d8ff68024c24cc72 (diff) | |
download | servo-f79e1e327dfdf047cab9652e1cc3e67a7667faa1.tar.gz servo-f79e1e327dfdf047cab9652e1cc3e67a7667faa1.zip |
Make GlobalScope.get_cx a static method.
Diffstat (limited to 'components/script/dom')
33 files changed, 89 insertions, 87 deletions
diff --git a/components/script/dom/audiobuffer.rs b/components/script/dom/audiobuffer.rs index ade645827a6..268424d1c4b 100644 --- a/components/script/dom/audiobuffer.rs +++ b/components/script/dom/audiobuffer.rs @@ -9,8 +9,9 @@ use crate::dom::bindings::codegen::Bindings::AudioBufferBinding::{ }; use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; +use crate::dom::globalscope::GlobalScope; use crate::dom::window::Window; use crate::realms::enter_realm; use crate::script_runtime::JSContext; @@ -172,7 +173,7 @@ impl AudioBuffer { self.length as usize, self.sample_rate, ); - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); for (i, channel) in self.js_channels.borrow_mut().iter().enumerate() { // Step 1. if channel.get().is_null() { @@ -271,7 +272,7 @@ impl AudioBufferMethods for AudioBuffer { } let bytes_to_copy = min(self.length - start_in_channel, destination.len() as u32) as usize; - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); let channel_number = channel_number as usize; let offset = start_in_channel as usize; let mut dest = Vec::with_capacity(destination.len()); @@ -313,7 +314,7 @@ impl AudioBufferMethods for AudioBuffer { return Err(Error::IndexSize); } - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); if !self.restore_js_channel_data(cx) { return Err(Error::JSFailed); } diff --git a/components/script/dom/bindings/callback.rs b/components/script/dom/bindings/callback.rs index c9130cfd50a..9b14f3ced60 100644 --- a/components/script/dom/bindings/callback.rs +++ b/components/script/dom/bindings/callback.rs @@ -245,7 +245,7 @@ impl CallSetup { if let Some(window) = global.downcast::<Window>() { window.Document().ensure_safe_to_run_script_or_layout(); } - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); let aes = AutoEntryScript::new(&global); let ais = callback.incumbent().map(AutoIncumbentScript::new); diff --git a/components/script/dom/bindings/reflector.rs b/components/script/dom/bindings/reflector.rs index 04bf9fdbbed..8176989ed36 100644 --- a/components/script/dom/bindings/reflector.rs +++ b/components/script/dom/bindings/reflector.rs @@ -9,6 +9,7 @@ use crate::dom::bindings::iterable::{Iterable, IterableIterator}; use crate::dom::bindings::root::{Dom, DomRoot, Root}; use crate::dom::bindings::trace::JSTraceable; use crate::dom::globalscope::GlobalScope; +use crate::realms::AlreadyInRealm; use crate::script_runtime::JSContext; use js::jsapi::{Heap, JSObject}; use js::rust::HandleObject; @@ -22,7 +23,7 @@ where U: DerivedFrom<GlobalScope>, { let global_scope = global.upcast(); - unsafe { T::WRAP(global_scope.get_cx(), global_scope, obj) } + unsafe { T::WRAP(GlobalScope::get_cx(), global_scope, obj) } } /// A struct to store a reference to the reflector of a DOM object. @@ -82,7 +83,8 @@ pub trait DomObject: JSTraceable + 'static { where Self: Sized, { - GlobalScope::from_reflector(self) + let realm = AlreadyInRealm::assert_for_cx(GlobalScope::get_cx()); + GlobalScope::from_reflector(self, &realm) } } diff --git a/components/script/dom/bindings/structuredclone.rs b/components/script/dom/bindings/structuredclone.rs index 19dcf78ccd4..85cb758e600 100644 --- a/components/script/dom/bindings/structuredclone.rs +++ b/components/script/dom/bindings/structuredclone.rs @@ -352,7 +352,7 @@ pub fn read( mut data: StructuredSerializedData, rval: MutableHandleValue, ) -> Result<Vec<DomRoot<MessagePort>>, ()> { - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); let _ac = enter_realm(&*global); let mut sc_holder = StructuredDataHolder::Read { blobs: None, diff --git a/components/script/dom/blob.rs b/components/script/dom/blob.rs index 44011df9494..9845133c42c 100644 --- a/components/script/dom/blob.rs +++ b/components/script/dom/blob.rs @@ -272,7 +272,7 @@ impl BlobMethods for Blob { Box::new(|promise, bytes| { match bytes { Ok(b) => { - let cx = promise.global().get_cx(); + let cx = GlobalScope::get_cx(); let result = run_array_buffer_data_algorithm(cx, b); match result { diff --git a/components/script/dom/console.rs b/components/script/dom/console.rs index 93171beb547..b9b6f2aded0 100644 --- a/components/script/dom/console.rs +++ b/components/script/dom/console.rs @@ -17,7 +17,7 @@ impl Console { #[allow(unsafe_code)] fn send_to_devtools(global: &GlobalScope, level: LogLevel, message: DOMString) { if let Some(chan) = global.devtools_chan() { - let caller = unsafe { describe_scripted_caller(*global.get_cx()) }.unwrap_or_default(); + let caller = unsafe { describe_scripted_caller(*GlobalScope::get_cx()) }.unwrap_or_default(); let console_message = ConsoleMessage { message: String::from(message), logLevel: level, diff --git a/components/script/dom/create.rs b/components/script/dom/create.rs index 37aaf07286f..1a4815d1179 100644 --- a/components/script/dom/create.rs +++ b/components/script/dom/create.rs @@ -154,7 +154,7 @@ fn create_html_element( // Step 6. Recovering from exception. let global = GlobalScope::current().unwrap_or_else(|| document.global()); - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); // Step 6.1.1 unsafe { diff --git a/components/script/dom/customelementregistry.rs b/components/script/dom/customelementregistry.rs index dfba75a2028..ddbefaf6783 100644 --- a/components/script/dom/customelementregistry.rs +++ b/components/script/dom/customelementregistry.rs @@ -140,11 +140,10 @@ impl CustomElementRegistry { constructor: HandleObject, prototype: MutableHandleValue, ) -> ErrorResult { - let global_scope = self.window.upcast::<GlobalScope>(); unsafe { // Step 10.1 if !JS_GetProperty( - *global_scope.get_cx(), + *GlobalScope::get_cx(), constructor, b"prototype\0".as_ptr() as *const _, prototype, @@ -166,7 +165,7 @@ impl CustomElementRegistry { /// Steps 10.3, 10.4 #[allow(unsafe_code)] unsafe fn get_callbacks(&self, prototype: HandleObject) -> Fallible<LifecycleCallbacks> { - let cx = self.window.get_cx(); + let cx = GlobalScope::get_cx(); // Step 4 Ok(LifecycleCallbacks { @@ -181,7 +180,7 @@ impl CustomElementRegistry { /// Step 10.6 #[allow(unsafe_code)] fn get_observed_attributes(&self, constructor: HandleObject) -> Fallible<Vec<DOMString>> { - let cx = self.window.get_cx(); + let cx = GlobalScope::get_cx(); rooted!(in(*cx) let mut observed_attributes = UndefinedValue()); if unsafe { !JS_GetProperty( @@ -254,7 +253,7 @@ impl CustomElementRegistryMethods for CustomElementRegistry { constructor_: Rc<CustomElementConstructor>, options: &ElementDefinitionOptions, ) -> ErrorResult { - let cx = self.window.get_cx(); + let cx = GlobalScope::get_cx(); rooted!(in(*cx) let constructor = constructor_.callback()); let name = LocalName::from(&*name); @@ -437,7 +436,7 @@ impl CustomElementRegistryMethods for CustomElementRegistry { // Step 2 if let Some(definition) = self.definitions.borrow().get(&LocalName::from(&*name)) { unsafe { - let cx = global_scope.get_cx(); + let cx = GlobalScope::get_cx(); rooted!(in(*cx) let mut constructor = UndefinedValue()); definition .constructor @@ -543,7 +542,7 @@ impl CustomElementDefinition { prefix: Option<Prefix>, ) -> Fallible<DomRoot<Element>> { let window = document.window(); - let cx = window.get_cx(); + let cx = GlobalScope::get_cx(); // Step 2 rooted!(in(*cx) let constructor = ObjectValue(self.constructor.callback())); rooted!(in(*cx) let mut element = ptr::null_mut::<JSObject>()); @@ -662,7 +661,7 @@ pub fn upgrade_element(definition: Rc<CustomElementDefinition>, element: &Elemen // Step 8.exception.3 let global = GlobalScope::current().expect("No current global"); - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); unsafe { let ar = enter_realm(&*global); throw_dom_exception(cx, &global, error); @@ -686,7 +685,7 @@ fn run_upgrade_constructor( element: &Element, ) -> ErrorResult { let window = window_from_node(element); - let cx = window.get_cx(); + let cx = GlobalScope::get_cx(); rooted!(in(*cx) let constructor_val = ObjectValue(constructor.callback())); rooted!(in(*cx) let mut element_val = UndefinedValue()); unsafe { @@ -909,7 +908,7 @@ impl CustomElementReactionStack { return; } - let cx = element.global().get_cx(); + let cx = GlobalScope::get_cx(); // We might be here during HTML parsing, rather than // during Javscript execution, and so we typically aren't // already in a realm here. diff --git a/components/script/dom/dissimilaroriginwindow.rs b/components/script/dom/dissimilaroriginwindow.rs index 989aec3ff3d..13d836114c6 100644 --- a/components/script/dom/dissimilaroriginwindow.rs +++ b/components/script/dom/dissimilaroriginwindow.rs @@ -46,7 +46,7 @@ pub struct DissimilarOriginWindow { impl DissimilarOriginWindow { #[allow(unsafe_code)] pub fn new(global_to_clone_from: &GlobalScope, window_proxy: &WindowProxy) -> DomRoot<Self> { - let cx = global_to_clone_from.get_cx(); + let cx = GlobalScope::get_cx(); let win = Box::new(Self { globalscope: GlobalScope::new_inherited( PipelineId::new(), diff --git a/components/script/dom/eventsource.rs b/components/script/dom/eventsource.rs index 49e612cd6eb..9be9962378e 100644 --- a/components/script/dom/eventsource.rs +++ b/components/script/dom/eventsource.rs @@ -222,10 +222,10 @@ impl EventSourceContext { // Steps 4-5 let event = { let _ac = enter_realm(&*event_source); - rooted!(in(*event_source.global().get_cx()) let mut data = UndefinedValue()); + rooted!(in(*GlobalScope::get_cx()) let mut data = UndefinedValue()); unsafe { self.data - .to_jsval(*event_source.global().get_cx(), data.handle_mut()) + .to_jsval(*GlobalScope::get_cx(), data.handle_mut()) }; MessageEvent::new( &*event_source.global(), diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs index 0d57b38c16b..9e9bf816c72 100644 --- a/components/script/dom/eventtarget.rs +++ b/components/script/dom/eventtarget.rs @@ -184,7 +184,7 @@ impl CompiledEventListener { CommonEventHandler::ErrorEventHandler(ref handler) => { if let Some(event) = event.downcast::<ErrorEvent>() { if object.is::<Window>() || object.is::<WorkerGlobalScope>() { - let cx = object.global().get_cx(); + let cx = GlobalScope::get_cx(); rooted!(in(*cx) let error = event.Error(cx)); let return_value = handler.Call_( object, @@ -242,7 +242,7 @@ impl CompiledEventListener { CommonEventHandler::EventHandler(ref handler) => { if let Ok(value) = handler.Call_(object, event, exception_handle) { - let cx = object.global().get_cx(); + let cx = GlobalScope::get_cx(); rooted!(in(*cx) let value = value); let value = value.handle(); @@ -525,7 +525,7 @@ impl EventTarget { let is_error = ty == &atom!("error") && self.is::<Window>(); let args = if is_error { ERROR_ARG_NAMES } else { ARG_NAMES }; - let cx = window.get_cx(); + let cx = GlobalScope::get_cx(); let options = unsafe { CompileOptionsWrapper::new(*cx, &handler.url.to_string(), handler.line as u32) }; @@ -592,7 +592,7 @@ impl EventTarget { where T: CallbackContainer, { - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); let event_listener = listener.map(|listener| { InlineEventListener::Compiled(CommonEventHandler::EventHandler(unsafe { @@ -607,7 +607,7 @@ impl EventTarget { where T: CallbackContainer, { - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); let event_listener = listener.map(|listener| { InlineEventListener::Compiled(CommonEventHandler::ErrorEventHandler(unsafe { @@ -625,7 +625,7 @@ impl EventTarget { ) where T: CallbackContainer, { - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); let event_listener = listener.map(|listener| { InlineEventListener::Compiled(CommonEventHandler::BeforeUnloadEventHandler(unsafe { @@ -637,7 +637,7 @@ impl EventTarget { #[allow(unsafe_code)] pub fn get_event_handler_common<T: CallbackContainer>(&self, ty: &str) -> Option<Rc<T>> { - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); let listener = self.get_inline_event_listener(&Atom::from(ty)); unsafe { listener.map(|listener| { diff --git a/components/script/dom/filereader.rs b/components/script/dom/filereader.rs index 084cecc9577..2e56f48079c 100644 --- a/components/script/dom/filereader.rs +++ b/components/script/dom/filereader.rs @@ -258,7 +258,7 @@ impl FileReader { let _ac = enter_realm(&*fr); FileReader::perform_readasarraybuffer( &fr.result, - fr.global().get_cx(), + GlobalScope::get_cx(), data, &blob_contents, ) diff --git a/components/script/dom/globalscope.rs b/components/script/dom/globalscope.rs index 9a3829f4d0e..9adc6f3213d 100644 --- a/components/script/dom/globalscope.rs +++ b/components/script/dom/globalscope.rs @@ -1215,7 +1215,7 @@ impl GlobalScope { return; } - rooted!(in(*global.get_cx()) let mut message = UndefinedValue()); + rooted!(in(*GlobalScope::get_cx()) let mut message = UndefinedValue()); // Step 10.3 StructuredDeserialize(serialized, targetRealm). if let Ok(ports) = structuredclone::read(&global, data, message.handle_mut()) { @@ -1269,7 +1269,7 @@ impl GlobalScope { }; if let Some((dom_port, PortMessageTask { origin, data })) = should_dispatch { // Substep 3-4 - rooted!(in(*self.get_cx()) let mut message_clone = UndefinedValue()); + rooted!(in(*GlobalScope::get_cx()) let mut message_clone = UndefinedValue()); if let Ok(ports) = structuredclone::read(self, data, message_clone.handle_mut()) { // Substep 6 // Dispatch the event, using the dom message-port. @@ -2120,7 +2120,7 @@ impl GlobalScope { /// Returns the global scope of the realm that the given DOM object's reflector /// was created in. #[allow(unsafe_code)] - pub fn from_reflector<T: DomObject>(reflector: &T) -> DomRoot<Self> { + pub fn from_reflector<T: DomObject>(reflector: &T, _realm: &AlreadyInRealm) -> DomRoot<Self> { unsafe { GlobalScope::from_object(*reflector.reflector().get_jsobject()) } } @@ -2221,7 +2221,7 @@ impl GlobalScope { } #[allow(unsafe_code)] - pub fn get_cx(&self) -> SafeJSContext { + pub fn get_cx() -> SafeJSContext { unsafe { SafeJSContext::from_ptr(Runtime::get()) } } @@ -2603,7 +2603,7 @@ impl GlobalScope { Some(metadata), self.time_profiler_chan().clone(), || { - let cx = self.get_cx(); + let cx = GlobalScope::get_cx(); let ar = enter_realm(&*self); @@ -2857,7 +2857,7 @@ impl GlobalScope { // Only perform the checkpoint if we're not shutting down. if self.can_continue_running() { self.microtask_queue.checkpoint( - self.get_cx(), + GlobalScope::get_cx(), |_| Some(DomRoot::from_ref(self)), vec![DomRoot::from_ref(self)], ); @@ -2866,7 +2866,7 @@ impl GlobalScope { /// Enqueue a microtask for subsequent execution. pub fn enqueue_microtask(&self, job: Microtask) { - self.microtask_queue.enqueue(job, self.get_cx()); + self.microtask_queue.enqueue(job, GlobalScope::get_cx()); } /// Create a new sender/receiver pair that can be used to implement an on-demand diff --git a/components/script/dom/gpubuffer.rs b/components/script/dom/gpubuffer.rs index 60a6075cb7f..24eeb06b33d 100644 --- a/components/script/dom/gpubuffer.rs +++ b/components/script/dom/gpubuffer.rs @@ -134,7 +134,7 @@ impl GPUBufferMethods for GPUBuffer { #[allow(unsafe_code)] /// https://gpuweb.github.io/gpuweb/#dom-gpubuffer-unmap fn Unmap(&self) { - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); // Step 1 match self.state.get() { GPUBufferState::Unmapped | GPUBufferState::Destroyed => { diff --git a/components/script/dom/history.rs b/components/script/dom/history.rs index 9023a397c66..663499da38f 100644 --- a/components/script/dom/history.rs +++ b/components/script/dom/history.rs @@ -117,7 +117,7 @@ impl History { blobs: None, }; let global_scope = self.window.upcast::<GlobalScope>(); - rooted!(in(*global_scope.get_cx()) let mut state = UndefinedValue()); + rooted!(in(*GlobalScope::get_cx()) let mut state = UndefinedValue()); if let Err(_) = structuredclone::read(&global_scope, data, state.handle_mut()) { warn!("Error reading structuredclone data"); } diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index 696e4566b63..e81e07e9643 100755 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -833,7 +833,7 @@ impl HTMLInputElement { } // Rust's regex is not compatible, we need to use mozjs RegExp. - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); let _ac = enter_realm(self); rooted!(in(*cx) let mut pattern = ptr::null_mut::<JSObject>()); diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs index dc7490f232c..1a0afeb1c84 100644 --- a/components/script/dom/htmlscriptelement.rs +++ b/components/script/dom/htmlscriptelement.rs @@ -110,7 +110,7 @@ unsafe extern "C" fn off_thread_compilation_callback( task!(off_thread_compile_continue: move || { let elem = script_element.root(); let global = elem.global(); - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); let _ar = enter_realm(&*global); let compiled_script = FinishOffThreadStencil(*cx, token.0, ptr::null_mut()); @@ -418,7 +418,7 @@ impl FetchResponseListener for ClassicContext { let elem = self.elem.root(); let global = elem.global(); - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); let _ar = enter_realm(&*global); let options = unsafe { CompileOptionsWrapper::new(*cx, final_url.as_str(), 1) }; @@ -1053,7 +1053,7 @@ impl HTMLScriptElement { } else { self.line_number as u32 }; - rooted!(in(*window.get_cx()) let mut rval = UndefinedValue()); + rooted!(in(*GlobalScope::get_cx()) let mut rval = UndefinedValue()); let global = window.upcast::<GlobalScope>(); global.evaluate_script_on_global_with_result( &script.code, @@ -1108,7 +1108,7 @@ impl HTMLScriptElement { .map(|record| record.handle()); if let Some(record) = record { - rooted!(in(*global.get_cx()) let mut rval = UndefinedValue()); + rooted!(in(*GlobalScope::get_cx()) let mut rval = UndefinedValue()); let evaluated = module_tree.execute_module(global, record, rval.handle_mut().into()); diff --git a/components/script/dom/imagedata.rs b/components/script/dom/imagedata.rs index d8574a9b666..43df0951492 100644 --- a/components/script/dom/imagedata.rs +++ b/components/script/dom/imagedata.rs @@ -39,7 +39,7 @@ impl ImageData { ) -> Fallible<DomRoot<ImageData>> { let len = width * height * 4; unsafe { - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); rooted!(in (*cx) let mut js_object = ptr::null_mut::<JSObject>()); if let Some(ref mut d) = data { d.resize(len as usize, 0); @@ -60,7 +60,7 @@ impl ImageData { jsobject: *mut JSObject, ) -> Fallible<DomRoot<ImageData>> { // checking jsobject type - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); typedarray!(in(*cx) let array_res: Uint8ClampedArray = jsobject); let array = array_res.map_err(|_| { Error::Type("Argument to Image data is not an Uint8ClampedArray".to_owned()) @@ -111,7 +111,7 @@ impl ImageData { }); let len = width * height * 4; - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); rooted!(in (*cx) let mut array = ptr::null_mut::<JSObject>()); Uint8ClampedArray::create(*cx, CreateWith::Length(len as usize), array.handle_mut()) .unwrap(); diff --git a/components/script/dom/paintworkletglobalscope.rs b/components/script/dom/paintworkletglobalscope.rs index 5a3b9af24df..25bdeeb5ca3 100644 --- a/components/script/dom/paintworkletglobalscope.rs +++ b/components/script/dom/paintworkletglobalscope.rs @@ -252,7 +252,7 @@ impl PaintWorkletGlobalScope { name, size_in_px.width, size_in_px.height, device_pixel_ratio ); - let cx = self.worklet_global.get_cx(); + let cx = WorkletGlobalScope::get_cx(); let _ac = JSAutoRealm::new(*cx, self.worklet_global.reflector().get_jsobject().get()); // TODO: Steps 1-2.1. @@ -517,7 +517,7 @@ impl PaintWorkletGlobalScopeMethods for PaintWorkletGlobalScope { /// <https://drafts.css-houdini.org/css-paint-api/#dom-paintworkletglobalscope-registerpaint> fn RegisterPaint(&self, name: DOMString, paint_ctor: Rc<VoidFunction>) -> Fallible<()> { let name = Atom::from(name); - let cx = self.worklet_global.get_cx(); + let cx = WorkletGlobalScope::get_cx(); rooted!(in(*cx) let paint_obj = paint_ctor.callback_holder().get()); rooted!(in(*cx) let paint_val = ObjectValue(paint_obj.get())); diff --git a/components/script/dom/promise.rs b/components/script/dom/promise.rs index 18be293c625..d008a7b9d30 100644 --- a/components/script/dom/promise.rs +++ b/components/script/dom/promise.rs @@ -91,8 +91,8 @@ impl Promise { Promise::new_in_current_realm(global, comp) } - pub fn new_in_current_realm(global: &GlobalScope, _comp: InRealm) -> Rc<Promise> { - let cx = global.get_cx(); + pub fn new_in_current_realm(_global: &GlobalScope, _comp: InRealm) -> Rc<Promise> { + let cx = GlobalScope::get_cx(); rooted!(in(*cx) let mut obj = ptr::null_mut::<JSObject>()); Promise::create_js_promise(cx, obj.handle_mut()); Promise::new_with_js_promise(obj.handle(), cx) @@ -100,7 +100,7 @@ impl Promise { #[allow(unsafe_code)] pub fn duplicate(&self) -> Rc<Promise> { - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); Promise::new_with_js_promise(self.reflector().get_jsobject(), cx) } @@ -172,7 +172,7 @@ impl Promise { where T: ToJSValConvertible, { - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); let _ac = enter_realm(&*self); rooted!(in(*cx) let mut v = UndefinedValue()); unsafe { @@ -195,7 +195,7 @@ impl Promise { where T: ToJSValConvertible, { - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); let _ac = enter_realm(&*self); rooted!(in(*cx) let mut v = UndefinedValue()); unsafe { @@ -206,7 +206,7 @@ impl Promise { #[allow(unsafe_code)] pub fn reject_error(&self, error: Error) { - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); let _ac = enter_realm(&*self); rooted!(in(*cx) let mut v = UndefinedValue()); unsafe { @@ -245,7 +245,7 @@ impl Promise { #[allow(unsafe_code)] pub fn append_native_handler(&self, handler: &PromiseNativeHandler, _comp: InRealm) { let _ais = AutoEntryScript::new(&*handler.global()); - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); rooted!(in(*cx) let resolve_func = create_native_handler_function(*cx, handler.reflector().get_jsobject(), diff --git a/components/script/dom/readablestream.rs b/components/script/dom/readablestream.rs index 723e229916a..746f094045c 100644 --- a/components/script/dom/readablestream.rs +++ b/components/script/dom/readablestream.rs @@ -120,7 +120,7 @@ impl ReadableStream { ) -> DomRoot<ReadableStream> { let _ar = enter_realm(global); let _ais = AutoIncumbentScript::new(global); - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); let source = Rc::new(ExternalUnderlyingSourceController::new(source)); @@ -157,7 +157,7 @@ impl ReadableStream { pub fn enqueue_native(&self, bytes: Vec<u8>) { let global = self.global(); let _ar = enter_realm(&*global); - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); let handle = unsafe { self.js_stream.handle() }; @@ -171,7 +171,7 @@ impl ReadableStream { pub fn error_native(&self, error: Error) { let global = self.global(); let _ar = enter_realm(&*global); - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); unsafe { rooted!(in(*cx) let mut js_error = UndefinedValue()); @@ -188,7 +188,7 @@ impl ReadableStream { pub fn close_native(&self) { let global = self.global(); let _ar = enter_realm(&*global); - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); let handle = unsafe { self.js_stream.handle() }; @@ -223,7 +223,7 @@ impl ReadableStream { let global = self.global(); let _ar = enter_realm(&*global); - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); unsafe { rooted!(in(*cx) let reader = ReadableStreamGetReader( @@ -253,7 +253,7 @@ impl ReadableStream { let _ar = enter_realm(&*global); let _aes = AutoEntryScript::new(&*global); - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); unsafe { rooted!(in(*cx) let promise_obj = ReadableStreamDefaultReaderRead( @@ -276,7 +276,7 @@ impl ReadableStream { let global = self.global(); let _ar = enter_realm(&*global); - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); unsafe { ReadableStreamReaderReleaseLock(*cx, self.js_reader.handle()); @@ -293,7 +293,7 @@ impl ReadableStream { } // Otherwise, still double-check that script didn't lock the stream. - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); let mut locked_or_disturbed = false; unsafe { @@ -306,7 +306,7 @@ impl ReadableStream { #[allow(unsafe_code)] pub fn is_disturbed(&self) -> bool { // Check that script didn't disturb the stream. - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); let mut locked_or_disturbed = false; unsafe { diff --git a/components/script/dom/rtcdatachannel.rs b/components/script/dom/rtcdatachannel.rs index 052f3f13131..6fefea60812 100644 --- a/components/script/dom/rtcdatachannel.rs +++ b/components/script/dom/rtcdatachannel.rs @@ -135,7 +135,7 @@ impl RTCDataChannel { pub fn on_error(&self, error: WebRtcError) { let global = self.global(); - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); let _ac = JSAutoRealm::new(*cx, self.reflector().get_jsobject().get()); let init = RTCErrorInit { errorDetail: RTCErrorDetailType::Data_channel_failure, @@ -157,7 +157,7 @@ impl RTCDataChannel { pub fn on_message(&self, channel_message: DataChannelMessage) { unsafe { let global = self.global(); - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); let _ac = JSAutoRealm::new(*cx, self.reflector().get_jsobject().get()); rooted!(in(*cx) let mut message = UndefinedValue()); diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs index a3c9848ed9b..59b87d08987 100644 --- a/components/script/dom/websocket.rs +++ b/components/script/dom/websocket.rs @@ -554,9 +554,9 @@ impl TaskOnce for MessageReceivedTask { // Step 2-5. let global = ws.global(); - // global.get_cx() returns a valid `JSContext` pointer, so this is safe. + // GlobalScope::get_cx() returns a valid `JSContext` pointer, so this is safe. unsafe { - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); let _ac = JSAutoRealm::new(*cx, ws.reflector().get_jsobject().get()); rooted!(in(*cx) let mut message = UndefinedValue()); match self.message { diff --git a/components/script/dom/windowproxy.rs b/components/script/dom/windowproxy.rs index 35850f76092..9ae85a30fc6 100644 --- a/components/script/dom/windowproxy.rs +++ b/components/script/dom/windowproxy.rs @@ -165,7 +165,7 @@ impl WindowProxy { let WindowProxyHandler(handler) = window.windowproxy_handler(); assert!(!handler.is_null()); - let cx = window.get_cx(); + let cx = GlobalScope::get_cx(); let window_jsobject = window.reflector().get_jsobject(); assert!(!window_jsobject.get().is_null()); assert_ne!( @@ -225,7 +225,7 @@ impl WindowProxy { let handler = CreateWrapperProxyHandler(&XORIGIN_PROXY_HANDLER); assert!(!handler.is_null()); - let cx = global_to_clone_from.get_cx(); + let cx = GlobalScope::get_cx(); // Create a new browsing context. let window_proxy = Box::new(WindowProxy::new_inherited( @@ -624,7 +624,7 @@ impl WindowProxy { let handler = CreateWrapperProxyHandler(traps); assert!(!handler.is_null()); - let cx = window.get_cx(); + let cx = GlobalScope::get_cx(); let window_jsobject = window.reflector().get_jsobject(); let old_js_proxy = self.reflector.get_jsobject(); assert!(!window_jsobject.get().is_null()); diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs index 563a04679ea..b9370f02914 100644 --- a/components/script/dom/worker.rs +++ b/components/script/dom/worker.rs @@ -169,7 +169,7 @@ impl Worker { let global = worker.global(); let target = worker.upcast(); let _ac = enter_realm(target); - rooted!(in(*global.get_cx()) let mut message = UndefinedValue()); + rooted!(in(*GlobalScope::get_cx()) let mut message = UndefinedValue()); if let Ok(ports) = structuredclone::read(&global, data, message.handle_mut()) { MessageEvent::dispatch_jsval(target, &global, message.handle(), None, None, ports); } else { @@ -247,7 +247,7 @@ impl WorkerMethods for Worker { self.terminated.set(true); // Step 3 - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); unsafe { JS_RequestInterruptCallback(*cx) }; } diff --git a/components/script/dom/workletglobalscope.rs b/components/script/dom/workletglobalscope.rs index 29d5b9b7f99..96270b8fab8 100644 --- a/components/script/dom/workletglobalscope.rs +++ b/components/script/dom/workletglobalscope.rs @@ -85,14 +85,14 @@ impl WorkletGlobalScope { } /// Get the JS context. - pub fn get_cx(&self) -> JSContext { - self.globalscope.get_cx() + pub fn get_cx() -> JSContext { + GlobalScope::get_cx() } /// Evaluate a JS script in this global. pub fn evaluate_js(&self, script: &str) -> bool { debug!("Evaluating Dom in a worklet."); - rooted!(in (*self.globalscope.get_cx()) let mut rval = UndefinedValue()); + rooted!(in (*GlobalScope::get_cx()) let mut rval = UndefinedValue()); self.globalscope.evaluate_js_on_global_with_result( &*script, rval.handle_mut(), diff --git a/components/script/dom/xrinputsource.rs b/components/script/dom/xrinputsource.rs index 248fb6d737a..592ced2f10d 100644 --- a/components/script/dom/xrinputsource.rs +++ b/components/script/dom/xrinputsource.rs @@ -57,7 +57,7 @@ impl XRInputSource { ); let _ac = enter_realm(&*global); - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); unsafe { rooted!(in(*cx) let mut profiles = UndefinedValue()); source.info.profiles.to_jsval(*cx, profiles.handle_mut()); diff --git a/components/script/dom/xrinputsourceschangeevent.rs b/components/script/dom/xrinputsourceschangeevent.rs index d23c5ea4157..99e5da7ead7 100644 --- a/components/script/dom/xrinputsourceschangeevent.rs +++ b/components/script/dom/xrinputsourceschangeevent.rs @@ -63,7 +63,7 @@ impl XRInputSourcesChangeEvent { event.init_event(type_, bubbles, cancelable); } let _ac = enter_realm(&*global); - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); unsafe { rooted!(in(*cx) let mut added_val = UndefinedValue()); added.to_jsval(*cx, added_val.handle_mut()); diff --git a/components/script/dom/xrray.rs b/components/script/dom/xrray.rs index cb5e29d9c62..781ff6a396b 100644 --- a/components/script/dom/xrray.rs +++ b/components/script/dom/xrray.rs @@ -116,7 +116,7 @@ impl XRRayMethods for XRRay { // https://immersive-web.github.io/hit-test/#xrray-obtain-the-matrix // Step 1 if self.matrix.get().is_null() { - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); // Step 2 let z = Vector3D::new(0., 0., -1.); // Step 3 diff --git a/components/script/dom/xrrigidtransform.rs b/components/script/dom/xrrigidtransform.rs index 0488d4584eb..00909e1fe1c 100644 --- a/components/script/dom/xrrigidtransform.rs +++ b/components/script/dom/xrrigidtransform.rs @@ -117,7 +117,7 @@ impl XRRigidTransformMethods for XRRigidTransform { // https://immersive-web.github.io/webxr/#dom-xrrigidtransform-matrix fn Matrix(&self, _cx: JSContext) -> NonNull<JSObject> { if self.matrix.get().is_null() { - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); // According to the spec all matrices are column-major, // however euclid uses row vectors so we use .to_array() let arr = self.transform.to_transform().to_array(); diff --git a/components/script/dom/xrsystem.rs b/components/script/dom/xrsystem.rs index 23235c1d95a..8cfeedbd283 100644 --- a/components/script/dom/xrsystem.rs +++ b/components/script/dom/xrsystem.rs @@ -14,6 +14,7 @@ use crate::dom::bindings::root::{Dom, DomRoot, MutNullableDom}; use crate::dom::bindings::trace::RootedTraceableBox; use crate::dom::eventtarget::EventTarget; use crate::dom::gamepad::Gamepad; +use crate::dom::globalscope::GlobalScope; use crate::dom::promise::Promise; use crate::dom::window::Window; use crate::dom::xrsession::XRSession; @@ -180,7 +181,7 @@ impl XRSystemMethods for XRSystem { let mut required_features = vec![]; let mut optional_features = vec![]; - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); // We are supposed to include "viewer" and on immersive devices "local" // by default here, but this is handled directly in requestReferenceSpace() diff --git a/components/script/dom/xrview.rs b/components/script/dom/xrview.rs index a5972e26955..b849b1d03ba 100644 --- a/components/script/dom/xrview.rs +++ b/components/script/dom/xrview.rs @@ -3,7 +3,6 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use crate::dom::bindings::codegen::Bindings::XRViewBinding::{XREye, XRViewMethods}; -use crate::dom::bindings::reflector::DomObject; use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::utils::create_typed_array; @@ -90,7 +89,7 @@ impl XRViewMethods for XRView { /// https://immersive-web.github.io/webxr/#dom-xrview-projectionmatrix fn ProjectionMatrix(&self, _cx: JSContext) -> NonNull<JSObject> { if self.proj.get().is_null() { - let cx = self.global().get_cx(); + let cx = GlobalScope::get_cx(); // row_major since euclid uses row vectors let proj = self.view.projection.to_array(); create_typed_array(cx, &proj, &self.proj); diff --git a/components/script/dom/xrviewerpose.rs b/components/script/dom/xrviewerpose.rs index 7a2f4a6b441..e9b072e5e5d 100644 --- a/components/script/dom/xrviewerpose.rs +++ b/components/script/dom/xrviewerpose.rs @@ -154,7 +154,7 @@ impl XRViewerPose { let transform = XRRigidTransform::new(global, cast_transform(transform)); let pose = reflect_dom_object(Box::new(XRViewerPose::new_inherited(&transform)), global); - let cx = global.get_cx(); + let cx = GlobalScope::get_cx(); unsafe { rooted!(in(*cx) let mut jsval = UndefinedValue()); views.to_jsval(*cx, jsval.handle_mut()); |