diff options
207 files changed, 570 insertions, 101 deletions
diff --git a/components/script/dom/abstractrange.rs b/components/script/dom/abstractrange.rs index bced93d478b..c16a6434d5b 100644 --- a/components/script/dom/abstractrange.rs +++ b/components/script/dom/abstractrange.rs @@ -14,6 +14,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::{DomRoot, MutDom}; use crate::dom::document::Document; use crate::dom::node::{Node, ShadowIncluding}; +use crate::script_runtime::CanGc; #[dom_struct] pub struct AbstractRange { @@ -51,6 +52,7 @@ impl AbstractRange { end_offset, )), document.window(), + CanGc::note(), ); abstractrange } diff --git a/components/script/dom/audiodestinationnode.rs b/components/script/dom/audiodestinationnode.rs index f0071a2f111..34f29a8fec3 100644 --- a/components/script/dom/audiodestinationnode.rs +++ b/components/script/dom/audiodestinationnode.rs @@ -13,6 +13,7 @@ use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{ use crate::dom::bindings::reflector::reflect_dom_object; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] pub struct AudioDestinationNode { @@ -44,7 +45,7 @@ impl AudioDestinationNode { options: &AudioNodeOptions, ) -> DomRoot<AudioDestinationNode> { let node = AudioDestinationNode::new_inherited(context, options); - reflect_dom_object(Box::new(node), global) + reflect_dom_object(Box::new(node), global, CanGc::note()) } } diff --git a/components/script/dom/audiolistener.rs b/components/script/dom/audiolistener.rs index 7f005ba77f1..27382b80757 100644 --- a/components/script/dom/audiolistener.rs +++ b/components/script/dom/audiolistener.rs @@ -19,6 +19,7 @@ use crate::dom::bindings::num::Finite; use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct AudioListener { @@ -153,9 +154,13 @@ impl AudioListener { } #[allow(crown::unrooted_must_root)] - pub fn new(window: &Window, context: &BaseAudioContext) -> DomRoot<AudioListener> { + pub fn new( + window: &Window, + context: &BaseAudioContext, + can_gc: CanGc, + ) -> DomRoot<AudioListener> { let node = AudioListener::new_inherited(window, context); - reflect_dom_object(Box::new(node), window) + reflect_dom_object(Box::new(node), window, can_gc) } } diff --git a/components/script/dom/audioparam.rs b/components/script/dom/audioparam.rs index 92d0471f6f4..44925883b20 100644 --- a/components/script/dom/audioparam.rs +++ b/components/script/dom/audioparam.rs @@ -20,6 +20,7 @@ use crate::dom::bindings::num::Finite; use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct AudioParam { @@ -87,7 +88,7 @@ impl AudioParam { min_value, max_value, ); - reflect_dom_object(Box::new(audio_param), window) + reflect_dom_object(Box::new(audio_param), window, CanGc::note()) } fn message_node(&self, message: AudioNodeMessage) { diff --git a/components/script/dom/audiotrack.rs b/components/script/dom/audiotrack.rs index 34666ae7d44..56a2fc15251 100644 --- a/components/script/dom/audiotrack.rs +++ b/components/script/dom/audiotrack.rs @@ -13,6 +13,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct AudioTrack { @@ -57,6 +58,7 @@ impl AudioTrack { id, kind, label, language, track_list, )), window, + CanGc::note(), ) } diff --git a/components/script/dom/audiotracklist.rs b/components/script/dom/audiotracklist.rs index a285c508eb4..889eb43147f 100644 --- a/components/script/dom/audiotracklist.rs +++ b/components/script/dom/audiotracklist.rs @@ -45,6 +45,7 @@ impl AudioTrackList { reflect_dom_object( Box::new(AudioTrackList::new_inherited(tracks, media_element)), window, + CanGc::note(), ) } diff --git a/components/script/dom/baseaudiocontext.rs b/components/script/dom/baseaudiocontext.rs index 83ea5c4d5c2..a93c3d6dd3e 100644 --- a/components/script/dom/baseaudiocontext.rs +++ b/components/script/dom/baseaudiocontext.rs @@ -341,7 +341,8 @@ impl BaseAudioContextMethods<crate::DomTypeHolder> for BaseAudioContext { fn Listener(&self) -> DomRoot<AudioListener> { let global = self.global(); let window = global.as_window(); - self.listener.or_init(|| AudioListener::new(window, self)) + self.listener + .or_init(|| AudioListener::new(window, self, CanGc::note())) } // https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-onstatechange diff --git a/components/script/dom/beforeunloadevent.rs b/components/script/dom/beforeunloadevent.rs index 5df2bbc6452..7e020752a23 100644 --- a/components/script/dom/beforeunloadevent.rs +++ b/components/script/dom/beforeunloadevent.rs @@ -16,6 +16,7 @@ use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; use crate::dom::window::Window; +use crate::script_runtime::CanGc; // https://html.spec.whatwg.org/multipage/#beforeunloadevent #[dom_struct] @@ -33,7 +34,11 @@ impl BeforeUnloadEvent { } pub fn new_uninitialized(window: &Window) -> DomRoot<BeforeUnloadEvent> { - reflect_dom_object(Box::new(BeforeUnloadEvent::new_inherited()), window) + reflect_dom_object( + Box::new(BeforeUnloadEvent::new_inherited()), + window, + CanGc::note(), + ) } pub fn new( diff --git a/components/script/dom/bindings/iterable.rs b/components/script/dom/bindings/iterable.rs index 531454077b3..afde8c83111 100644 --- a/components/script/dom/bindings/iterable.rs +++ b/components/script/dom/bindings/iterable.rs @@ -72,7 +72,7 @@ impl<T: DomObjectIteratorWrap + JSTraceable + Iterable> IterableIterator<T> { iterable: Dom::from_ref(iterable), index: Cell::new(0), }); - reflect_dom_object(iterator, &*iterable.global()) + reflect_dom_object(iterator, &*iterable.global(), CanGc::note()) } /// Return the next value from the iterable object. diff --git a/components/script/dom/bindings/reflector.rs b/components/script/dom/bindings/reflector.rs index 843d7dee131..da2534402b6 100644 --- a/components/script/dom/bindings/reflector.rs +++ b/components/script/dom/bindings/reflector.rs @@ -19,21 +19,13 @@ use crate::script_runtime::{CanGc, JSContext}; /// Create the reflector for a new DOM object and yield ownership to the /// reflector. -pub fn reflect_dom_object<T, U>(obj: Box<T>, global: &U) -> DomRoot<T> +pub fn reflect_dom_object<T, U>(obj: Box<T>, global: &U, can_gc: CanGc) -> DomRoot<T> where T: DomObject + DomObjectWrap, U: DerivedFrom<GlobalScope>, { let global_scope = global.upcast(); - unsafe { - T::WRAP( - GlobalScope::get_cx(), - global_scope, - None, - obj, - CanGc::note(), - ) - } + unsafe { T::WRAP(GlobalScope::get_cx(), global_scope, None, obj, can_gc) } } pub fn reflect_dom_object_with_proto<T, U>( diff --git a/components/script/dom/bluetooth.rs b/components/script/dom/bluetooth.rs index 7f27b3dc66b..116c2762e81 100644 --- a/components/script/dom/bluetooth.rs +++ b/components/script/dom/bluetooth.rs @@ -152,7 +152,7 @@ impl Bluetooth { } pub fn new(global: &GlobalScope) -> DomRoot<Bluetooth> { - reflect_dom_object(Box::new(Bluetooth::new_inherited()), global) + reflect_dom_object(Box::new(Bluetooth::new_inherited()), global, CanGc::note()) } fn get_bluetooth_thread(&self) -> IpcSender<BluetoothRequest> { diff --git a/components/script/dom/bluetoothcharacteristicproperties.rs b/components/script/dom/bluetoothcharacteristicproperties.rs index addfd0c8719..dd7be6e2beb 100644 --- a/components/script/dom/bluetoothcharacteristicproperties.rs +++ b/components/script/dom/bluetoothcharacteristicproperties.rs @@ -8,6 +8,7 @@ use crate::dom::bindings::codegen::Bindings::BluetoothCharacteristicPropertiesBi use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; // https://webbluetoothcg.github.io/web-bluetooth/#characteristicproperties #[dom_struct] @@ -78,6 +79,7 @@ impl BluetoothCharacteristicProperties { writableAuxiliaries, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/bluetoothdevice.rs b/components/script/dom/bluetoothdevice.rs index 3e44386d910..2848a57dd84 100644 --- a/components/script/dom/bluetoothdevice.rs +++ b/components/script/dom/bluetoothdevice.rs @@ -85,6 +85,7 @@ impl BluetoothDevice { reflect_dom_object( Box::new(BluetoothDevice::new_inherited(id, name, context)), global, + CanGc::note(), ) } diff --git a/components/script/dom/bluetoothpermissionresult.rs b/components/script/dom/bluetoothpermissionresult.rs index 2b540d977b5..d4ee404fea1 100644 --- a/components/script/dom/bluetoothpermissionresult.rs +++ b/components/script/dom/bluetoothpermissionresult.rs @@ -52,6 +52,7 @@ impl BluetoothPermissionResult { reflect_dom_object( Box::new(BluetoothPermissionResult::new_inherited(status)), global, + CanGc::note(), ) } diff --git a/components/script/dom/bluetoothremotegattcharacteristic.rs b/components/script/dom/bluetoothremotegattcharacteristic.rs index 207b4e438f3..86f50eb464a 100644 --- a/components/script/dom/bluetoothremotegattcharacteristic.rs +++ b/components/script/dom/bluetoothremotegattcharacteristic.rs @@ -79,6 +79,7 @@ impl BluetoothRemoteGATTCharacteristic { instance_id, )), global, + CanGc::note(), ) } diff --git a/components/script/dom/bluetoothremotegattdescriptor.rs b/components/script/dom/bluetoothremotegattdescriptor.rs index 9492ecd7363..d0b810fd1e4 100644 --- a/components/script/dom/bluetoothremotegattdescriptor.rs +++ b/components/script/dom/bluetoothremotegattdescriptor.rs @@ -66,6 +66,7 @@ impl BluetoothRemoteGATTDescriptor { instance_id, )), global, + CanGc::note(), ) } diff --git a/components/script/dom/bluetoothremotegattserver.rs b/components/script/dom/bluetoothremotegattserver.rs index b386693d172..bbcead3cbe1 100644 --- a/components/script/dom/bluetoothremotegattserver.rs +++ b/components/script/dom/bluetoothremotegattserver.rs @@ -46,6 +46,7 @@ impl BluetoothRemoteGATTServer { reflect_dom_object( Box::new(BluetoothRemoteGATTServer::new_inherited(device)), global, + CanGc::note(), ) } diff --git a/components/script/dom/bluetoothremotegattservice.rs b/components/script/dom/bluetoothremotegattservice.rs index 7d951fea222..223aaf0c0fe 100644 --- a/components/script/dom/bluetoothremotegattservice.rs +++ b/components/script/dom/bluetoothremotegattservice.rs @@ -60,6 +60,7 @@ impl BluetoothRemoteGATTService { device, uuid, isPrimary, instanceID, )), global, + CanGc::note(), ) } diff --git a/components/script/dom/canvasgradient.rs b/components/script/dom/canvasgradient.rs index 93328b545ee..51bdf30ad79 100644 --- a/components/script/dom/canvasgradient.rs +++ b/components/script/dom/canvasgradient.rs @@ -43,7 +43,11 @@ impl CanvasGradient { } pub fn new(global: &GlobalScope, style: CanvasGradientStyle) -> DomRoot<CanvasGradient> { - reflect_dom_object(Box::new(CanvasGradient::new_inherited(style)), global) + reflect_dom_object( + Box::new(CanvasGradient::new_inherited(style)), + global, + CanGc::note(), + ) } } diff --git a/components/script/dom/canvaspattern.rs b/components/script/dom/canvaspattern.rs index a5d0c525799..6224500ca4a 100644 --- a/components/script/dom/canvaspattern.rs +++ b/components/script/dom/canvaspattern.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::canvasgradient::ToFillOrStrokeStyle; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; // https://html.spec.whatwg.org/multipage/#canvaspattern #[dom_struct] @@ -61,6 +62,7 @@ impl CanvasPattern { origin_clean, )), global, + CanGc::note(), ) } pub fn origin_is_clean(&self) -> bool { diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index 592359d486a..889068dff96 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -64,7 +64,7 @@ impl CanvasRenderingContext2D { Some(canvas), size, )); - reflect_dom_object(boxed, global) + reflect_dom_object(boxed, global, CanGc::note()) } // https://html.spec.whatwg.org/multipage/#concept-canvas-set-bitmap-dimensions diff --git a/components/script/dom/client.rs b/components/script/dom/client.rs index 5c87ec2acd2..b0bdd872722 100644 --- a/components/script/dom/client.rs +++ b/components/script/dom/client.rs @@ -14,6 +14,7 @@ use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::serviceworker::ServiceWorker; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct Client { @@ -39,7 +40,11 @@ impl Client { } pub fn new(window: &Window) -> DomRoot<Client> { - reflect_dom_object(Box::new(Client::new_inherited(window.get_url())), window) + reflect_dom_object( + Box::new(Client::new_inherited(window.get_url())), + window, + CanGc::note(), + ) } pub fn creation_url(&self) -> ServoUrl { diff --git a/components/script/dom/compositionevent.rs b/components/script/dom/compositionevent.rs index d48c6f79b53..067b23ec529 100644 --- a/components/script/dom/compositionevent.rs +++ b/components/script/dom/compositionevent.rs @@ -32,7 +32,11 @@ impl CompositionEvent { } pub fn new_uninitialized(window: &Window) -> DomRoot<CompositionEvent> { - reflect_dom_object(Box::new(CompositionEvent::new_inherited()), window) + reflect_dom_object( + Box::new(CompositionEvent::new_inherited()), + window, + CanGc::note(), + ) } #[allow(clippy::too_many_arguments)] diff --git a/components/script/dom/crypto.rs b/components/script/dom/crypto.rs index 39ed78efae0..f15146aaec5 100644 --- a/components/script/dom/crypto.rs +++ b/components/script/dom/crypto.rs @@ -17,7 +17,7 @@ use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use crate::dom::subtlecrypto::SubtleCrypto; -use crate::script_runtime::JSContext; +use crate::script_runtime::{CanGc, JSContext}; // https://developer.mozilla.org/en-US/docs/Web/API/Crypto #[dom_struct] @@ -38,7 +38,7 @@ impl Crypto { } pub fn new(global: &GlobalScope) -> DomRoot<Crypto> { - reflect_dom_object(Box::new(Crypto::new_inherited()), global) + reflect_dom_object(Box::new(Crypto::new_inherited()), global, CanGc::note()) } } diff --git a/components/script/dom/cryptokey.rs b/components/script/dom/cryptokey.rs index 47e52cb1b5d..45fc70814bd 100644 --- a/components/script/dom/cryptokey.rs +++ b/components/script/dom/cryptokey.rs @@ -17,7 +17,7 @@ use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use crate::js::conversions::ToJSValConvertible; -use crate::script_runtime::JSContext; +use crate::script_runtime::{CanGc, JSContext}; /// The underlying cryptographic data this key represents #[allow(dead_code)] @@ -96,6 +96,7 @@ impl CryptoKey { handle, )), global, + CanGc::note(), ); object.algorithm_object.set(algorithm_object.get()); diff --git a/components/script/dom/cssfontfacerule.rs b/components/script/dom/cssfontfacerule.rs index 67027da294a..d0eee47ea91 100644 --- a/components/script/dom/cssfontfacerule.rs +++ b/components/script/dom/cssfontfacerule.rs @@ -13,6 +13,7 @@ use crate::dom::bindings::str::DOMString; use crate::dom::cssrule::{CSSRule, SpecificCSSRule}; use crate::dom::cssstylesheet::CSSStyleSheet; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct CSSFontFaceRule { @@ -45,6 +46,7 @@ impl CSSFontFaceRule { fontfacerule, )), window, + CanGc::note(), ) } } diff --git a/components/script/dom/cssimportrule.rs b/components/script/dom/cssimportrule.rs index 1bebbeb90f7..da63ab7df0e 100644 --- a/components/script/dom/cssimportrule.rs +++ b/components/script/dom/cssimportrule.rs @@ -16,6 +16,7 @@ use crate::dom::bindings::str::DOMString; use crate::dom::cssrule::{CSSRule, SpecificCSSRule}; use crate::dom::cssstylesheet::CSSStyleSheet; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct CSSImportRule { @@ -45,6 +46,7 @@ impl CSSImportRule { reflect_dom_object( Box::new(Self::new_inherited(parent_stylesheet, import_rule)), window, + CanGc::note(), ) } } diff --git a/components/script/dom/csskeyframerule.rs b/components/script/dom/csskeyframerule.rs index c30b6b28fbb..ae0097ab7a9 100644 --- a/components/script/dom/csskeyframerule.rs +++ b/components/script/dom/csskeyframerule.rs @@ -17,6 +17,7 @@ use crate::dom::cssrule::{CSSRule, SpecificCSSRule}; use crate::dom::cssstyledeclaration::{CSSModificationAccess, CSSStyleDeclaration, CSSStyleOwner}; use crate::dom::cssstylesheet::CSSStyleSheet; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct CSSKeyframeRule { @@ -51,6 +52,7 @@ impl CSSKeyframeRule { keyframerule, )), window, + CanGc::note(), ) } } diff --git a/components/script/dom/csskeyframesrule.rs b/components/script/dom/csskeyframesrule.rs index 4457bd0b117..1312dfe4eaa 100644 --- a/components/script/dom/csskeyframesrule.rs +++ b/components/script/dom/csskeyframesrule.rs @@ -21,6 +21,7 @@ use crate::dom::cssrule::{CSSRule, SpecificCSSRule}; use crate::dom::cssrulelist::{CSSRuleList, RulesSource}; use crate::dom::cssstylesheet::CSSStyleSheet; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct CSSKeyframesRule { @@ -55,6 +56,7 @@ impl CSSKeyframesRule { keyframesrule, )), window, + CanGc::note(), ) } diff --git a/components/script/dom/csslayerblockrule.rs b/components/script/dom/csslayerblockrule.rs index dba11279a65..a3d691c563e 100644 --- a/components/script/dom/csslayerblockrule.rs +++ b/components/script/dom/csslayerblockrule.rs @@ -16,6 +16,7 @@ use crate::dom::cssgroupingrule::CSSGroupingRule; use crate::dom::cssrule::SpecificCSSRule; use crate::dom::cssstylesheet::CSSStyleSheet; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct CSSLayerBlockRule { @@ -51,6 +52,7 @@ impl CSSLayerBlockRule { layerblockrule, )), window, + CanGc::note(), ) } } diff --git a/components/script/dom/csslayerstatementrule.rs b/components/script/dom/csslayerstatementrule.rs index 8f012c0e41a..b4859a49b83 100644 --- a/components/script/dom/csslayerstatementrule.rs +++ b/components/script/dom/csslayerstatementrule.rs @@ -17,7 +17,7 @@ use crate::dom::bindings::utils::to_frozen_array; use crate::dom::cssrule::{CSSRule, SpecificCSSRule}; use crate::dom::cssstylesheet::CSSStyleSheet; use crate::dom::window::Window; -use crate::script_runtime::JSContext as SafeJSContext; +use crate::script_runtime::{CanGc, JSContext as SafeJSContext}; #[dom_struct] pub struct CSSLayerStatementRule { @@ -50,6 +50,7 @@ impl CSSLayerStatementRule { layerstatementrule, )), window, + CanGc::note(), ) } } diff --git a/components/script/dom/cssmediarule.rs b/components/script/dom/cssmediarule.rs index 53abf8ffa0a..02753bf3b60 100644 --- a/components/script/dom/cssmediarule.rs +++ b/components/script/dom/cssmediarule.rs @@ -17,6 +17,7 @@ use crate::dom::cssrule::SpecificCSSRule; use crate::dom::cssstylesheet::CSSStyleSheet; use crate::dom::medialist::MediaList; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct CSSMediaRule { @@ -46,6 +47,7 @@ impl CSSMediaRule { reflect_dom_object( Box::new(CSSMediaRule::new_inherited(parent_stylesheet, mediarule)), window, + CanGc::note(), ) } diff --git a/components/script/dom/cssnamespacerule.rs b/components/script/dom/cssnamespacerule.rs index ea2a10bb260..df4fcce690b 100644 --- a/components/script/dom/cssnamespacerule.rs +++ b/components/script/dom/cssnamespacerule.rs @@ -14,6 +14,7 @@ use crate::dom::bindings::str::DOMString; use crate::dom::cssrule::{CSSRule, SpecificCSSRule}; use crate::dom::cssstylesheet::CSSStyleSheet; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct CSSNamespaceRule { @@ -46,6 +47,7 @@ impl CSSNamespaceRule { namespacerule, )), window, + CanGc::note(), ) } } diff --git a/components/script/dom/cssrulelist.rs b/components/script/dom/cssrulelist.rs index 280374ba34d..92cfead1c53 100644 --- a/components/script/dom/cssrulelist.rs +++ b/components/script/dom/cssrulelist.rs @@ -22,6 +22,7 @@ use crate::dom::cssrule::CSSRule; use crate::dom::cssstylesheet::CSSStyleSheet; use crate::dom::htmlelement::HTMLElement; use crate::dom::window::Window; +use crate::script_runtime::CanGc; use crate::stylesheet_loader::StylesheetLoader; unsafe_no_jsmanaged_fields!(RulesSource); @@ -87,6 +88,7 @@ impl CSSRuleList { reflect_dom_object( Box::new(CSSRuleList::new_inherited(parent_stylesheet, rules)), window, + CanGc::note(), ) } diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs index b2d6bb6637e..732077ca6a1 100644 --- a/components/script/dom/cssstyledeclaration.rs +++ b/components/script/dom/cssstyledeclaration.rs @@ -244,6 +244,7 @@ impl CSSStyleDeclaration { modification_access, )), global, + CanGc::note(), ) } diff --git a/components/script/dom/cssstylerule.rs b/components/script/dom/cssstylerule.rs index 8a06cb79abd..dc0414881f2 100644 --- a/components/script/dom/cssstylerule.rs +++ b/components/script/dom/cssstylerule.rs @@ -22,6 +22,7 @@ use crate::dom::cssstyledeclaration::{CSSModificationAccess, CSSStyleDeclaration use crate::dom::cssstylesheet::CSSStyleSheet; use crate::dom::node::{stylesheets_owner_from_node, Node}; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct CSSStyleRule { @@ -53,6 +54,7 @@ impl CSSStyleRule { reflect_dom_object( Box::new(CSSStyleRule::new_inherited(parent_stylesheet, stylerule)), window, + CanGc::note(), ) } } diff --git a/components/script/dom/cssstylesheet.rs b/components/script/dom/cssstylesheet.rs index f25ffa14b8e..4b1a7e1e63a 100644 --- a/components/script/dom/cssstylesheet.rs +++ b/components/script/dom/cssstylesheet.rs @@ -21,6 +21,7 @@ use crate::dom::medialist::MediaList; use crate::dom::node::{stylesheets_owner_from_node, Node}; use crate::dom::stylesheet::StyleSheet; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct CSSStyleSheet { @@ -64,6 +65,7 @@ impl CSSStyleSheet { owner, type_, href, title, stylesheet, )), window, + CanGc::note(), ) } diff --git a/components/script/dom/cssstylevalue.rs b/components/script/dom/cssstylevalue.rs index 83bab3a23a0..1a303634ec6 100644 --- a/components/script/dom/cssstylevalue.rs +++ b/components/script/dom/cssstylevalue.rs @@ -11,6 +11,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] pub struct CSSStyleValue { @@ -27,7 +28,11 @@ impl CSSStyleValue { } pub fn new(global: &GlobalScope, value: String) -> DomRoot<CSSStyleValue> { - reflect_dom_object(Box::new(CSSStyleValue::new_inherited(value)), global) + reflect_dom_object( + Box::new(CSSStyleValue::new_inherited(value)), + global, + CanGc::note(), + ) } } diff --git a/components/script/dom/csssupportsrule.rs b/components/script/dom/csssupportsrule.rs index 18ec34aac0e..ea7d734ea1f 100644 --- a/components/script/dom/csssupportsrule.rs +++ b/components/script/dom/csssupportsrule.rs @@ -15,6 +15,7 @@ use crate::dom::cssconditionrule::CSSConditionRule; use crate::dom::cssrule::SpecificCSSRule; use crate::dom::cssstylesheet::CSSStyleSheet; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct CSSSupportsRule { @@ -48,6 +49,7 @@ impl CSSSupportsRule { supportsrule, )), window, + CanGc::note(), ) } diff --git a/components/script/dom/customelementregistry.rs b/components/script/dom/customelementregistry.rs index aa2bd0cc597..729088e90f0 100644 --- a/components/script/dom/customelementregistry.rs +++ b/components/script/dom/customelementregistry.rs @@ -92,6 +92,7 @@ impl CustomElementRegistry { reflect_dom_object( Box::new(CustomElementRegistry::new_inherited(window)), window, + CanGc::note(), ) } diff --git a/components/script/dom/datatransferitem.rs b/components/script/dom/datatransferitem.rs index 2144666421d..b1d5e1d4480 100644 --- a/components/script/dom/datatransferitem.rs +++ b/components/script/dom/datatransferitem.rs @@ -16,6 +16,7 @@ use crate::dom::bindings::str::DOMString; use crate::dom::file::File; use crate::dom::globalscope::GlobalScope; use crate::drag_data_store::Kind; +use crate::script_runtime::CanGc; #[dom_struct] pub struct DataTransferItem { @@ -34,7 +35,11 @@ impl DataTransferItem { } pub fn new(global: &GlobalScope, item: Kind) -> DomRoot<DataTransferItem> { - reflect_dom_object(Box::new(DataTransferItem::new_inherited(item)), global) + reflect_dom_object( + Box::new(DataTransferItem::new_inherited(item)), + global, + CanGc::note(), + ) } } diff --git a/components/script/dom/datatransferitemlist.rs b/components/script/dom/datatransferitemlist.rs index 9e2192e278b..0a0c44c5e04 100644 --- a/components/script/dom/datatransferitemlist.rs +++ b/components/script/dom/datatransferitemlist.rs @@ -18,7 +18,7 @@ use crate::dom::datatransferitem::DataTransferItem; use crate::dom::file::File; use crate::dom::window::Window; use crate::drag_data_store::{Binary, DragDataStore, Kind, Mode, PlainString}; -use crate::script_runtime::JSContext; +use crate::script_runtime::{CanGc, JSContext}; #[dom_struct] pub struct DataTransferItemList { @@ -46,6 +46,7 @@ impl DataTransferItemList { reflect_dom_object( Box::new(DataTransferItemList::new_inherited(data_store)), window, + CanGc::note(), ) } diff --git a/components/script/dom/dissimilaroriginlocation.rs b/components/script/dom/dissimilaroriginlocation.rs index 338145fe978..12b309d140c 100644 --- a/components/script/dom/dissimilaroriginlocation.rs +++ b/components/script/dom/dissimilaroriginlocation.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::dissimilaroriginwindow::DissimilarOriginWindow; +use crate::script_runtime::CanGc; /// Represents a dissimilar-origin `Location` that exists in another script thread. /// @@ -40,6 +41,7 @@ impl DissimilarOriginLocation { reflect_dom_object( Box::new(DissimilarOriginLocation::new_inherited(window)), window, + CanGc::note(), ) } } diff --git a/components/script/dom/domexception.rs b/components/script/dom/domexception.rs index 136e86434f0..925b35e30db 100644 --- a/components/script/dom/domexception.rs +++ b/components/script/dom/domexception.rs @@ -148,7 +148,11 @@ impl DOMException { pub fn new(global: &GlobalScope, code: DOMErrorName) -> DomRoot<DOMException> { let (message, name) = DOMException::get_error_data_by_code(code); - reflect_dom_object(Box::new(DOMException::new_inherited(message, name)), global) + reflect_dom_object( + Box::new(DOMException::new_inherited(message, name)), + global, + CanGc::note(), + ) } // not an IDL stringifier, used internally diff --git a/components/script/dom/domimplementation.rs b/components/script/dom/domimplementation.rs index b034ad438e4..6d2d9e75c52 100644 --- a/components/script/dom/domimplementation.rs +++ b/components/script/dom/domimplementation.rs @@ -47,7 +47,11 @@ impl DOMImplementation { pub fn new(document: &Document) -> DomRoot<DOMImplementation> { let window = document.window(); - reflect_dom_object(Box::new(DOMImplementation::new_inherited(document)), window) + reflect_dom_object( + Box::new(DOMImplementation::new_inherited(document)), + window, + CanGc::note(), + ) } } diff --git a/components/script/dom/domrect.rs b/components/script/dom/domrect.rs index 01bf727629d..e78b9fdfcbd 100644 --- a/components/script/dom/domrect.rs +++ b/components/script/dom/domrect.rs @@ -78,7 +78,7 @@ impl DOMRectMethods<crate::DomTypeHolder> for DOMRect { fn FromRect(global: &GlobalScope, other: &DOMRectInit) -> DomRoot<DOMRect> { let rect = create_a_domrectreadonly_from_the_dictionary(other); - reflect_dom_object(Box::new(Self { rect }), global) + reflect_dom_object(Box::new(Self { rect }), global, CanGc::note()) } // https://drafts.fxtf.org/geometry/#dom-domrect-x diff --git a/components/script/dom/domrectreadonly.rs b/components/script/dom/domrectreadonly.rs index 239dea9060b..2a04bd3596e 100644 --- a/components/script/dom/domrectreadonly.rs +++ b/components/script/dom/domrectreadonly.rs @@ -93,7 +93,7 @@ impl DOMRectReadOnlyMethods<crate::DomTypeHolder> for DOMRectReadOnly { fn FromRect(global: &GlobalScope, other: &DOMRectInit) -> DomRoot<DOMRectReadOnly> { let dom_rect = create_a_domrectreadonly_from_the_dictionary(other); - reflect_dom_object(Box::new(dom_rect), global) + reflect_dom_object(Box::new(dom_rect), global, CanGc::note()) } // https://drafts.fxtf.org/geometry/#dom-domrectreadonly-x diff --git a/components/script/dom/domstringlist.rs b/components/script/dom/domstringlist.rs index f64841232e0..aa83e81db93 100644 --- a/components/script/dom/domstringlist.rs +++ b/components/script/dom/domstringlist.rs @@ -9,6 +9,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct DOMStringList { @@ -27,7 +28,11 @@ impl DOMStringList { #[allow(unused)] pub fn new(window: &Window, strings: Vec<DOMString>) -> DomRoot<DOMStringList> { - reflect_dom_object(Box::new(DOMStringList::new_inherited(strings)), window) + reflect_dom_object( + Box::new(DOMStringList::new_inherited(strings)), + window, + CanGc::note(), + ) } } diff --git a/components/script/dom/domstringmap.rs b/components/script/dom/domstringmap.rs index eab7f9d3b17..952e5491abb 100644 --- a/components/script/dom/domstringmap.rs +++ b/components/script/dom/domstringmap.rs @@ -29,7 +29,11 @@ impl DOMStringMap { pub fn new(element: &HTMLElement) -> DomRoot<DOMStringMap> { let window = window_from_node(element); - reflect_dom_object(Box::new(DOMStringMap::new_inherited(element)), &*window) + reflect_dom_object( + Box::new(DOMStringMap::new_inherited(element)), + &*window, + CanGc::note(), + ) } } diff --git a/components/script/dom/domtokenlist.rs b/components/script/dom/domtokenlist.rs index 8476dc06cf8..33620c68d21 100644 --- a/components/script/dom/domtokenlist.rs +++ b/components/script/dom/domtokenlist.rs @@ -54,6 +54,7 @@ impl DOMTokenList { supported_tokens, )), &*window, + CanGc::note(), ) } diff --git a/components/script/dom/dynamicmoduleowner.rs b/components/script/dom/dynamicmoduleowner.rs index 889dbae5d84..1a0f3fdb8bf 100644 --- a/components/script/dom/dynamicmoduleowner.rs +++ b/components/script/dom/dynamicmoduleowner.rs @@ -12,6 +12,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; use crate::dom::promise::Promise; +use crate::script_runtime::CanGc; /// An unique id for dynamic module #[derive(Clone, Copy, Debug, Eq, Hash, JSTraceable, PartialEq)] @@ -44,6 +45,7 @@ impl DynamicModuleOwner { reflect_dom_object( Box::new(DynamicModuleOwner::new_inherited(promise, id)), global, + CanGc::note(), ) } } diff --git a/components/script/dom/elementinternals.rs b/components/script/dom/elementinternals.rs index bf6e9059651..1baf20caed5 100644 --- a/components/script/dom/elementinternals.rs +++ b/components/script/dom/elementinternals.rs @@ -89,7 +89,11 @@ impl ElementInternals { pub fn new(element: &HTMLElement) -> DomRoot<ElementInternals> { let global = window_from_node(element); - reflect_dom_object(Box::new(ElementInternals::new_inherited(element)), &*global) + reflect_dom_object( + Box::new(ElementInternals::new_inherited(element)), + &*global, + CanGc::note(), + ) } fn is_target_form_associated(&self) -> bool { diff --git a/components/script/dom/filelist.rs b/components/script/dom/filelist.rs index 44afd40f418..25f463f8dde 100644 --- a/components/script/dom/filelist.rs +++ b/components/script/dom/filelist.rs @@ -11,6 +11,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::file::File; use crate::dom::window::Window; +use crate::script_runtime::CanGc; // https://w3c.github.io/FileAPI/#dfn-filelist #[dom_struct] @@ -35,6 +36,7 @@ impl FileList { files.iter().map(|r| Dom::from_ref(&**r)).collect(), )), window, + CanGc::note(), ) } diff --git a/components/script/dom/gamepadbutton.rs b/components/script/dom/gamepadbutton.rs index 7ed3ed56728..4605983ae6a 100644 --- a/components/script/dom/gamepadbutton.rs +++ b/components/script/dom/gamepadbutton.rs @@ -11,6 +11,7 @@ use crate::dom::bindings::num::Finite; use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GamepadButton { @@ -34,6 +35,7 @@ impl GamepadButton { reflect_dom_object( Box::new(GamepadButton::new_inherited(pressed, touched)), global, + CanGc::note(), ) } } diff --git a/components/script/dom/gamepadbuttonlist.rs b/components/script/dom/gamepadbuttonlist.rs index ef0739ee060..6a7aeb8389f 100644 --- a/components/script/dom/gamepadbuttonlist.rs +++ b/components/script/dom/gamepadbuttonlist.rs @@ -9,6 +9,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot, DomSlice}; use crate::dom::gamepadbutton::GamepadButton; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; // https://w3c.github.io/gamepad/#gamepadbutton-interface #[dom_struct] @@ -27,7 +28,11 @@ impl GamepadButtonList { } pub fn new(global: &GlobalScope, list: &[&GamepadButton]) -> DomRoot<GamepadButtonList> { - reflect_dom_object(Box::new(GamepadButtonList::new_inherited(list)), global) + reflect_dom_object( + Box::new(GamepadButtonList::new_inherited(list)), + global, + CanGc::note(), + ) } } diff --git a/components/script/dom/gamepadpose.rs b/components/script/dom/gamepadpose.rs index 012b1dd7679..4b6005a93f9 100644 --- a/components/script/dom/gamepadpose.rs +++ b/components/script/dom/gamepadpose.rs @@ -10,7 +10,7 @@ use crate::dom::bindings::codegen::Bindings::GamepadPoseBinding::GamepadPoseMeth use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; -use crate::script_runtime::JSContext; +use crate::script_runtime::{CanGc, JSContext}; #[dom_struct] pub struct GamepadPose { @@ -45,7 +45,11 @@ impl GamepadPose { } pub fn new(global: &GlobalScope) -> DomRoot<GamepadPose> { - reflect_dom_object(Box::new(GamepadPose::new_inherited()), global) + reflect_dom_object( + Box::new(GamepadPose::new_inherited()), + global, + CanGc::note(), + ) } } diff --git a/components/script/dom/history.rs b/components/script/dom/history.rs index fb082acd9d7..aa45abdaab0 100644 --- a/components/script/dom/history.rs +++ b/components/script/dom/history.rs @@ -62,7 +62,11 @@ impl History { } pub fn new(window: &Window) -> DomRoot<History> { - reflect_dom_object(Box::new(History::new_inherited(window)), window) + reflect_dom_object( + Box::new(History::new_inherited(window)), + window, + CanGc::note(), + ) } } diff --git a/components/script/dom/htmlcollection.rs b/components/script/dom/htmlcollection.rs index dc95d644d16..b0659484b5a 100644 --- a/components/script/dom/htmlcollection.rs +++ b/components/script/dom/htmlcollection.rs @@ -20,6 +20,7 @@ use crate::dom::bindings::xmlname::namespace_from_domstring; use crate::dom::element::Element; use crate::dom::node::{document_from_node, Node}; use crate::dom::window::Window; +use crate::script_runtime::CanGc; pub trait CollectionFilter: JSTraceable { fn filter<'a>(&self, elem: &'a Element, root: &'a Node) -> bool; @@ -107,6 +108,7 @@ impl HTMLCollection { reflect_dom_object( Box::new(HTMLCollection::new_inherited(root, filter)), window, + CanGc::note(), ) } diff --git a/components/script/dom/htmlformcontrolscollection.rs b/components/script/dom/htmlformcontrolscollection.rs index 4c037fd0632..de9152404c4 100644 --- a/components/script/dom/htmlformcontrolscollection.rs +++ b/components/script/dom/htmlformcontrolscollection.rs @@ -19,6 +19,7 @@ use crate::dom::htmlformelement::HTMLFormElement; use crate::dom::node::Node; use crate::dom::radionodelist::RadioNodeList; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct HTMLFormControlsCollection { @@ -48,6 +49,7 @@ impl HTMLFormControlsCollection { reflect_dom_object( Box::new(HTMLFormControlsCollection::new_inherited(form, filter)), window, + CanGc::note(), ) } } diff --git a/components/script/dom/htmloptionscollection.rs b/components/script/dom/htmloptionscollection.rs index ee36ff158b3..d025f827e70 100644 --- a/components/script/dom/htmloptionscollection.rs +++ b/components/script/dom/htmloptionscollection.rs @@ -51,6 +51,7 @@ impl HTMLOptionsCollection { reflect_dom_object( Box::new(HTMLOptionsCollection::new_inherited(select, filter)), window, + CanGc::note(), ) } diff --git a/components/script/dom/imagebitmap.rs b/components/script/dom/imagebitmap.rs index 9215b889c04..322c898223c 100644 --- a/components/script/dom/imagebitmap.rs +++ b/components/script/dom/imagebitmap.rs @@ -13,6 +13,7 @@ use crate::dom::bindings::error::Fallible; use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] pub struct ImageBitmap { @@ -43,7 +44,7 @@ impl ImageBitmap { //assigning to a variable the return object of new_inherited let imagebitmap = Box::new(ImageBitmap::new_inherited(width, height)); - Ok(reflect_dom_object(imagebitmap, global)) + Ok(reflect_dom_object(imagebitmap, global, CanGc::note())) } pub fn set_bitmap_data(&self, data: Vec<u8>) { diff --git a/components/script/dom/location.rs b/components/script/dom/location.rs index d83e8549bfe..a0ad9f583d8 100644 --- a/components/script/dom/location.rs +++ b/components/script/dom/location.rs @@ -58,7 +58,11 @@ impl Location { } pub fn new(window: &Window) -> DomRoot<Location> { - reflect_dom_object(Box::new(Location::new_inherited(window)), window) + reflect_dom_object( + Box::new(Location::new_inherited(window)), + window, + CanGc::note(), + ) } /// Navigate the relevant `Document`'s browsing context. diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs index 4d43656996c..32c76d2f24e 100644 --- a/components/script/dom/macros.rs +++ b/components/script/dom/macros.rs @@ -663,6 +663,7 @@ macro_rules! impl_performance_entry_struct( use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use crate::dom::performanceentry::PerformanceEntry; + use crate::script_runtime::CanGc; use dom_struct::dom_struct; #[dom_struct] @@ -687,7 +688,7 @@ macro_rules! impl_performance_entry_struct( start_time: CrossProcessInstant, duration: Duration) -> DomRoot<$struct> { let entry = $struct::new_inherited(name, start_time, duration); - reflect_dom_object(Box::new(entry), global) + reflect_dom_object(Box::new(entry), global, CanGc::note()) } } ); diff --git a/components/script/dom/mediadeviceinfo.rs b/components/script/dom/mediadeviceinfo.rs index 57ed374d9aa..a7261229987 100644 --- a/components/script/dom/mediadeviceinfo.rs +++ b/components/script/dom/mediadeviceinfo.rs @@ -13,6 +13,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] pub struct MediaDeviceInfo { @@ -51,6 +52,7 @@ impl MediaDeviceInfo { device_id, kind, label, group_id, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/mediadevices.rs b/components/script/dom/mediadevices.rs index f38a4b10544..fd24ed57bbd 100644 --- a/components/script/dom/mediadevices.rs +++ b/components/script/dom/mediadevices.rs @@ -41,7 +41,11 @@ impl MediaDevices { } pub fn new(global: &GlobalScope) -> DomRoot<MediaDevices> { - reflect_dom_object(Box::new(MediaDevices::new_inherited()), global) + reflect_dom_object( + Box::new(MediaDevices::new_inherited()), + global, + CanGc::note(), + ) } } diff --git a/components/script/dom/mediaerror.rs b/components/script/dom/mediaerror.rs index e527d5e1456..9202634e4d9 100644 --- a/components/script/dom/mediaerror.rs +++ b/components/script/dom/mediaerror.rs @@ -9,6 +9,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct MediaError { @@ -25,7 +26,11 @@ impl MediaError { } pub fn new(window: &Window, code: u16) -> DomRoot<MediaError> { - reflect_dom_object(Box::new(MediaError::new_inherited(code)), window) + reflect_dom_object( + Box::new(MediaError::new_inherited(code)), + window, + CanGc::note(), + ) } } diff --git a/components/script/dom/medialist.rs b/components/script/dom/medialist.rs index faaba530749..244b06c7cb5 100644 --- a/components/script/dom/medialist.rs +++ b/components/script/dom/medialist.rs @@ -18,6 +18,7 @@ use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::cssstylesheet::CSSStyleSheet; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct MediaList { @@ -50,6 +51,7 @@ impl MediaList { reflect_dom_object( Box::new(MediaList::new_inherited(parent_stylesheet, media_queries)), window, + CanGc::note(), ) } diff --git a/components/script/dom/mediaquerylist.rs b/components/script/dom/mediaquerylist.rs index 41c9acabd64..aa019c4a178 100644 --- a/components/script/dom/mediaquerylist.rs +++ b/components/script/dom/mediaquerylist.rs @@ -20,6 +20,7 @@ use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::document::Document; use crate::dom::eventtarget::EventTarget; +use crate::script_runtime::CanGc; pub enum MediaQueryListMatchState { Same, @@ -49,6 +50,7 @@ impl MediaQueryList { reflect_dom_object( Box::new(MediaQueryList::new_inherited(document, media_query_list)), document.window(), + CanGc::note(), ) } } diff --git a/components/script/dom/mediasession.rs b/components/script/dom/mediasession.rs index 8301c6fab5e..96d121904c4 100644 --- a/components/script/dom/mediasession.rs +++ b/components/script/dom/mediasession.rs @@ -62,7 +62,11 @@ impl MediaSession { } pub fn new(window: &Window) -> DomRoot<MediaSession> { - reflect_dom_object(Box::new(MediaSession::new_inherited()), window) + reflect_dom_object( + Box::new(MediaSession::new_inherited()), + window, + CanGc::note(), + ) } pub fn register_media_instance(&self, media_instance: &HTMLMediaElement) { diff --git a/components/script/dom/mediastreamtrack.rs b/components/script/dom/mediastreamtrack.rs index d0429e3ed5a..523d9d12f99 100644 --- a/components/script/dom/mediastreamtrack.rs +++ b/components/script/dom/mediastreamtrack.rs @@ -12,6 +12,7 @@ use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::eventtarget::EventTarget; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] pub struct MediaStreamTrack { @@ -38,7 +39,11 @@ impl MediaStreamTrack { id: MediaStreamId, ty: MediaStreamType, ) -> DomRoot<MediaStreamTrack> { - reflect_dom_object(Box::new(MediaStreamTrack::new_inherited(id, ty)), global) + reflect_dom_object( + Box::new(MediaStreamTrack::new_inherited(id, ty)), + global, + CanGc::note(), + ) } pub fn id(&self) -> MediaStreamId { diff --git a/components/script/dom/messageport.rs b/components/script/dom/messageport.rs index fc0ea06cada..03e3e4228a4 100644 --- a/components/script/dom/messageport.rs +++ b/components/script/dom/messageport.rs @@ -54,7 +54,11 @@ impl MessagePort { /// <https://html.spec.whatwg.org/multipage/#create-a-new-messageport-object> pub fn new(owner: &GlobalScope) -> DomRoot<MessagePort> { let port_id = MessagePortId::new(); - reflect_dom_object(Box::new(MessagePort::new_inherited(port_id)), owner) + reflect_dom_object( + Box::new(MessagePort::new_inherited(port_id)), + owner, + CanGc::note(), + ) } /// Create a new port for an incoming transfer-received one. @@ -71,6 +75,7 @@ impl MessagePort { entangled_port: RefCell::new(entangled_port), }), owner, + CanGc::note(), ) } diff --git a/components/script/dom/mimetypearray.rs b/components/script/dom/mimetypearray.rs index aa4a81438e8..52eb77d3a72 100644 --- a/components/script/dom/mimetypearray.rs +++ b/components/script/dom/mimetypearray.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use crate::dom::mimetype::MimeType; +use crate::script_runtime::CanGc; #[dom_struct] pub struct MimeTypeArray { @@ -24,7 +25,11 @@ impl MimeTypeArray { } pub fn new(global: &GlobalScope) -> DomRoot<MimeTypeArray> { - reflect_dom_object(Box::new(MimeTypeArray::new_inherited()), global) + reflect_dom_object( + Box::new(MimeTypeArray::new_inherited()), + global, + CanGc::note(), + ) } } diff --git a/components/script/dom/mutationrecord.rs b/components/script/dom/mutationrecord.rs index 1b0673ed6d1..5e438a61fd4 100644 --- a/components/script/dom/mutationrecord.rs +++ b/components/script/dom/mutationrecord.rs @@ -11,6 +11,7 @@ use crate::dom::bindings::root::{Dom, DomRoot, MutNullableDom}; use crate::dom::bindings::str::DOMString; use crate::dom::node::{window_from_node, Node}; use crate::dom::nodelist::NodeList; +use crate::script_runtime::CanGc; #[dom_struct] pub struct MutationRecord { @@ -45,7 +46,7 @@ impl MutationRecord { None, None, )); - reflect_dom_object(record, &*window_from_node(target)) + reflect_dom_object(record, &*window_from_node(target), CanGc::note()) } pub fn character_data_mutated( @@ -65,6 +66,7 @@ impl MutationRecord { None, )), &*window_from_node(target), + CanGc::note(), ) } @@ -93,6 +95,7 @@ impl MutationRecord { prev_sibling, )), &*window, + CanGc::note(), ) } diff --git a/components/script/dom/namednodemap.rs b/components/script/dom/namednodemap.rs index f474fae7959..d043591cbfd 100644 --- a/components/script/dom/namednodemap.rs +++ b/components/script/dom/namednodemap.rs @@ -15,6 +15,7 @@ use crate::dom::bindings::str::DOMString; use crate::dom::bindings::xmlname::namespace_from_domstring; use crate::dom::element::Element; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct NamedNodeMap { @@ -31,7 +32,11 @@ impl NamedNodeMap { } pub fn new(window: &Window, elem: &Element) -> DomRoot<NamedNodeMap> { - reflect_dom_object(Box::new(NamedNodeMap::new_inherited(elem)), window) + reflect_dom_object( + Box::new(NamedNodeMap::new_inherited(elem)), + window, + CanGc::note(), + ) } } diff --git a/components/script/dom/navigationpreloadmanager.rs b/components/script/dom/navigationpreloadmanager.rs index 54e01fe84e7..b3965e17cc0 100644 --- a/components/script/dom/navigationpreloadmanager.rs +++ b/components/script/dom/navigationpreloadmanager.rs @@ -40,7 +40,7 @@ impl NavigationPreloadManager { registration: &ServiceWorkerRegistration, ) -> DomRoot<NavigationPreloadManager> { let manager = NavigationPreloadManager::new_inherited(registration); - reflect_dom_object(Box::new(manager), global) + reflect_dom_object(Box::new(manager), global, CanGc::note()) } } diff --git a/components/script/dom/navigator.rs b/components/script/dom/navigator.rs index 01798c0afa7..71ca760882c 100644 --- a/components/script/dom/navigator.rs +++ b/components/script/dom/navigator.rs @@ -80,7 +80,7 @@ impl Navigator { } pub fn new(window: &Window) -> DomRoot<Navigator> { - reflect_dom_object(Box::new(Navigator::new_inherited()), window) + reflect_dom_object(Box::new(Navigator::new_inherited()), window, CanGc::note()) } #[cfg(feature = "webxr")] diff --git a/components/script/dom/nodeiterator.rs b/components/script/dom/nodeiterator.rs index f02343be5df..ede0cee139e 100644 --- a/components/script/dom/nodeiterator.rs +++ b/components/script/dom/nodeiterator.rs @@ -16,6 +16,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot, MutDom}; use crate::dom::document::Document; use crate::dom::node::Node; +use crate::script_runtime::CanGc; #[dom_struct] pub struct NodeIterator { @@ -52,6 +53,7 @@ impl NodeIterator { reflect_dom_object( Box::new(NodeIterator::new_inherited(root_node, what_to_show, filter)), document.window(), + CanGc::note(), ) } diff --git a/components/script/dom/nodelist.rs b/components/script/dom/nodelist.rs index de892783101..cc2b60f7c8d 100644 --- a/components/script/dom/nodelist.rs +++ b/components/script/dom/nodelist.rs @@ -17,6 +17,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::htmlformelement::HTMLFormElement; use crate::dom::node::{ChildrenMutation, Node}; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[derive(JSTraceable, MallocSizeOf)] #[crown::unrooted_must_root_lint::must_root] @@ -46,7 +47,11 @@ impl NodeList { #[allow(crown::unrooted_must_root)] pub fn new(window: &Window, list_type: NodeListType) -> DomRoot<NodeList> { - reflect_dom_object(Box::new(NodeList::new_inherited(list_type)), window) + reflect_dom_object( + Box::new(NodeList::new_inherited(list_type)), + window, + CanGc::note(), + ) } pub fn new_simple_list<T>(window: &Window, iter: T) -> DomRoot<NodeList> diff --git a/components/script/dom/offscreencanvasrenderingcontext2d.rs b/components/script/dom/offscreencanvasrenderingcontext2d.rs index 7eea394842d..974ee519ec4 100644 --- a/components/script/dom/offscreencanvasrenderingcontext2d.rs +++ b/components/script/dom/offscreencanvasrenderingcontext2d.rs @@ -59,7 +59,7 @@ impl OffscreenCanvasRenderingContext2D { let boxed = Box::new(OffscreenCanvasRenderingContext2D::new_inherited( global, canvas, htmlcanvas, )); - reflect_dom_object(boxed, global) + reflect_dom_object(boxed, global, CanGc::note()) } pub fn set_canvas_bitmap_dimensions(&self, size: Size2D<u64>) { diff --git a/components/script/dom/paintrenderingcontext2d.rs b/components/script/dom/paintrenderingcontext2d.rs index e9f93aa50e3..f6c906b2c06 100644 --- a/components/script/dom/paintrenderingcontext2d.rs +++ b/components/script/dom/paintrenderingcontext2d.rs @@ -51,6 +51,7 @@ impl PaintRenderingContext2D { reflect_dom_object( Box::new(PaintRenderingContext2D::new_inherited(global)), global, + CanGc::note(), ) } diff --git a/components/script/dom/paintsize.rs b/components/script/dom/paintsize.rs index b3a1348791e..09cde954640 100644 --- a/components/script/dom/paintsize.rs +++ b/components/script/dom/paintsize.rs @@ -11,6 +11,7 @@ use crate::dom::bindings::num::Finite; use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::paintworkletglobalscope::PaintWorkletGlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] pub struct PaintSize { @@ -32,7 +33,11 @@ impl PaintSize { global: &PaintWorkletGlobalScope, size: Size2D<f32, CSSPixel>, ) -> DomRoot<PaintSize> { - reflect_dom_object(Box::new(PaintSize::new_inherited(size)), global) + reflect_dom_object( + Box::new(PaintSize::new_inherited(size)), + global, + CanGc::note(), + ) } } diff --git a/components/script/dom/performance.rs b/components/script/dom/performance.rs index be440b0080d..f3a6033ab84 100644 --- a/components/script/dom/performance.rs +++ b/components/script/dom/performance.rs @@ -171,6 +171,7 @@ impl Performance { reflect_dom_object( Box::new(Performance::new_inherited(navigation_start)), global, + CanGc::note(), ) } diff --git a/components/script/dom/performanceentry.rs b/components/script/dom/performanceentry.rs index 30a6779c876..ee639856894 100644 --- a/components/script/dom/performanceentry.rs +++ b/components/script/dom/performanceentry.rs @@ -13,6 +13,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] pub struct PerformanceEntry { @@ -53,7 +54,7 @@ impl PerformanceEntry { duration: Duration, ) -> DomRoot<PerformanceEntry> { let entry = PerformanceEntry::new_inherited(name, entry_type, Some(start_time), duration); - reflect_dom_object(Box::new(entry), global) + reflect_dom_object(Box::new(entry), global, CanGc::note()) } pub fn entry_type(&self) -> &DOMString { diff --git a/components/script/dom/performancenavigation.rs b/components/script/dom/performancenavigation.rs index ede953eb081..92863b6bd8b 100644 --- a/components/script/dom/performancenavigation.rs +++ b/components/script/dom/performancenavigation.rs @@ -11,6 +11,7 @@ use crate::dom::bindings::codegen::Bindings::WindowBinding::Window_Binding::Wind use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] pub struct PerformanceNavigation { @@ -25,7 +26,11 @@ impl PerformanceNavigation { } pub fn new(global: &GlobalScope) -> DomRoot<PerformanceNavigation> { - reflect_dom_object(Box::new(PerformanceNavigation::new_inherited()), global) + reflect_dom_object( + Box::new(PerformanceNavigation::new_inherited()), + global, + CanGc::note(), + ) } } diff --git a/components/script/dom/performancenavigationtiming.rs b/components/script/dom/performancenavigationtiming.rs index 844c740a487..955cc09423d 100644 --- a/components/script/dom/performancenavigationtiming.rs +++ b/components/script/dom/performancenavigationtiming.rs @@ -15,6 +15,7 @@ use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::document::Document; use crate::dom::globalscope::GlobalScope; use crate::dom::performanceresourcetiming::{InitiatorType, PerformanceResourceTiming}; +use crate::script_runtime::CanGc; #[dom_struct] // https://w3c.github.io/navigation-timing/#dom-performancenavigationtiming @@ -55,6 +56,7 @@ impl PerformanceNavigationTiming { document, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/performanceobserverentrylist.rs b/components/script/dom/performanceobserverentrylist.rs index 0bea8bada55..12e706abfa2 100644 --- a/components/script/dom/performanceobserverentrylist.rs +++ b/components/script/dom/performanceobserverentrylist.rs @@ -12,6 +12,7 @@ use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use crate::dom::performance::PerformanceEntryList; use crate::dom::performanceentry::PerformanceEntry; +use crate::script_runtime::CanGc; #[dom_struct] pub struct PerformanceObserverEntryList { @@ -33,7 +34,7 @@ impl PerformanceObserverEntryList { entries: PerformanceEntryList, ) -> DomRoot<PerformanceObserverEntryList> { let observer_entry_list = PerformanceObserverEntryList::new_inherited(entries); - reflect_dom_object(Box::new(observer_entry_list), global) + reflect_dom_object(Box::new(observer_entry_list), global, CanGc::note()) } } diff --git a/components/script/dom/performancepainttiming.rs b/components/script/dom/performancepainttiming.rs index 4226ab91960..6bfc06e1bd1 100644 --- a/components/script/dom/performancepainttiming.rs +++ b/components/script/dom/performancepainttiming.rs @@ -12,6 +12,7 @@ use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use crate::dom::performanceentry::PerformanceEntry; +use crate::script_runtime::CanGc; #[dom_struct] pub struct PerformancePaintTiming { @@ -47,6 +48,6 @@ impl PerformancePaintTiming { start_time: CrossProcessInstant, ) -> DomRoot<PerformancePaintTiming> { let entry = PerformancePaintTiming::new_inherited(metric_type, start_time); - reflect_dom_object(Box::new(entry), global) + reflect_dom_object(Box::new(entry), global, CanGc::note()) } } diff --git a/components/script/dom/performanceresourcetiming.rs b/components/script/dom/performanceresourcetiming.rs index de716b05ea2..d571a04c5d9 100644 --- a/components/script/dom/performanceresourcetiming.rs +++ b/components/script/dom/performanceresourcetiming.rs @@ -15,7 +15,7 @@ use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use crate::dom::performanceentry::PerformanceEntry; - +use crate::script_runtime::CanGc; // TODO UA may choose to limit how many resources are included as PerformanceResourceTiming objects // recommended minimum is 150, can be changed by setResourceTimingBufferSize in performance // https://w3c.github.io/resource-timing/#sec-extensions-performance-interface @@ -168,6 +168,7 @@ impl PerformanceResourceTiming { resource_timing, )), global, + CanGc::note(), ) } diff --git a/components/script/dom/permissions.rs b/components/script/dom/permissions.rs index c2a590f997e..d4f78d4fb63 100644 --- a/components/script/dom/permissions.rs +++ b/components/script/dom/permissions.rs @@ -71,7 +71,11 @@ impl Permissions { } pub fn new(global: &GlobalScope) -> DomRoot<Permissions> { - reflect_dom_object(Box::new(Permissions::new_inherited()), global) + reflect_dom_object( + Box::new(Permissions::new_inherited()), + global, + CanGc::note(), + ) } // https://w3c.github.io/permissions/#dom-permissions-query diff --git a/components/script/dom/permissionstatus.rs b/components/script/dom/permissionstatus.rs index c2262ca153d..d34d4a58213 100644 --- a/components/script/dom/permissionstatus.rs +++ b/components/script/dom/permissionstatus.rs @@ -14,6 +14,7 @@ use crate::dom::bindings::reflector::reflect_dom_object; use crate::dom::bindings::root::DomRoot; use crate::dom::eventtarget::EventTarget; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; // https://w3c.github.io/permissions/#permissionstatus #[dom_struct] @@ -36,6 +37,7 @@ impl PermissionStatus { reflect_dom_object( Box::new(PermissionStatus::new_inherited(query.name)), global, + CanGc::note(), ) } diff --git a/components/script/dom/pluginarray.rs b/components/script/dom/pluginarray.rs index a1392ac43f7..fba0efa7093 100644 --- a/components/script/dom/pluginarray.rs +++ b/components/script/dom/pluginarray.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use crate::dom::plugin::Plugin; +use crate::script_runtime::CanGc; #[dom_struct] pub struct PluginArray { @@ -24,7 +25,11 @@ impl PluginArray { } pub fn new(global: &GlobalScope) -> DomRoot<PluginArray> { - reflect_dom_object(Box::new(PluginArray::new_inherited()), global) + reflect_dom_object( + Box::new(PluginArray::new_inherited()), + global, + CanGc::note(), + ) } } diff --git a/components/script/dom/promisenativehandler.rs b/components/script/dom/promisenativehandler.rs index 4b57cd08f63..be071a11abc 100644 --- a/components/script/dom/promisenativehandler.rs +++ b/components/script/dom/promisenativehandler.rs @@ -42,6 +42,7 @@ impl PromiseNativeHandler { reject, }), global, + CanGc::note(), ) } diff --git a/components/script/dom/radionodelist.rs b/components/script/dom/radionodelist.rs index 1614ab62c98..9b1e7a88ca2 100644 --- a/components/script/dom/radionodelist.rs +++ b/components/script/dom/radionodelist.rs @@ -17,6 +17,7 @@ use crate::dom::htmlinputelement::{HTMLInputElement, InputType}; use crate::dom::node::Node; use crate::dom::nodelist::{NodeList, NodeListType, RadioList, RadioListMode}; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct RadioNodeList { @@ -33,7 +34,11 @@ impl RadioNodeList { #[allow(crown::unrooted_must_root)] pub fn new(window: &Window, list_type: NodeListType) -> DomRoot<RadioNodeList> { - reflect_dom_object(Box::new(RadioNodeList::new_inherited(list_type)), window) + reflect_dom_object( + Box::new(RadioNodeList::new_inherited(list_type)), + window, + CanGc::note(), + ) } pub fn new_controls_except_image_inputs( diff --git a/components/script/dom/readablestream.rs b/components/script/dom/readablestream.rs index 76c81d2ed14..2c748391d5b 100644 --- a/components/script/dom/readablestream.rs +++ b/components/script/dom/readablestream.rs @@ -78,6 +78,7 @@ impl ReadableStream { reflect_dom_object( Box::new(ReadableStream::new_inherited(external_underlying_source)), global, + CanGc::note(), ) } diff --git a/components/script/dom/rtcdatachannel.rs b/components/script/dom/rtcdatachannel.rs index dd8c65ed831..55111759a78 100644 --- a/components/script/dom/rtcdatachannel.rs +++ b/components/script/dom/rtcdatachannel.rs @@ -105,6 +105,7 @@ impl RTCDataChannel { servo_media_id, )), global, + CanGc::note(), ); peer_connection.register_data_channel(rtc_data_channel.servo_media_id, &rtc_data_channel); diff --git a/components/script/dom/rtcrtpsender.rs b/components/script/dom/rtcrtpsender.rs index 409254269c0..398ae160347 100644 --- a/components/script/dom/rtcrtpsender.rs +++ b/components/script/dom/rtcrtpsender.rs @@ -29,7 +29,7 @@ impl RTCRtpSender { } pub(crate) fn new(global: &GlobalScope) -> DomRoot<Self> { - reflect_dom_object(Box::new(Self::new_inherited()), global) + reflect_dom_object(Box::new(Self::new_inherited()), global, CanGc::note()) } } diff --git a/components/script/dom/rtcrtptransceiver.rs b/components/script/dom/rtcrtptransceiver.rs index 742bfc62390..514f9fe18cc 100644 --- a/components/script/dom/rtcrtptransceiver.rs +++ b/components/script/dom/rtcrtptransceiver.rs @@ -13,6 +13,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::globalscope::GlobalScope; use crate::dom::rtcrtpsender::RTCRtpSender; +use crate::script_runtime::CanGc; #[dom_struct] pub struct RTCRtpTransceiver { @@ -35,7 +36,11 @@ impl RTCRtpTransceiver { global: &GlobalScope, direction: RTCRtpTransceiverDirection, ) -> DomRoot<Self> { - reflect_dom_object(Box::new(Self::new_inherited(global, direction)), global) + reflect_dom_object( + Box::new(Self::new_inherited(global, direction)), + global, + CanGc::note(), + ) } } diff --git a/components/script/dom/screen.rs b/components/script/dom/screen.rs index 2b29744f6a6..09335176aa4 100644 --- a/components/script/dom/screen.rs +++ b/components/script/dom/screen.rs @@ -14,6 +14,7 @@ use crate::dom::bindings::num::Finite; use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct Screen { @@ -30,7 +31,11 @@ impl Screen { } pub fn new(window: &Window) -> DomRoot<Screen> { - reflect_dom_object(Box::new(Screen::new_inherited(window)), window) + reflect_dom_object( + Box::new(Screen::new_inherited(window)), + window, + CanGc::note(), + ) } fn screen_size(&self) -> Size2D<u32, CSSPixel> { diff --git a/components/script/dom/selection.rs b/components/script/dom/selection.rs index 169f177318d..a6479404c5c 100644 --- a/components/script/dom/selection.rs +++ b/components/script/dom/selection.rs @@ -53,6 +53,7 @@ impl Selection { reflect_dom_object( Box::new(Selection::new_inherited(document)), &*document.global(), + CanGc::note(), ) } diff --git a/components/script/dom/serviceworker.rs b/components/script/dom/serviceworker.rs index 264318cf39f..4c5e21adf08 100644 --- a/components/script/dom/serviceworker.rs +++ b/components/script/dom/serviceworker.rs @@ -71,6 +71,7 @@ impl ServiceWorker { worker_id, )), global, + CanGc::note(), ) } diff --git a/components/script/dom/serviceworkercontainer.rs b/components/script/dom/serviceworkercontainer.rs index 7ea6ea12e1a..5158831bdae 100644 --- a/components/script/dom/serviceworkercontainer.rs +++ b/components/script/dom/serviceworkercontainer.rs @@ -50,7 +50,7 @@ impl ServiceWorkerContainer { pub fn new(global: &GlobalScope) -> DomRoot<ServiceWorkerContainer> { let client = Client::new(global.as_window()); let container = ServiceWorkerContainer::new_inherited(&client); - reflect_dom_object(Box::new(container), global) + reflect_dom_object(Box::new(container), global, CanGc::note()) } } diff --git a/components/script/dom/serviceworkerregistration.rs b/components/script/dom/serviceworkerregistration.rs index 59a4cb698bd..0f48c7339a9 100644 --- a/components/script/dom/serviceworkerregistration.rs +++ b/components/script/dom/serviceworkerregistration.rs @@ -24,6 +24,7 @@ use crate::dom::globalscope::GlobalScope; use crate::dom::navigationpreloadmanager::NavigationPreloadManager; use crate::dom::serviceworker::ServiceWorker; use crate::dom::workerglobalscope::prepare_workerscope_init; +use crate::script_runtime::CanGc; #[dom_struct] pub struct ServiceWorkerRegistration { @@ -74,6 +75,7 @@ impl ServiceWorkerRegistration { registration_id, )), global, + CanGc::note(), ) } diff --git a/components/script/dom/servoparser/mod.rs b/components/script/dom/servoparser/mod.rs index 2a2b19ad061..72eabc6ed58 100644 --- a/components/script/dom/servoparser/mod.rs +++ b/components/script/dom/servoparser/mod.rs @@ -466,6 +466,7 @@ impl ServoParser { reflect_dom_object( Box::new(ServoParser::new_inherited(document, tokenizer, kind)), document.window(), + CanGc::note(), ) } diff --git a/components/script/dom/shadowroot.rs b/components/script/dom/shadowroot.rs index 77c4ba99b2a..ea7b778f1ff 100644 --- a/components/script/dom/shadowroot.rs +++ b/components/script/dom/shadowroot.rs @@ -98,6 +98,7 @@ impl ShadowRoot { reflect_dom_object( Box::new(ShadowRoot::new_inherited(host, document, mode, clonable)), document.window(), + CanGc::note(), ) } diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index 4e230f554f7..d7dbe6f8529 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -39,7 +39,11 @@ impl Storage { } pub fn new(global: &Window, storage_type: StorageType) -> DomRoot<Storage> { - reflect_dom_object(Box::new(Storage::new_inherited(storage_type)), global) + reflect_dom_object( + Box::new(Storage::new_inherited(storage_type)), + global, + CanGc::note(), + ) } fn get_url(&self) -> ServoUrl { diff --git a/components/script/dom/stylepropertymapreadonly.rs b/components/script/dom/stylepropertymapreadonly.rs index 96eb481e90d..76e25c362e3 100644 --- a/components/script/dom/stylepropertymapreadonly.rs +++ b/components/script/dom/stylepropertymapreadonly.rs @@ -16,6 +16,7 @@ use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::cssstylevalue::CSSStyleValue; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] pub struct StylePropertyMapReadOnly { @@ -56,6 +57,7 @@ impl StylePropertyMapReadOnly { reflect_dom_object( Box::new(StylePropertyMapReadOnly::new_inherited(iter)), global, + CanGc::note(), ) } } diff --git a/components/script/dom/stylesheetlist.rs b/components/script/dom/stylesheetlist.rs index 87d5838bfee..edfbbed5367 100644 --- a/components/script/dom/stylesheetlist.rs +++ b/components/script/dom/stylesheetlist.rs @@ -15,6 +15,7 @@ use crate::dom::element::Element; use crate::dom::shadowroot::ShadowRoot; use crate::dom::stylesheet::StyleSheet; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[crown::unrooted_must_root_lint::must_root] #[derive(JSTraceable, MallocSizeOf)] @@ -83,7 +84,11 @@ impl StyleSheetList { #[allow(crown::unrooted_must_root)] pub fn new(window: &Window, doc_or_sr: StyleSheetListOwner) -> DomRoot<StyleSheetList> { - reflect_dom_object(Box::new(StyleSheetList::new_inherited(doc_or_sr)), window) + reflect_dom_object( + Box::new(StyleSheetList::new_inherited(doc_or_sr)), + window, + CanGc::note(), + ) } } diff --git a/components/script/dom/subtlecrypto.rs b/components/script/dom/subtlecrypto.rs index fe37f7d724c..df679b72621 100644 --- a/components/script/dom/subtlecrypto.rs +++ b/components/script/dom/subtlecrypto.rs @@ -135,7 +135,11 @@ impl SubtleCrypto { } pub(crate) fn new(global: &GlobalScope) -> DomRoot<SubtleCrypto> { - reflect_dom_object(Box::new(SubtleCrypto::new_inherited()), global) + reflect_dom_object( + Box::new(SubtleCrypto::new_inherited()), + global, + CanGc::note(), + ) } fn task_source_with_canceller(&self) -> (DOMManipulationTaskSource, TaskCanceller) { diff --git a/components/script/dom/testrunner.rs b/components/script/dom/testrunner.rs index 701884f2844..1d0dd0177ce 100644 --- a/components/script/dom/testrunner.rs +++ b/components/script/dom/testrunner.rs @@ -14,6 +14,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; // https://webbluetoothcg.github.io/web-bluetooth/tests#test-runner #[dom_struct] @@ -29,7 +30,7 @@ impl TestRunner { } pub fn new(global: &GlobalScope) -> DomRoot<TestRunner> { - reflect_dom_object(Box::new(TestRunner::new_inherited()), global) + reflect_dom_object(Box::new(TestRunner::new_inherited()), global, CanGc::note()) } fn get_bluetooth_thread(&self) -> IpcSender<BluetoothRequest> { diff --git a/components/script/dom/textmetrics.rs b/components/script/dom/textmetrics.rs index 6f7af09809e..cd4245f5f70 100644 --- a/components/script/dom/textmetrics.rs +++ b/components/script/dom/textmetrics.rs @@ -9,6 +9,7 @@ use crate::dom::bindings::num::Finite; use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] #[allow(non_snake_case)] @@ -94,6 +95,7 @@ impl TextMetrics { ideographicBaseline, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/texttrack.rs b/components/script/dom/texttrack.rs index a5d4686b796..61b485f1bb0 100644 --- a/components/script/dom/texttrack.rs +++ b/components/script/dom/texttrack.rs @@ -19,6 +19,7 @@ use crate::dom::texttrackcue::TextTrackCue; use crate::dom::texttrackcuelist::TextTrackCueList; use crate::dom::texttracklist::TextTrackList; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct TextTrack { @@ -67,6 +68,7 @@ impl TextTrack { id, kind, label, language, mode, track_list, )), window, + CanGc::note(), ) } diff --git a/components/script/dom/texttrackcue.rs b/components/script/dom/texttrackcue.rs index f3c1d885a1a..7d3711420f2 100644 --- a/components/script/dom/texttrackcue.rs +++ b/components/script/dom/texttrackcue.rs @@ -15,6 +15,7 @@ use crate::dom::bindings::str::DOMString; use crate::dom::eventtarget::EventTarget; use crate::dom::texttrack::TextTrack; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct TextTrackCue { @@ -54,6 +55,7 @@ impl TextTrackCue { reflect_dom_object( Box::new(TextTrackCue::new_inherited(id, start_time, end_time, track)), window, + CanGc::note(), ) } diff --git a/components/script/dom/texttrackcuelist.rs b/components/script/dom/texttrackcuelist.rs index 69c2f836a59..ba0f6295a1e 100644 --- a/components/script/dom/texttrackcuelist.rs +++ b/components/script/dom/texttrackcuelist.rs @@ -11,6 +11,7 @@ use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::texttrackcue::TextTrackCue; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct TextTrackCueList { @@ -27,7 +28,11 @@ impl TextTrackCueList { } pub fn new(window: &Window, cues: &[&TextTrackCue]) -> DomRoot<TextTrackCueList> { - reflect_dom_object(Box::new(TextTrackCueList::new_inherited(cues)), window) + reflect_dom_object( + Box::new(TextTrackCueList::new_inherited(cues)), + window, + CanGc::note(), + ) } pub fn item(&self, idx: usize) -> Option<DomRoot<TextTrackCue>> { diff --git a/components/script/dom/texttracklist.rs b/components/script/dom/texttracklist.rs index e5a3ad52c2c..d938b8e1dfd 100644 --- a/components/script/dom/texttracklist.rs +++ b/components/script/dom/texttracklist.rs @@ -35,7 +35,11 @@ impl TextTrackList { } pub fn new(window: &Window, tracks: &[&TextTrack]) -> DomRoot<TextTrackList> { - reflect_dom_object(Box::new(TextTrackList::new_inherited(tracks)), window) + reflect_dom_object( + Box::new(TextTrackList::new_inherited(tracks)), + window, + CanGc::note(), + ) } pub fn item(&self, idx: usize) -> Option<DomRoot<TextTrack>> { diff --git a/components/script/dom/timeranges.rs b/components/script/dom/timeranges.rs index c5fe744489d..60a7ec679cd 100644 --- a/components/script/dom/timeranges.rs +++ b/components/script/dom/timeranges.rs @@ -12,6 +12,7 @@ use crate::dom::bindings::num::Finite; use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[derive(Clone, JSTraceable, MallocSizeOf)] struct TimeRange { @@ -139,7 +140,11 @@ impl TimeRanges { } pub fn new(window: &Window, ranges: TimeRangesContainer) -> DomRoot<TimeRanges> { - reflect_dom_object(Box::new(TimeRanges::new_inherited(ranges)), window) + reflect_dom_object( + Box::new(TimeRanges::new_inherited(ranges)), + window, + CanGc::note(), + ) } } diff --git a/components/script/dom/touch.rs b/components/script/dom/touch.rs index 982f74a58bc..9ac50b8058d 100644 --- a/components/script/dom/touch.rs +++ b/components/script/dom/touch.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::{DomRoot, MutDom}; use crate::dom::eventtarget::EventTarget; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct Touch { @@ -66,6 +67,7 @@ impl Touch { identifier, target, screen_x, screen_y, client_x, client_y, page_x, page_y, )), window, + CanGc::note(), ) } } diff --git a/components/script/dom/touchevent.rs b/components/script/dom/touchevent.rs index 7ef9e20b899..fb402d6d806 100644 --- a/components/script/dom/touchevent.rs +++ b/components/script/dom/touchevent.rs @@ -16,6 +16,7 @@ use crate::dom::event::{EventBubbles, EventCancelable}; use crate::dom::touchlist::TouchList; use crate::dom::uievent::UIEvent; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct TouchEvent { @@ -60,6 +61,7 @@ impl TouchEvent { target_touches, )), window, + CanGc::note(), ) } diff --git a/components/script/dom/touchlist.rs b/components/script/dom/touchlist.rs index e139f23b2af..9991b14aa71 100644 --- a/components/script/dom/touchlist.rs +++ b/components/script/dom/touchlist.rs @@ -9,6 +9,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::touch::Touch; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct TouchList { @@ -25,7 +26,11 @@ impl TouchList { } pub fn new(window: &Window, touches: &[&Touch]) -> DomRoot<TouchList> { - reflect_dom_object(Box::new(TouchList::new_inherited(touches)), window) + reflect_dom_object( + Box::new(TouchList::new_inherited(touches)), + window, + CanGc::note(), + ) } } diff --git a/components/script/dom/treewalker.rs b/components/script/dom/treewalker.rs index 22631b65d38..036c8987633 100644 --- a/components/script/dom/treewalker.rs +++ b/components/script/dom/treewalker.rs @@ -16,6 +16,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot, MutDom}; use crate::dom::document::Document; use crate::dom::node::Node; +use crate::script_runtime::CanGc; // https://dom.spec.whatwg.org/#interface-treewalker #[dom_struct] @@ -50,6 +51,7 @@ impl TreeWalker { reflect_dom_object( Box::new(TreeWalker::new_inherited(root_node, what_to_show, filter)), document.window(), + CanGc::note(), ) } diff --git a/components/script/dom/validitystate.rs b/components/script/dom/validitystate.rs index 2e50da1a254..a6593fab941 100755 --- a/components/script/dom/validitystate.rs +++ b/components/script/dom/validitystate.rs @@ -22,6 +22,7 @@ use crate::dom::htmlfieldsetelement::HTMLFieldSetElement; use crate::dom::htmlformelement::FormControlElementHelpers; use crate::dom::node::Node; use crate::dom::window::Window; +use crate::script_runtime::CanGc; // https://html.spec.whatwg.org/multipage/#validity-states #[derive(Clone, Copy, JSTraceable, MallocSizeOf)] @@ -91,7 +92,11 @@ impl ValidityState { } pub fn new(window: &Window, element: &Element) -> DomRoot<ValidityState> { - reflect_dom_object(Box::new(ValidityState::new_inherited(element)), window) + reflect_dom_object( + Box::new(ValidityState::new_inherited(element)), + window, + CanGc::note(), + ) } // https://html.spec.whatwg.org/multipage/#custom-validity-error-message diff --git a/components/script/dom/videotrack.rs b/components/script/dom/videotrack.rs index d417a246541..6d035eec04c 100644 --- a/components/script/dom/videotrack.rs +++ b/components/script/dom/videotrack.rs @@ -13,6 +13,7 @@ use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::videotracklist::VideoTrackList; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct VideoTrack { @@ -57,6 +58,7 @@ impl VideoTrack { id, kind, label, language, track_list, )), window, + CanGc::note(), ) } diff --git a/components/script/dom/videotracklist.rs b/components/script/dom/videotracklist.rs index 465fc7a705f..650c5ffe526 100644 --- a/components/script/dom/videotracklist.rs +++ b/components/script/dom/videotracklist.rs @@ -45,6 +45,7 @@ impl VideoTrackList { reflect_dom_object( Box::new(VideoTrackList::new_inherited(tracks, media_element)), window, + CanGc::note(), ) } diff --git a/components/script/dom/visibilitystateentry.rs b/components/script/dom/visibilitystateentry.rs index 8d150a369da..b650bdc54e6 100644 --- a/components/script/dom/visibilitystateentry.rs +++ b/components/script/dom/visibilitystateentry.rs @@ -17,6 +17,7 @@ use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use crate::dom::performanceentry::PerformanceEntry; +use crate::script_runtime::CanGc; #[dom_struct] pub struct VisibilityStateEntry { @@ -51,6 +52,7 @@ impl VisibilityStateEntry { reflect_dom_object( Box::new(VisibilityStateEntry::new_inherited(state, timestamp)), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgl2renderingcontext.rs b/components/script/dom/webgl2renderingcontext.rs index acafcf04bc6..a38a974a166 100644 --- a/components/script/dom/webgl2renderingcontext.rs +++ b/components/script/dom/webgl2renderingcontext.rs @@ -192,7 +192,7 @@ impl WebGL2RenderingContext { can_gc: CanGc, ) -> Option<DomRoot<WebGL2RenderingContext>> { WebGL2RenderingContext::new_inherited(window, canvas, size, attrs, can_gc) - .map(|ctx| reflect_dom_object(Box::new(ctx), window)) + .map(|ctx| reflect_dom_object(Box::new(ctx), window, can_gc)) } #[allow(unsafe_code)] diff --git a/components/script/dom/webgl_extensions/ext/angleinstancedarrays.rs b/components/script/dom/webgl_extensions/ext/angleinstancedarrays.rs index becfac57266..6bd8b445241 100644 --- a/components/script/dom/webgl_extensions/ext/angleinstancedarrays.rs +++ b/components/script/dom/webgl_extensions/ext/angleinstancedarrays.rs @@ -12,6 +12,7 @@ use crate::dom::bindings::codegen::Bindings::ANGLEInstancedArraysBinding::{ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::webglrenderingcontext::WebGLRenderingContext; +use crate::script_runtime::CanGc; #[dom_struct] pub struct ANGLEInstancedArrays { @@ -35,6 +36,7 @@ impl WebGLExtension for ANGLEInstancedArrays { reflect_dom_object( Box::new(ANGLEInstancedArrays::new_inherited(ctx)), &*ctx.global(), + CanGc::note(), ) } diff --git a/components/script/dom/webgl_extensions/ext/extblendminmax.rs b/components/script/dom/webgl_extensions/ext/extblendminmax.rs index 97c4a642f9b..b18d88cacb7 100644 --- a/components/script/dom/webgl_extensions/ext/extblendminmax.rs +++ b/components/script/dom/webgl_extensions/ext/extblendminmax.rs @@ -9,6 +9,7 @@ use super::{WebGLExtension, WebGLExtensionSpec, WebGLExtensions}; use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglrenderingcontext::WebGLRenderingContext; +use crate::script_runtime::CanGc; #[dom_struct] pub struct EXTBlendMinmax { @@ -27,7 +28,11 @@ impl WebGLExtension for EXTBlendMinmax { type Extension = Self; fn new(ctx: &WebGLRenderingContext) -> DomRoot<Self> { - reflect_dom_object(Box::new(Self::new_inherited()), &*ctx.global()) + reflect_dom_object( + Box::new(Self::new_inherited()), + &*ctx.global(), + CanGc::note(), + ) } fn spec() -> WebGLExtensionSpec { diff --git a/components/script/dom/webgl_extensions/ext/extcolorbufferhalffloat.rs b/components/script/dom/webgl_extensions/ext/extcolorbufferhalffloat.rs index 48d69b78ab4..f2ec665ea4d 100644 --- a/components/script/dom/webgl_extensions/ext/extcolorbufferhalffloat.rs +++ b/components/script/dom/webgl_extensions/ext/extcolorbufferhalffloat.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::webgl_extensions::ext::oestexturehalffloat::OESTextureHalfFloat; use crate::dom::webglrenderingcontext::WebGLRenderingContext; +use crate::script_runtime::CanGc; #[dom_struct] pub struct EXTColorBufferHalfFloat { @@ -30,6 +31,7 @@ impl WebGLExtension for EXTColorBufferHalfFloat { reflect_dom_object( Box::new(EXTColorBufferHalfFloat::new_inherited()), &*ctx.global(), + CanGc::note(), ) } diff --git a/components/script/dom/webgl_extensions/ext/extfragdepth.rs b/components/script/dom/webgl_extensions/ext/extfragdepth.rs index 056286137a4..ae4d9fac5d9 100644 --- a/components/script/dom/webgl_extensions/ext/extfragdepth.rs +++ b/components/script/dom/webgl_extensions/ext/extfragdepth.rs @@ -9,6 +9,7 @@ use super::{WebGLExtension, WebGLExtensionSpec, WebGLExtensions}; use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglrenderingcontext::WebGLRenderingContext; +use crate::script_runtime::CanGc; #[dom_struct] pub struct EXTFragDepth { @@ -27,7 +28,11 @@ impl WebGLExtension for EXTFragDepth { type Extension = Self; fn new(ctx: &WebGLRenderingContext) -> DomRoot<Self> { - reflect_dom_object(Box::new(Self::new_inherited()), &*ctx.global()) + reflect_dom_object( + Box::new(Self::new_inherited()), + &*ctx.global(), + CanGc::note(), + ) } fn spec() -> WebGLExtensionSpec { diff --git a/components/script/dom/webgl_extensions/ext/extshadertexturelod.rs b/components/script/dom/webgl_extensions/ext/extshadertexturelod.rs index 65c39edb6a2..a7bbe262c7b 100644 --- a/components/script/dom/webgl_extensions/ext/extshadertexturelod.rs +++ b/components/script/dom/webgl_extensions/ext/extshadertexturelod.rs @@ -9,6 +9,7 @@ use super::{WebGLExtension, WebGLExtensionSpec, WebGLExtensions}; use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglrenderingcontext::WebGLRenderingContext; +use crate::script_runtime::CanGc; #[dom_struct] pub struct EXTShaderTextureLod { @@ -27,7 +28,11 @@ impl WebGLExtension for EXTShaderTextureLod { type Extension = Self; fn new(ctx: &WebGLRenderingContext) -> DomRoot<Self> { - reflect_dom_object(Box::new(Self::new_inherited()), &*ctx.global()) + reflect_dom_object( + Box::new(Self::new_inherited()), + &*ctx.global(), + CanGc::note(), + ) } fn spec() -> WebGLExtensionSpec { diff --git a/components/script/dom/webgl_extensions/ext/exttexturefilteranisotropic.rs b/components/script/dom/webgl_extensions/ext/exttexturefilteranisotropic.rs index c5de4cea880..58e2b05b50b 100644 --- a/components/script/dom/webgl_extensions/ext/exttexturefilteranisotropic.rs +++ b/components/script/dom/webgl_extensions/ext/exttexturefilteranisotropic.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::codegen::Bindings::EXTTextureFilterAnisotropicBinding: use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglrenderingcontext::WebGLRenderingContext; +use crate::script_runtime::CanGc; #[dom_struct] pub struct EXTTextureFilterAnisotropic { @@ -28,7 +29,11 @@ impl WebGLExtension for EXTTextureFilterAnisotropic { type Extension = EXTTextureFilterAnisotropic; fn new(ctx: &WebGLRenderingContext) -> DomRoot<Self> { - reflect_dom_object(Box::new(Self::new_inherited()), &*ctx.global()) + reflect_dom_object( + Box::new(Self::new_inherited()), + &*ctx.global(), + CanGc::note(), + ) } fn spec() -> WebGLExtensionSpec { diff --git a/components/script/dom/webgl_extensions/ext/oeselementindexuint.rs b/components/script/dom/webgl_extensions/ext/oeselementindexuint.rs index 77ba300caef..2425c42ce4f 100644 --- a/components/script/dom/webgl_extensions/ext/oeselementindexuint.rs +++ b/components/script/dom/webgl_extensions/ext/oeselementindexuint.rs @@ -9,6 +9,7 @@ use super::{WebGLExtension, WebGLExtensionSpec, WebGLExtensions}; use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglrenderingcontext::WebGLRenderingContext; +use crate::script_runtime::CanGc; #[dom_struct] pub struct OESElementIndexUint { @@ -30,6 +31,7 @@ impl WebGLExtension for OESElementIndexUint { reflect_dom_object( Box::new(OESElementIndexUint::new_inherited()), &*ctx.global(), + CanGc::note(), ) } diff --git a/components/script/dom/webgl_extensions/ext/oesstandardderivatives.rs b/components/script/dom/webgl_extensions/ext/oesstandardderivatives.rs index 9a552216cc4..5afc46b3597 100644 --- a/components/script/dom/webgl_extensions/ext/oesstandardderivatives.rs +++ b/components/script/dom/webgl_extensions/ext/oesstandardderivatives.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::codegen::Bindings::OESStandardDerivativesBinding::OESS use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglrenderingcontext::WebGLRenderingContext; +use crate::script_runtime::CanGc; #[dom_struct] pub struct OESStandardDerivatives { @@ -30,6 +31,7 @@ impl WebGLExtension for OESStandardDerivatives { reflect_dom_object( Box::new(OESStandardDerivatives::new_inherited()), &*ctx.global(), + CanGc::note(), ) } diff --git a/components/script/dom/webgl_extensions/ext/oestexturefloat.rs b/components/script/dom/webgl_extensions/ext/oestexturefloat.rs index b7d87594a42..a7e738828ac 100644 --- a/components/script/dom/webgl_extensions/ext/oestexturefloat.rs +++ b/components/script/dom/webgl_extensions/ext/oestexturefloat.rs @@ -9,6 +9,7 @@ use super::{constants as webgl, WebGLExtension, WebGLExtensionSpec, WebGLExtensi use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglrenderingcontext::WebGLRenderingContext; +use crate::script_runtime::CanGc; #[dom_struct] pub struct OESTextureFloat { @@ -26,7 +27,11 @@ impl OESTextureFloat { impl WebGLExtension for OESTextureFloat { type Extension = OESTextureFloat; fn new(ctx: &WebGLRenderingContext) -> DomRoot<OESTextureFloat> { - reflect_dom_object(Box::new(OESTextureFloat::new_inherited()), &*ctx.global()) + reflect_dom_object( + Box::new(OESTextureFloat::new_inherited()), + &*ctx.global(), + CanGc::note(), + ) } fn spec() -> WebGLExtensionSpec { diff --git a/components/script/dom/webgl_extensions/ext/oestexturefloatlinear.rs b/components/script/dom/webgl_extensions/ext/oestexturefloatlinear.rs index eee682a4327..4bd2afd171f 100644 --- a/components/script/dom/webgl_extensions/ext/oestexturefloatlinear.rs +++ b/components/script/dom/webgl_extensions/ext/oestexturefloatlinear.rs @@ -8,6 +8,7 @@ use super::{constants as webgl, WebGLExtension, WebGLExtensionSpec, WebGLExtensi use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglrenderingcontext::WebGLRenderingContext; +use crate::script_runtime::CanGc; #[dom_struct] pub struct OESTextureFloatLinear { @@ -28,6 +29,7 @@ impl WebGLExtension for OESTextureFloatLinear { reflect_dom_object( Box::new(OESTextureFloatLinear::new_inherited()), &*ctx.global(), + CanGc::note(), ) } diff --git a/components/script/dom/webgl_extensions/ext/oestexturehalffloat.rs b/components/script/dom/webgl_extensions/ext/oestexturehalffloat.rs index 49724a1aa21..92bfffeeea5 100644 --- a/components/script/dom/webgl_extensions/ext/oestexturehalffloat.rs +++ b/components/script/dom/webgl_extensions/ext/oestexturehalffloat.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::codegen::Bindings::OESTextureHalfFloatBinding::OESText use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglrenderingcontext::WebGLRenderingContext; +use crate::script_runtime::CanGc; #[dom_struct] pub struct OESTextureHalfFloat { @@ -30,6 +31,7 @@ impl WebGLExtension for OESTextureHalfFloat { reflect_dom_object( Box::new(OESTextureHalfFloat::new_inherited()), &*ctx.global(), + CanGc::note(), ) } diff --git a/components/script/dom/webgl_extensions/ext/oestexturehalffloatlinear.rs b/components/script/dom/webgl_extensions/ext/oestexturehalffloatlinear.rs index c25bf855b6e..ee0e5c10cb4 100644 --- a/components/script/dom/webgl_extensions/ext/oestexturehalffloatlinear.rs +++ b/components/script/dom/webgl_extensions/ext/oestexturehalffloatlinear.rs @@ -9,6 +9,7 @@ use crate::dom::bindings::codegen::Bindings::OESTextureHalfFloatBinding::OESText use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglrenderingcontext::WebGLRenderingContext; +use crate::script_runtime::CanGc; #[dom_struct] pub struct OESTextureHalfFloatLinear { @@ -29,6 +30,7 @@ impl WebGLExtension for OESTextureHalfFloatLinear { reflect_dom_object( Box::new(OESTextureHalfFloatLinear::new_inherited()), &*ctx.global(), + CanGc::note(), ) } diff --git a/components/script/dom/webgl_extensions/ext/oesvertexarrayobject.rs b/components/script/dom/webgl_extensions/ext/oesvertexarrayobject.rs index 7edabae4b73..a2ed17aea16 100644 --- a/components/script/dom/webgl_extensions/ext/oesvertexarrayobject.rs +++ b/components/script/dom/webgl_extensions/ext/oesvertexarrayobject.rs @@ -13,6 +13,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::webglrenderingcontext::WebGLRenderingContext; use crate::dom::webglvertexarrayobjectoes::WebGLVertexArrayObjectOES; +use crate::script_runtime::CanGc; #[dom_struct] pub struct OESVertexArrayObject { @@ -57,6 +58,7 @@ impl WebGLExtension for OESVertexArrayObject { reflect_dom_object( Box::new(OESVertexArrayObject::new_inherited(ctx)), &*ctx.global(), + CanGc::note(), ) } diff --git a/components/script/dom/webgl_extensions/ext/webglcolorbufferfloat.rs b/components/script/dom/webgl_extensions/ext/webglcolorbufferfloat.rs index 30466b49cdc..71fbaf3ae05 100644 --- a/components/script/dom/webgl_extensions/ext/webglcolorbufferfloat.rs +++ b/components/script/dom/webgl_extensions/ext/webglcolorbufferfloat.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::webgl_extensions::ext::oestexturefloat::OESTextureFloat; use crate::dom::webglrenderingcontext::WebGLRenderingContext; +use crate::script_runtime::CanGc; #[dom_struct] pub struct WEBGLColorBufferFloat { @@ -30,6 +31,7 @@ impl WebGLExtension for WEBGLColorBufferFloat { reflect_dom_object( Box::new(WEBGLColorBufferFloat::new_inherited()), &*ctx.global(), + CanGc::note(), ) } diff --git a/components/script/dom/webgl_extensions/ext/webglcompressedtextureetc1.rs b/components/script/dom/webgl_extensions/ext/webglcompressedtextureetc1.rs index c04dceebca0..48ce0c36e10 100644 --- a/components/script/dom/webgl_extensions/ext/webglcompressedtextureetc1.rs +++ b/components/script/dom/webgl_extensions/ext/webglcompressedtextureetc1.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglrenderingcontext::WebGLRenderingContext; use crate::dom::webgltexture::{TexCompression, TexCompressionValidation}; +use crate::script_runtime::CanGc; #[dom_struct] pub struct WEBGLCompressedTextureETC1 { @@ -30,6 +31,7 @@ impl WebGLExtension for WEBGLCompressedTextureETC1 { reflect_dom_object( Box::new(WEBGLCompressedTextureETC1::new_inherited()), &*ctx.global(), + CanGc::note(), ) } diff --git a/components/script/dom/webgl_extensions/ext/webglcompressedtextures3tc.rs b/components/script/dom/webgl_extensions/ext/webglcompressedtextures3tc.rs index 22d9899db43..63c39756d78 100644 --- a/components/script/dom/webgl_extensions/ext/webglcompressedtextures3tc.rs +++ b/components/script/dom/webgl_extensions/ext/webglcompressedtextures3tc.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglrenderingcontext::WebGLRenderingContext; use crate::dom::webgltexture::{TexCompression, TexCompressionValidation}; +use crate::script_runtime::CanGc; #[dom_struct] pub struct WEBGLCompressedTextureS3TC { @@ -30,6 +31,7 @@ impl WebGLExtension for WEBGLCompressedTextureS3TC { reflect_dom_object( Box::new(WEBGLCompressedTextureS3TC::new_inherited()), &*ctx.global(), + CanGc::note(), ) } diff --git a/components/script/dom/webglactiveinfo.rs b/components/script/dom/webglactiveinfo.rs index 0a8a5b87f68..744f7fe6195 100644 --- a/components/script/dom/webglactiveinfo.rs +++ b/components/script/dom/webglactiveinfo.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct WebGLActiveInfo { @@ -34,6 +35,7 @@ impl WebGLActiveInfo { reflect_dom_object( Box::new(WebGLActiveInfo::new_inherited(size, ty, name)), window, + CanGc::note(), ) } } diff --git a/components/script/dom/webglbuffer.rs b/components/script/dom/webglbuffer.rs index 7e6b9533566..2b057001eef 100644 --- a/components/script/dom/webglbuffer.rs +++ b/components/script/dom/webglbuffer.rs @@ -16,6 +16,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglobject::WebGLObject; use crate::dom::webglrenderingcontext::{Operation, WebGLRenderingContext}; +use crate::script_runtime::CanGc; fn target_is_copy_buffer(target: u32) -> bool { target == WebGL2RenderingContextConstants::COPY_READ_BUFFER || @@ -62,6 +63,7 @@ impl WebGLBuffer { reflect_dom_object( Box::new(WebGLBuffer::new_inherited(context, id)), &*context.global(), + CanGc::note(), ) } } diff --git a/components/script/dom/webglframebuffer.rs b/components/script/dom/webglframebuffer.rs index 5fb4f2efa7a..99f051da9ea 100644 --- a/components/script/dom/webglframebuffer.rs +++ b/components/script/dom/webglframebuffer.rs @@ -27,6 +27,7 @@ use crate::dom::webglrenderingcontext::{Operation, WebGLRenderingContext}; use crate::dom::webgltexture::WebGLTexture; #[cfg(feature = "webxr")] use crate::dom::xrsession::XRSession; +use crate::script_runtime::CanGc; pub enum CompleteForRendering { Complete, @@ -165,6 +166,7 @@ impl WebGLFramebuffer { reflect_dom_object( Box::new(WebGLFramebuffer::new_inherited(context, id)), &*context.global(), + CanGc::note(), ) } } diff --git a/components/script/dom/webglprogram.rs b/components/script/dom/webglprogram.rs index c30d88e4731..61673289566 100644 --- a/components/script/dom/webglprogram.rs +++ b/components/script/dom/webglprogram.rs @@ -24,6 +24,7 @@ use crate::dom::webglobject::WebGLObject; use crate::dom::webglrenderingcontext::{Operation, WebGLRenderingContext}; use crate::dom::webglshader::WebGLShader; use crate::dom::webgluniformlocation::WebGLUniformLocation; +use crate::script_runtime::CanGc; #[dom_struct] pub struct WebGLProgram { @@ -80,6 +81,7 @@ impl WebGLProgram { reflect_dom_object( Box::new(WebGLProgram::new_inherited(context, id)), &*context.global(), + CanGc::note(), ) } } diff --git a/components/script/dom/webglquery.rs b/components/script/dom/webglquery.rs index 607813060e9..e11e7766e93 100644 --- a/components/script/dom/webglquery.rs +++ b/components/script/dom/webglquery.rs @@ -15,6 +15,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglobject::WebGLObject; use crate::dom::webglrenderingcontext::{Operation, WebGLRenderingContext}; +use crate::script_runtime::CanGc; use crate::task_source::TaskSource; #[dom_struct] @@ -48,6 +49,7 @@ impl WebGLQuery { reflect_dom_object( Box::new(Self::new_inherited(context, id)), &*context.global(), + CanGc::note(), ) } diff --git a/components/script/dom/webglrenderbuffer.rs b/components/script/dom/webglrenderbuffer.rs index 42f6d721956..83a2d4af88e 100644 --- a/components/script/dom/webglrenderbuffer.rs +++ b/components/script/dom/webglrenderbuffer.rs @@ -20,6 +20,7 @@ use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::webglframebuffer::WebGLFramebuffer; use crate::dom::webglobject::WebGLObject; use crate::dom::webglrenderingcontext::{Operation, WebGLRenderingContext}; +use crate::script_runtime::CanGc; #[dom_struct] pub struct WebGLRenderbuffer { @@ -61,6 +62,7 @@ impl WebGLRenderbuffer { reflect_dom_object( Box::new(WebGLRenderbuffer::new_inherited(context, id)), &*context.global(), + CanGc::note(), ) } } diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 7e8a3a01b1e..0ee426c619c 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -291,7 +291,7 @@ impl WebGLRenderingContext { can_gc: CanGc, ) -> Option<DomRoot<WebGLRenderingContext>> { match WebGLRenderingContext::new_inherited(window, canvas, webgl_version, size, attrs) { - Ok(ctx) => Some(reflect_dom_object(Box::new(ctx), window)), + Ok(ctx) => Some(reflect_dom_object(Box::new(ctx), window, can_gc)), Err(msg) => { error!("Couldn't create WebGLRenderingContext: {}", msg); let event = WebGLContextEvent::new( diff --git a/components/script/dom/webglsampler.rs b/components/script/dom/webglsampler.rs index 808a37a14a0..65f636129cf 100644 --- a/components/script/dom/webglsampler.rs +++ b/components/script/dom/webglsampler.rs @@ -14,6 +14,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglobject::WebGLObject; use crate::dom::webglrenderingcontext::{Operation, WebGLRenderingContext}; +use crate::script_runtime::CanGc; #[dom_struct] pub struct WebGLSampler { @@ -90,6 +91,7 @@ impl WebGLSampler { reflect_dom_object( Box::new(Self::new_inherited(context, id)), &*context.global(), + CanGc::note(), ) } diff --git a/components/script/dom/webglshader.rs b/components/script/dom/webglshader.rs index daae7d3d18a..76e0ccc1b2d 100644 --- a/components/script/dom/webglshader.rs +++ b/components/script/dom/webglshader.rs @@ -25,6 +25,7 @@ use crate::dom::webgl_extensions::ext::oesstandardderivatives::OESStandardDeriva use crate::dom::webgl_extensions::WebGLExtensions; use crate::dom::webglobject::WebGLObject; use crate::dom::webglrenderingcontext::{Operation, WebGLRenderingContext}; +use crate::script_runtime::CanGc; #[derive(Clone, Copy, Debug, JSTraceable, MallocSizeOf, PartialEq)] pub enum ShaderCompilationStatus { @@ -80,6 +81,7 @@ impl WebGLShader { reflect_dom_object( Box::new(WebGLShader::new_inherited(context, id, shader_type)), &*context.global(), + CanGc::note(), ) } } diff --git a/components/script/dom/webglshaderprecisionformat.rs b/components/script/dom/webglshaderprecisionformat.rs index d3abe48a8b9..1429b291057 100644 --- a/components/script/dom/webglshaderprecisionformat.rs +++ b/components/script/dom/webglshaderprecisionformat.rs @@ -11,6 +11,7 @@ use crate::dom::bindings::codegen::Bindings::WebGLShaderPrecisionFormatBinding:: use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct WebGLShaderPrecisionFormat { @@ -41,6 +42,7 @@ impl WebGLShaderPrecisionFormat { range_min, range_max, precision, )), window, + CanGc::note(), ) } } diff --git a/components/script/dom/webglsync.rs b/components/script/dom/webglsync.rs index dd94e8090e8..42e1e51c852 100644 --- a/components/script/dom/webglsync.rs +++ b/components/script/dom/webglsync.rs @@ -14,6 +14,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglobject::WebGLObject; use crate::dom::webglrenderingcontext::{Operation, WebGLRenderingContext}; +use crate::script_runtime::CanGc; use crate::task_source::TaskSource; #[dom_struct] @@ -45,6 +46,7 @@ impl WebGLSync { reflect_dom_object( Box::new(WebGLSync::new_inherited(context, sync_id)), &*context.global(), + CanGc::note(), ) } } diff --git a/components/script/dom/webgltexture.rs b/components/script/dom/webgltexture.rs index c3653bec6ab..7e9c4c2e059 100644 --- a/components/script/dom/webgltexture.rs +++ b/components/script/dom/webgltexture.rs @@ -27,6 +27,7 @@ use crate::dom::webglobject::WebGLObject; use crate::dom::webglrenderingcontext::{Operation, WebGLRenderingContext}; #[cfg(feature = "webxr")] use crate::dom::xrsession::XRSession; +use crate::script_runtime::CanGc; pub enum TexParameterValue { Float(f32), @@ -116,6 +117,7 @@ impl WebGLTexture { None, )), &*context.global(), + CanGc::note(), ) } @@ -128,6 +130,7 @@ impl WebGLTexture { reflect_dom_object( Box::new(WebGLTexture::new_inherited(context, id, Some(session))), &*context.global(), + CanGc::note(), ) } } diff --git a/components/script/dom/webgltransformfeedback.rs b/components/script/dom/webgltransformfeedback.rs index 37c1f5117af..ecf7ca786f4 100644 --- a/components/script/dom/webgltransformfeedback.rs +++ b/components/script/dom/webgltransformfeedback.rs @@ -12,6 +12,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::webglobject::WebGLObject; use crate::dom::webglrenderingcontext::{Operation, WebGLRenderingContext}; +use crate::script_runtime::CanGc; #[dom_struct] pub struct WebGLTransformFeedback { @@ -43,6 +44,7 @@ impl WebGLTransformFeedback { reflect_dom_object( Box::new(WebGLTransformFeedback::new_inherited(context, id)), &*context.global(), + CanGc::note(), ) } } diff --git a/components/script/dom/webgluniformlocation.rs b/components/script/dom/webgluniformlocation.rs index 509a42b1b6d..5155225d917 100644 --- a/components/script/dom/webgluniformlocation.rs +++ b/components/script/dom/webgluniformlocation.rs @@ -9,6 +9,7 @@ use dom_struct::dom_struct; use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::window::Window; +use crate::script_runtime::CanGc; #[dom_struct] pub struct WebGLUniformLocation { @@ -62,6 +63,7 @@ impl WebGLUniformLocation { type_, )), window, + CanGc::note(), ) } diff --git a/components/script/dom/webglvertexarrayobject.rs b/components/script/dom/webglvertexarrayobject.rs index 867513c5459..9b896132d28 100644 --- a/components/script/dom/webglvertexarrayobject.rs +++ b/components/script/dom/webglvertexarrayobject.rs @@ -12,6 +12,7 @@ use crate::dom::vertexarrayobject::{VertexArrayObject, VertexAttribData}; use crate::dom::webglbuffer::WebGLBuffer; use crate::dom::webglobject::WebGLObject; use crate::dom::webglrenderingcontext::{Operation, WebGLRenderingContext}; +use crate::script_runtime::CanGc; #[dom_struct] pub struct WebGLVertexArrayObject { @@ -31,6 +32,7 @@ impl WebGLVertexArrayObject { reflect_dom_object( Box::new(WebGLVertexArrayObject::new_inherited(context, id)), &*context.global(), + CanGc::note(), ) } diff --git a/components/script/dom/webglvertexarrayobjectoes.rs b/components/script/dom/webglvertexarrayobjectoes.rs index f0e551e753b..d8e1555b997 100644 --- a/components/script/dom/webglvertexarrayobjectoes.rs +++ b/components/script/dom/webglvertexarrayobjectoes.rs @@ -12,6 +12,7 @@ use crate::dom::vertexarrayobject::{VertexArrayObject, VertexAttribData}; use crate::dom::webglbuffer::WebGLBuffer; use crate::dom::webglobject::WebGLObject; use crate::dom::webglrenderingcontext::{Operation, WebGLRenderingContext}; +use crate::script_runtime::CanGc; #[dom_struct] pub struct WebGLVertexArrayObjectOES { @@ -31,6 +32,7 @@ impl WebGLVertexArrayObjectOES { reflect_dom_object( Box::new(WebGLVertexArrayObjectOES::new_inherited(context, id)), &*context.global(), + CanGc::note(), ) } diff --git a/components/script/dom/webgpu/gpu.rs b/components/script/dom/webgpu/gpu.rs index 6cdd83878b5..5ee5d047113 100644 --- a/components/script/dom/webgpu/gpu.rs +++ b/components/script/dom/webgpu/gpu.rs @@ -41,7 +41,7 @@ impl GPU { } pub fn new(global: &GlobalScope) -> DomRoot<GPU> { - reflect_dom_object(Box::new(GPU::new_inherited()), global) + reflect_dom_object(Box::new(GPU::new_inherited()), global, CanGc::note()) } } diff --git a/components/script/dom/webgpu/gpuadapter.rs b/components/script/dom/webgpu/gpuadapter.rs index 1b6552e031b..409f701c635 100644 --- a/components/script/dom/webgpu/gpuadapter.rs +++ b/components/script/dom/webgpu/gpuadapter.rs @@ -86,6 +86,7 @@ impl GPUAdapter { channel, name, extensions, &features, &limits, &info, adapter, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gpuadapterinfo.rs b/components/script/dom/webgpu/gpuadapterinfo.rs index 0cda8bed2d7..8ce3dae97c6 100644 --- a/components/script/dom/webgpu/gpuadapterinfo.rs +++ b/components/script/dom/webgpu/gpuadapterinfo.rs @@ -9,6 +9,7 @@ use crate::dom::bindings::codegen::Bindings::WebGPUBinding::GPUAdapterInfoMethod use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; use crate::test::DOMString; #[dom_struct] @@ -28,7 +29,7 @@ impl GPUAdapterInfo { } pub fn new(global: &GlobalScope, info: AdapterInfo) -> DomRoot<Self> { - reflect_dom_object(Box::new(Self::new_inherited(info)), global) + reflect_dom_object(Box::new(Self::new_inherited(info)), global, CanGc::note()) } } diff --git a/components/script/dom/webgpu/gpubindgroup.rs b/components/script/dom/webgpu/gpubindgroup.rs index bb698210c93..c542046ae27 100644 --- a/components/script/dom/webgpu/gpubindgroup.rs +++ b/components/script/dom/webgpu/gpubindgroup.rs @@ -19,6 +19,7 @@ use crate::dom::bindings::str::USVString; use crate::dom::globalscope::GlobalScope; use crate::dom::webgpu::gpubindgrouplayout::GPUBindGroupLayout; use crate::dom::webgpu::gpudevice::GPUDevice; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GPUBindGroup { @@ -65,6 +66,7 @@ impl GPUBindGroup { channel, bind_group, device, layout, label, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gpubindgrouplayout.rs b/components/script/dom/webgpu/gpubindgrouplayout.rs index 470b24c3192..8c753a22499 100644 --- a/components/script/dom/webgpu/gpubindgrouplayout.rs +++ b/components/script/dom/webgpu/gpubindgrouplayout.rs @@ -20,6 +20,7 @@ use crate::dom::bindings::str::USVString; use crate::dom::globalscope::GlobalScope; use crate::dom::webgpu::gpuconvert::convert_bind_group_layout_entry; use crate::dom::webgpu::gpudevice::GPUDevice; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GPUBindGroupLayout { @@ -59,6 +60,7 @@ impl GPUBindGroupLayout { label, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gpubuffer.rs b/components/script/dom/webgpu/gpubuffer.rs index 2a546a5e849..e6e591cc392 100644 --- a/components/script/dom/webgpu/gpubuffer.rs +++ b/components/script/dom/webgpu/gpubuffer.rs @@ -122,6 +122,7 @@ impl GPUBuffer { channel, buffer, device, size, usage, mapping, label, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gpucanvascontext.rs b/components/script/dom/webgpu/gpucanvascontext.rs index 3fb906e2581..424e6b40000 100644 --- a/components/script/dom/webgpu/gpucanvascontext.rs +++ b/components/script/dom/webgpu/gpucanvascontext.rs @@ -37,6 +37,7 @@ use crate::dom::bindings::str::USVString; use crate::dom::globalscope::GlobalScope; use crate::dom::htmlcanvaselement::{HTMLCanvasElement, LayoutCanvasRenderingContextHelpers}; use crate::dom::node::{document_from_node, Node, NodeDamage}; +use crate::script_runtime::CanGc; impl HTMLCanvasElementOrOffscreenCanvas { fn size(&self) -> Size2D<u64> { @@ -140,6 +141,7 @@ impl GPUCanvasContext { channel, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gpucommandbuffer.rs b/components/script/dom/webgpu/gpucommandbuffer.rs index 120af69a480..c6a6c9a934d 100644 --- a/components/script/dom/webgpu/gpucommandbuffer.rs +++ b/components/script/dom/webgpu/gpucommandbuffer.rs @@ -11,6 +11,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::USVString; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GPUCommandBuffer { @@ -50,6 +51,7 @@ impl GPUCommandBuffer { label, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gpucommandencoder.rs b/components/script/dom/webgpu/gpucommandencoder.rs index db92794eaf2..252066e0749 100644 --- a/components/script/dom/webgpu/gpucommandencoder.rs +++ b/components/script/dom/webgpu/gpucommandencoder.rs @@ -27,6 +27,7 @@ use crate::dom::webgpu::gpucomputepassencoder::GPUComputePassEncoder; use crate::dom::webgpu::gpuconvert::{convert_load_op, convert_store_op}; use crate::dom::webgpu::gpudevice::GPUDevice; use crate::dom::webgpu::gpurenderpassencoder::GPURenderPassEncoder; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GPUCommandEncoder { @@ -68,6 +69,7 @@ impl GPUCommandEncoder { channel, device, encoder, label, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gpucompilationmessage.rs b/components/script/dom/webgpu/gpucompilationmessage.rs index d811e8baf6e..157118d056d 100644 --- a/components/script/dom/webgpu/gpucompilationmessage.rs +++ b/components/script/dom/webgpu/gpucompilationmessage.rs @@ -13,6 +13,7 @@ use crate::dom::bindings::codegen::Bindings::WebGPUBinding::{ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::types::GlobalScope; +use crate::script_runtime::CanGc; use crate::test::DOMString; #[dom_struct] @@ -61,6 +62,7 @@ impl GPUCompilationMessage { message, mtype, line_num, line_pos, offset, length, )), global, + CanGc::note(), ) } diff --git a/components/script/dom/webgpu/gpucomputepassencoder.rs b/components/script/dom/webgpu/gpucomputepassencoder.rs index 0f8937fec8b..1ad305fcecd 100644 --- a/components/script/dom/webgpu/gpucomputepassencoder.rs +++ b/components/script/dom/webgpu/gpucomputepassencoder.rs @@ -15,6 +15,7 @@ use crate::dom::webgpu::gpubindgroup::GPUBindGroup; use crate::dom::webgpu::gpubuffer::GPUBuffer; use crate::dom::webgpu::gpucommandencoder::GPUCommandEncoder; use crate::dom::webgpu::gpucomputepipeline::GPUComputePipeline; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GPUComputePassEncoder { @@ -59,6 +60,7 @@ impl GPUComputePassEncoder { label, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gpucomputepipeline.rs b/components/script/dom/webgpu/gpucomputepipeline.rs index a5d0997e3a3..8a0cf4ab6e1 100644 --- a/components/script/dom/webgpu/gpucomputepipeline.rs +++ b/components/script/dom/webgpu/gpucomputepipeline.rs @@ -19,6 +19,7 @@ use crate::dom::bindings::str::USVString; use crate::dom::globalscope::GlobalScope; use crate::dom::webgpu::gpubindgrouplayout::GPUBindGroupLayout; use crate::dom::webgpu::gpudevice::GPUDevice; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GPUComputePipeline { @@ -60,6 +61,7 @@ impl GPUComputePipeline { device, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gpudevice.rs b/components/script/dom/webgpu/gpudevice.rs index 589395b0a2b..217f6ff5826 100644 --- a/components/script/dom/webgpu/gpudevice.rs +++ b/components/script/dom/webgpu/gpudevice.rs @@ -166,6 +166,7 @@ impl GPUDevice { lost_promise, )), global, + can_gc, ); queue.set_device(&device); device diff --git a/components/script/dom/webgpu/gpudevicelostinfo.rs b/components/script/dom/webgpu/gpudevicelostinfo.rs index ea33986a84f..68bb7278061 100644 --- a/components/script/dom/webgpu/gpudevicelostinfo.rs +++ b/components/script/dom/webgpu/gpudevicelostinfo.rs @@ -13,6 +13,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GPUDeviceLostInfo { @@ -38,6 +39,7 @@ impl GPUDeviceLostInfo { reflect_dom_object( Box::new(GPUDeviceLostInfo::new_inherited(message, reason)), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gpupipelinelayout.rs b/components/script/dom/webgpu/gpupipelinelayout.rs index 10bbc53f690..33c5b1f72bb 100644 --- a/components/script/dom/webgpu/gpupipelinelayout.rs +++ b/components/script/dom/webgpu/gpupipelinelayout.rs @@ -18,6 +18,7 @@ use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::USVString; use crate::dom::globalscope::GlobalScope; use crate::dom::webgpu::gpudevice::GPUDevice; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GPUPipelineLayout { @@ -63,6 +64,7 @@ impl GPUPipelineLayout { bgls, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gpuqueue.rs b/components/script/dom/webgpu/gpuqueue.rs index 72e74ba66d3..cbba6a24cdb 100644 --- a/components/script/dom/webgpu/gpuqueue.rs +++ b/components/script/dom/webgpu/gpuqueue.rs @@ -50,7 +50,11 @@ impl GPUQueue { } pub fn new(global: &GlobalScope, channel: WebGPU, queue: WebGPUQueue) -> DomRoot<Self> { - reflect_dom_object(Box::new(GPUQueue::new_inherited(channel, queue)), global) + reflect_dom_object( + Box::new(GPUQueue::new_inherited(channel, queue)), + global, + CanGc::note(), + ) } } diff --git a/components/script/dom/webgpu/gpurenderbundle.rs b/components/script/dom/webgpu/gpurenderbundle.rs index aae120b970b..85e38b6b49c 100644 --- a/components/script/dom/webgpu/gpurenderbundle.rs +++ b/components/script/dom/webgpu/gpurenderbundle.rs @@ -11,6 +11,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::USVString; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GPURenderBundle { @@ -56,6 +57,7 @@ impl GPURenderBundle { label, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gpurenderbundleencoder.rs b/components/script/dom/webgpu/gpurenderbundleencoder.rs index 11483bc3eac..11899083d63 100644 --- a/components/script/dom/webgpu/gpurenderbundleencoder.rs +++ b/components/script/dom/webgpu/gpurenderbundleencoder.rs @@ -26,6 +26,7 @@ use crate::dom::webgpu::gpubuffer::GPUBuffer; use crate::dom::webgpu::gpudevice::GPUDevice; use crate::dom::webgpu::gpurenderbundle::GPURenderBundle; use crate::dom::webgpu::gpurenderpipeline::GPURenderPipeline; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GPURenderBundleEncoder { @@ -71,6 +72,7 @@ impl GPURenderBundleEncoder { label, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gpurenderpassencoder.rs b/components/script/dom/webgpu/gpurenderpassencoder.rs index e52cb4dec45..9ec0e5e83e8 100644 --- a/components/script/dom/webgpu/gpurenderpassencoder.rs +++ b/components/script/dom/webgpu/gpurenderpassencoder.rs @@ -21,6 +21,7 @@ use crate::dom::webgpu::gpubuffer::GPUBuffer; use crate::dom::webgpu::gpucommandencoder::GPUCommandEncoder; use crate::dom::webgpu::gpurenderbundle::GPURenderBundle; use crate::dom::webgpu::gpurenderpipeline::GPURenderPipeline; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GPURenderPassEncoder { @@ -65,6 +66,7 @@ impl GPURenderPassEncoder { label, )), global, + CanGc::note(), ) } diff --git a/components/script/dom/webgpu/gpurenderpipeline.rs b/components/script/dom/webgpu/gpurenderpipeline.rs index 48f6d93bc01..21230ff6899 100644 --- a/components/script/dom/webgpu/gpurenderpipeline.rs +++ b/components/script/dom/webgpu/gpurenderpipeline.rs @@ -16,6 +16,7 @@ use crate::dom::bindings::str::USVString; use crate::dom::globalscope::GlobalScope; use crate::dom::webgpu::gpubindgrouplayout::GPUBindGroupLayout; use crate::dom::webgpu::gpudevice::{GPUDevice, PipelineLayout}; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GPURenderPipeline { @@ -57,6 +58,7 @@ impl GPURenderPipeline { device, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gpusampler.rs b/components/script/dom/webgpu/gpusampler.rs index 98ec5a873ff..ec3562d0e52 100644 --- a/components/script/dom/webgpu/gpusampler.rs +++ b/components/script/dom/webgpu/gpusampler.rs @@ -16,6 +16,7 @@ use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::USVString; use crate::dom::globalscope::GlobalScope; use crate::dom::webgpu::gpudevice::GPUDevice; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GPUSampler { @@ -66,6 +67,7 @@ impl GPUSampler { label, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gpushadermodule.rs b/components/script/dom/webgpu/gpushadermodule.rs index 44cc8fa8115..9b353dd71c1 100644 --- a/components/script/dom/webgpu/gpushadermodule.rs +++ b/components/script/dom/webgpu/gpushadermodule.rs @@ -68,6 +68,7 @@ impl GPUShaderModule { promise, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gpusupportedlimits.rs b/components/script/dom/webgpu/gpusupportedlimits.rs index 15f1172da18..8f25526eae1 100644 --- a/components/script/dom/webgpu/gpusupportedlimits.rs +++ b/components/script/dom/webgpu/gpusupportedlimits.rs @@ -11,6 +11,7 @@ use crate::dom::bindings::codegen::Bindings::WebGPUBinding::GPUSupportedLimits_B use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GPUSupportedLimits { @@ -29,7 +30,7 @@ impl GPUSupportedLimits { } pub fn new(global: &GlobalScope, limits: Limits) -> DomRoot<Self> { - reflect_dom_object(Box::new(Self::new_inherited(limits)), global) + reflect_dom_object(Box::new(Self::new_inherited(limits)), global, CanGc::note()) } } diff --git a/components/script/dom/webgpu/gputexture.rs b/components/script/dom/webgpu/gputexture.rs index 9a136165dff..04680f42652 100644 --- a/components/script/dom/webgpu/gputexture.rs +++ b/components/script/dom/webgpu/gputexture.rs @@ -22,6 +22,7 @@ use crate::dom::bindings::str::USVString; use crate::dom::globalscope::GlobalScope; use crate::dom::webgpu::gpudevice::GPUDevice; use crate::dom::webgpu::gputextureview::GPUTextureView; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GPUTexture { @@ -100,6 +101,7 @@ impl GPUTexture { label, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webgpu/gputextureview.rs b/components/script/dom/webgpu/gputextureview.rs index e563af68d84..f988eb1c41d 100644 --- a/components/script/dom/webgpu/gputextureview.rs +++ b/components/script/dom/webgpu/gputextureview.rs @@ -12,6 +12,7 @@ use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::USVString; use crate::dom::globalscope::GlobalScope; use crate::dom::webgpu::gputexture::GPUTexture; +use crate::script_runtime::CanGc; #[dom_struct] pub struct GPUTextureView { @@ -56,6 +57,7 @@ impl GPUTextureView { label, )), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webxr/fakexrdevice.rs b/components/script/dom/webxr/fakexrdevice.rs index 036e3022668..194ba0bd087 100644 --- a/components/script/dom/webxr/fakexrdevice.rs +++ b/components/script/dom/webxr/fakexrdevice.rs @@ -58,7 +58,11 @@ impl FakeXRDevice { } pub fn new(global: &GlobalScope, sender: IpcSender<MockDeviceMsg>) -> DomRoot<FakeXRDevice> { - reflect_dom_object(Box::new(FakeXRDevice::new_inherited(sender)), global) + reflect_dom_object( + Box::new(FakeXRDevice::new_inherited(sender)), + global, + CanGc::note(), + ) } pub fn disconnect(&self, sender: IpcSender<()>) { diff --git a/components/script/dom/webxr/fakexrinputcontroller.rs b/components/script/dom/webxr/fakexrinputcontroller.rs index f1ab931aa74..e52dc0a21fd 100644 --- a/components/script/dom/webxr/fakexrinputcontroller.rs +++ b/components/script/dom/webxr/fakexrinputcontroller.rs @@ -23,6 +23,7 @@ use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::fakexrdevice::get_origin; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] pub struct FakeXRInputController { @@ -52,6 +53,7 @@ impl FakeXRInputController { reflect_dom_object( Box::new(FakeXRInputController::new_inherited(sender, id)), global, + CanGc::note(), ) } diff --git a/components/script/dom/webxr/xrboundedreferencespace.rs b/components/script/dom/webxr/xrboundedreferencespace.rs index 1434e23e6e1..ef5480bd72b 100644 --- a/components/script/dom/webxr/xrboundedreferencespace.rs +++ b/components/script/dom/webxr/xrboundedreferencespace.rs @@ -57,6 +57,7 @@ impl XRBoundedReferenceSpace { reflect_dom_object( Box::new(XRBoundedReferenceSpace::new_inherited(session, offset)), global, + CanGc::note(), ) } diff --git a/components/script/dom/webxr/xrframe.rs b/components/script/dom/webxr/xrframe.rs index f3a8a263fd3..432e35857af 100644 --- a/components/script/dom/webxr/xrframe.rs +++ b/components/script/dom/webxr/xrframe.rs @@ -50,7 +50,11 @@ impl XRFrame { } pub fn new(global: &GlobalScope, session: &XRSession, data: Frame) -> DomRoot<XRFrame> { - reflect_dom_object(Box::new(XRFrame::new_inherited(session, data)), global) + reflect_dom_object( + Box::new(XRFrame::new_inherited(session, data)), + global, + CanGc::note(), + ) } /// <https://immersive-web.github.io/webxr/#xrframe-active> diff --git a/components/script/dom/webxr/xrhand.rs b/components/script/dom/webxr/xrhand.rs index b73e9cddb35..e3ed4268a1f 100644 --- a/components/script/dom/webxr/xrhand.rs +++ b/components/script/dom/webxr/xrhand.rs @@ -12,6 +12,7 @@ use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::globalscope::GlobalScope; use crate::dom::xrinputsource::XRInputSource; use crate::dom::xrjointspace::XRJointSpace; +use crate::script_runtime::CanGc; const JOINT_SPACE_MAP: [(XRHandJoint, Joint); 25] = [ (XRHandJoint::Wrist, Joint::Wrist), @@ -130,7 +131,11 @@ impl XRHand { .expect("Invalid joint name"); field.map(|_| XRJointSpace::new(global, session, id, joint, hand_joint)) }); - reflect_dom_object(Box::new(XRHand::new_inherited(source, &spaces)), global) + reflect_dom_object( + Box::new(XRHand::new_inherited(source, &spaces)), + global, + CanGc::note(), + ) } } diff --git a/components/script/dom/webxr/xrhittestresult.rs b/components/script/dom/webxr/xrhittestresult.rs index faca7dad3a3..4b4db410812 100644 --- a/components/script/dom/webxr/xrhittestresult.rs +++ b/components/script/dom/webxr/xrhittestresult.rs @@ -40,6 +40,7 @@ impl XRHitTestResult { reflect_dom_object( Box::new(XRHitTestResult::new_inherited(result, frame)), global, + CanGc::note(), ) } } diff --git a/components/script/dom/webxr/xrhittestsource.rs b/components/script/dom/webxr/xrhittestsource.rs index 5210bfa84a9..ba829f44aba 100644 --- a/components/script/dom/webxr/xrhittestsource.rs +++ b/components/script/dom/webxr/xrhittestsource.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::globalscope::GlobalScope; use crate::dom::xrsession::XRSession; +use crate::script_runtime::CanGc; #[dom_struct] pub struct XRHitTestSource { @@ -37,6 +38,7 @@ impl XRHitTestSource { reflect_dom_object( Box::new(XRHitTestSource::new_inherited(id, session)), global, + CanGc::note(), ) } diff --git a/components/script/dom/webxr/xrinputsource.rs b/components/script/dom/webxr/xrinputsource.rs index c7155d343d2..cc240919324 100644 --- a/components/script/dom/webxr/xrinputsource.rs +++ b/components/script/dom/webxr/xrinputsource.rs @@ -82,6 +82,7 @@ impl XRInputSource { let source = reflect_dom_object( Box::new(XRInputSource::new_inherited(global, session, info, can_gc)), global, + can_gc, ); let _ac = enter_realm(global); diff --git a/components/script/dom/webxr/xrinputsourcearray.rs b/components/script/dom/webxr/xrinputsourcearray.rs index 18059db822a..5c26f2b5824 100644 --- a/components/script/dom/webxr/xrinputsourcearray.rs +++ b/components/script/dom/webxr/xrinputsourcearray.rs @@ -32,7 +32,11 @@ impl XRInputSourceArray { } pub fn new(global: &GlobalScope) -> DomRoot<XRInputSourceArray> { - reflect_dom_object(Box::new(XRInputSourceArray::new_inherited()), global) + reflect_dom_object( + Box::new(XRInputSourceArray::new_inherited()), + global, + CanGc::note(), + ) } pub fn add_input_sources(&self, session: &XRSession, inputs: &[InputSource], can_gc: CanGc) { diff --git a/components/script/dom/webxr/xrjointpose.rs b/components/script/dom/webxr/xrjointpose.rs index 9d1ed301486..315dfc9cfe9 100644 --- a/components/script/dom/webxr/xrjointpose.rs +++ b/components/script/dom/webxr/xrjointpose.rs @@ -39,6 +39,7 @@ impl XRJointPose { reflect_dom_object( Box::new(XRJointPose::new_inherited(&transform, radius)), global, + can_gc, ) } } diff --git a/components/script/dom/webxr/xrjointspace.rs b/components/script/dom/webxr/xrjointspace.rs index 8d8dc9309f7..933f57339c5 100644 --- a/components/script/dom/webxr/xrjointspace.rs +++ b/components/script/dom/webxr/xrjointspace.rs @@ -13,6 +13,7 @@ use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; use crate::dom::xrsession::{ApiPose, XRSession}; use crate::dom::xrspace::XRSpace; +use crate::script_runtime::CanGc; #[dom_struct] pub struct XRJointSpace { @@ -52,6 +53,7 @@ impl XRJointSpace { reflect_dom_object( Box::new(Self::new_inherited(session, input, joint, hand_joint)), global, + CanGc::note(), ) } diff --git a/components/script/dom/webxr/xrpose.rs b/components/script/dom/webxr/xrpose.rs index dea8aa62dc4..08442f54806 100644 --- a/components/script/dom/webxr/xrpose.rs +++ b/components/script/dom/webxr/xrpose.rs @@ -34,7 +34,11 @@ impl XRPose { can_gc: CanGc, ) -> DomRoot<XRPose> { let transform = XRRigidTransform::new(global, transform, can_gc); - reflect_dom_object(Box::new(XRPose::new_inherited(&transform)), global) + reflect_dom_object( + Box::new(XRPose::new_inherited(&transform)), + global, + CanGc::note(), + ) } } diff --git a/components/script/dom/webxr/xrreferencespace.rs b/components/script/dom/webxr/xrreferencespace.rs index 6f8c409edbc..04d81070095 100644 --- a/components/script/dom/webxr/xrreferencespace.rs +++ b/components/script/dom/webxr/xrreferencespace.rs @@ -59,6 +59,7 @@ impl XRReferenceSpace { reflect_dom_object( Box::new(XRReferenceSpace::new_inherited(session, offset, ty)), global, + CanGc::note(), ) } diff --git a/components/script/dom/webxr/xrrenderstate.rs b/components/script/dom/webxr/xrrenderstate.rs index cf6976404d6..b2d5219ed00 100644 --- a/components/script/dom/webxr/xrrenderstate.rs +++ b/components/script/dom/webxr/xrrenderstate.rs @@ -17,7 +17,7 @@ use crate::dom::bindings::utils::to_frozen_array; use crate::dom::globalscope::GlobalScope; use crate::dom::xrlayer::XRLayer; use crate::dom::xrwebgllayer::XRWebGLLayer; -use crate::script_runtime::JSContext; +use crate::script_runtime::{CanGc, JSContext}; #[dom_struct] pub struct XRRenderState { @@ -65,6 +65,7 @@ impl XRRenderState { layers, )), global, + CanGc::note(), ) } diff --git a/components/script/dom/webxr/xrsession.rs b/components/script/dom/webxr/xrsession.rs index b2ed2c8e08f..92ac419c585 100644 --- a/components/script/dom/webxr/xrsession.rs +++ b/components/script/dom/webxr/xrsession.rs @@ -172,6 +172,7 @@ impl XRSession { mode, )), global, + CanGc::note(), ); ret.attach_event_handler(); ret.setup_raf_loop(frame_receiver); diff --git a/components/script/dom/webxr/xrspace.rs b/components/script/dom/webxr/xrspace.rs index d810d5c07f0..42a2933edee 100644 --- a/components/script/dom/webxr/xrspace.rs +++ b/components/script/dom/webxr/xrspace.rs @@ -15,6 +15,7 @@ use crate::dom::xrinputsource::XRInputSource; use crate::dom::xrjointspace::XRJointSpace; use crate::dom::xrreferencespace::XRReferenceSpace; use crate::dom::xrsession::{cast_transform, ApiPose, XRSession}; +use crate::script_runtime::CanGc; #[dom_struct] pub struct XRSpace { @@ -57,6 +58,7 @@ impl XRSpace { reflect_dom_object( Box::new(XRSpace::new_inputspace_inner(session, input, is_grip_space)), global, + CanGc::note(), ) } diff --git a/components/script/dom/webxr/xrsystem.rs b/components/script/dom/webxr/xrsystem.rs index cf5e37b78ec..fb28b477e39 100644 --- a/components/script/dom/webxr/xrsystem.rs +++ b/components/script/dom/webxr/xrsystem.rs @@ -66,6 +66,7 @@ impl XRSystem { reflect_dom_object( Box::new(XRSystem::new_inherited(window.pipeline_id())), window, + CanGc::note(), ) } diff --git a/components/script/dom/webxr/xrtest.rs b/components/script/dom/webxr/xrtest.rs index 0117ab5c3ce..02c090b2a1f 100644 --- a/components/script/dom/webxr/xrtest.rs +++ b/components/script/dom/webxr/xrtest.rs @@ -45,7 +45,7 @@ impl XRTest { } pub fn new(global: &GlobalScope) -> DomRoot<XRTest> { - reflect_dom_object(Box::new(XRTest::new_inherited()), global) + reflect_dom_object(Box::new(XRTest::new_inherited()), global, CanGc::note()) } fn device_obtained( diff --git a/components/script/dom/webxr/xrview.rs b/components/script/dom/webxr/xrview.rs index 89c5f7d7868..115fde4ec35 100644 --- a/components/script/dom/webxr/xrview.rs +++ b/components/script/dom/webxr/xrview.rs @@ -75,6 +75,7 @@ impl XRView { view.cast_unit(), )), global, + CanGc::note(), ) } diff --git a/components/script/dom/webxr/xrviewerpose.rs b/components/script/dom/webxr/xrviewerpose.rs index 47b166ab375..1ab6e1b92e1 100644 --- a/components/script/dom/webxr/xrviewerpose.rs +++ b/components/script/dom/webxr/xrviewerpose.rs @@ -175,7 +175,11 @@ impl XRViewerPose { let transform: RigidTransform3D<f32, Viewer, BaseSpace> = viewer_pose.transform.then(&to_base); let transform = XRRigidTransform::new(global, cast_transform(transform), can_gc); - let pose = reflect_dom_object(Box::new(XRViewerPose::new_inherited(&transform)), global); + let pose = reflect_dom_object( + Box::new(XRViewerPose::new_inherited(&transform)), + global, + can_gc, + ); let cx = GlobalScope::get_cx(); unsafe { diff --git a/components/script/dom/webxr/xrviewport.rs b/components/script/dom/webxr/xrviewport.rs index 8ac28519620..49c137c28b0 100644 --- a/components/script/dom/webxr/xrviewport.rs +++ b/components/script/dom/webxr/xrviewport.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::codegen::Bindings::XRViewportBinding::XRViewportMethod use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::CanGc; #[dom_struct] pub struct XRViewport { @@ -27,7 +28,11 @@ impl XRViewport { } pub fn new(global: &GlobalScope, viewport: Rect<i32, Viewport>) -> DomRoot<XRViewport> { - reflect_dom_object(Box::new(XRViewport::new_inherited(viewport)), global) + reflect_dom_object( + Box::new(XRViewport::new_inherited(viewport)), + global, + CanGc::note(), + ) } } diff --git a/components/script/dom/workerlocation.rs b/components/script/dom/workerlocation.rs index 84afb2699d8..6dce917684f 100644 --- a/components/script/dom/workerlocation.rs +++ b/components/script/dom/workerlocation.rs @@ -11,6 +11,7 @@ use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::USVString; use crate::dom::urlhelper::UrlHelper; use crate::dom::workerglobalscope::WorkerGlobalScope; +use crate::script_runtime::CanGc; // https://html.spec.whatwg.org/multipage/#worker-locations #[dom_struct] @@ -29,7 +30,11 @@ impl WorkerLocation { } pub fn new(global: &WorkerGlobalScope, url: ServoUrl) -> DomRoot<WorkerLocation> { - reflect_dom_object(Box::new(WorkerLocation::new_inherited(url)), global) + reflect_dom_object( + Box::new(WorkerLocation::new_inherited(url)), + global, + CanGc::note(), + ) } // https://html.spec.whatwg.org/multipage/#dom-workerlocation-origin diff --git a/components/script/dom/workernavigator.rs b/components/script/dom/workernavigator.rs index 92b3bab2222..71f09168644 100644 --- a/components/script/dom/workernavigator.rs +++ b/components/script/dom/workernavigator.rs @@ -16,7 +16,7 @@ use crate::dom::permissions::Permissions; #[cfg(feature = "webgpu")] use crate::dom::webgpu::gpu::GPU; use crate::dom::workerglobalscope::WorkerGlobalScope; -use crate::script_runtime::JSContext; +use crate::script_runtime::{CanGc, JSContext}; // https://html.spec.whatwg.org/multipage/#workernavigator #[dom_struct] @@ -38,7 +38,11 @@ impl WorkerNavigator { } pub fn new(global: &WorkerGlobalScope) -> DomRoot<WorkerNavigator> { - reflect_dom_object(Box::new(WorkerNavigator::new_inherited()), global) + reflect_dom_object( + Box::new(WorkerNavigator::new_inherited()), + global, + CanGc::note(), + ) } } diff --git a/components/script/dom/worklet.rs b/components/script/dom/worklet.rs index 6c9cbe5bea1..0de60a7812b 100644 --- a/components/script/dom/worklet.rs +++ b/components/script/dom/worklet.rs @@ -104,6 +104,7 @@ impl Worklet { reflect_dom_object( Box::new(Worklet::new_inherited(window, global_type)), window, + CanGc::note(), ) } diff --git a/components/script/dom/xmldocument.rs b/components/script/dom/xmldocument.rs index a242d113a33..cb491c5d217 100644 --- a/components/script/dom/xmldocument.rs +++ b/components/script/dom/xmldocument.rs @@ -20,6 +20,7 @@ use crate::dom::document::{Document, DocumentSource, HasBrowsingContext, IsHTMLD use crate::dom::location::Location; use crate::dom::node::Node; use crate::dom::window::Window; +use crate::script_runtime::CanGc; // https://dom.spec.whatwg.org/#xmldocument #[dom_struct] @@ -87,6 +88,7 @@ impl XMLDocument { doc_loader, )), window, + CanGc::note(), ); { let node = doc.upcast::<Node>(); diff --git a/components/script/dom/xmlhttprequestupload.rs b/components/script/dom/xmlhttprequestupload.rs index 47ebae74a5a..3094e8a1521 100644 --- a/components/script/dom/xmlhttprequestupload.rs +++ b/components/script/dom/xmlhttprequestupload.rs @@ -8,6 +8,7 @@ use crate::dom::bindings::reflector::reflect_dom_object; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; use crate::dom::xmlhttprequesteventtarget::XMLHttpRequestEventTarget; +use crate::script_runtime::CanGc; #[dom_struct] pub struct XMLHttpRequestUpload { @@ -21,6 +22,10 @@ impl XMLHttpRequestUpload { } } pub fn new(global: &GlobalScope) -> DomRoot<XMLHttpRequestUpload> { - reflect_dom_object(Box::new(XMLHttpRequestUpload::new_inherited()), global) + reflect_dom_object( + Box::new(XMLHttpRequestUpload::new_inherited()), + global, + CanGc::note(), + ) } } |