diff options
Diffstat (limited to 'components/script/script_thread.rs')
-rw-r--r-- | components/script/script_thread.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs index 722bd2cda12..cb4603f805e 100644 --- a/components/script/script_thread.rs +++ b/components/script/script_thread.rs @@ -39,6 +39,7 @@ use dom::bindings::str::DOMString; use dom::bindings::structuredclone::StructuredCloneData; use dom::bindings::trace::JSTraceable; use dom::bindings::utils::WRAP_CALLBACKS; +use dom::customelementregistry::{CallbackReaction, CustomElementReactionStack}; use dom::document::{Document, DocumentSource, FocusType, HasBrowsingContext, IsHTMLDocument, TouchEventResult}; use dom::element::Element; use dom::event::{Event, EventBubbles, EventCancelable}; @@ -510,6 +511,9 @@ pub struct ScriptThread { /// A list of nodes with in-progress CSS transitions, which roots them for the duration /// of the transition. transitioning_nodes: DOMRefCell<Vec<JS<Node>>>, + + /// https://html.spec.whatwg.org/multipage/#custom-element-reactions-stack + custom_element_reaction_stack: CustomElementReactionStack, } /// In the event of thread panic, all data on the stack runs its destructor. However, there @@ -742,6 +746,24 @@ impl ScriptThread { let _ = window.layout_chan().send(msg); } + pub fn enqueue_callback_reaction(element:&Element, reaction: CallbackReaction) { + SCRIPT_THREAD_ROOT.with(|root| { + if let Some(script_thread) = root.get() { + let script_thread = unsafe { &*script_thread }; + script_thread.custom_element_reaction_stack.enqueue_callback_reaction(element, reaction); + } + }) + } + + pub fn invoke_backup_element_queue() { + SCRIPT_THREAD_ROOT.with(|root| { + if let Some(script_thread) = root.get() { + let script_thread = unsafe { &*script_thread }; + script_thread.custom_element_reaction_stack.invoke_backup_element_queue(); + } + }) + } + /// Creates a new script thread. pub fn new(state: InitialScriptState, port: Receiver<MainThreadScriptMsg>, @@ -827,6 +849,8 @@ impl ScriptThread { docs_with_no_blocking_loads: Default::default(), transitioning_nodes: Default::default(), + + custom_element_reaction_stack: CustomElementReactionStack::new(), } } |