script/dom/debugger/
debuggeradddebuggeeevent.rs1use dom_struct::dom_struct;
6use js::context::JSContext;
7use js::conversions::ToJSValConvertible;
8use js::jsapi::{Heap, JSObject, Value};
9use js::rust::MutableHandleObject;
10use script_bindings::reflector::{DomObject, reflect_dom_object_with_cx};
11use script_bindings::str::DOMString;
12
13use crate::dom::bindings::codegen::Bindings::DebuggerAddDebuggeeEventBinding::DebuggerAddDebuggeeEventMethods;
14use crate::dom::bindings::codegen::Bindings::EventBinding::Event_Binding::EventMethods;
15use crate::dom::bindings::root::{Dom, DomRoot};
16use crate::dom::event::Event;
17use crate::dom::types::{GlobalScope, PipelineId};
18
19#[dom_struct]
20pub(crate) struct DebuggerAddDebuggeeEvent {
22 event: Event,
23 #[ignore_malloc_size_of = "Measured by the JS engine"]
24 global: Heap<*mut JSObject>,
25 pipeline_id: Dom<PipelineId>,
26 worker_id: Option<DOMString>,
27}
28
29impl DebuggerAddDebuggeeEvent {
30 pub(crate) fn new(
31 cx: &mut JSContext,
32 debugger_global: &GlobalScope,
33 global: &GlobalScope,
34 pipeline_id: &PipelineId,
35 worker_id: Option<DOMString>,
36 ) -> DomRoot<Self> {
37 let result = Box::new(Self {
38 event: Event::new_inherited(),
39 global: Heap::default(),
40 pipeline_id: Dom::from_ref(pipeline_id),
41 worker_id,
42 });
43 let result = reflect_dom_object_with_cx(result, debugger_global, cx);
44 result.event.init_event("addDebuggee".into(), false, false);
45
46 rooted!(&in(cx) let mut wrapped_global: Value);
49 global.reflector().to_jsval(cx, wrapped_global.handle_mut());
50 result.global.set(wrapped_global.to_object());
51
52 result
53 }
54}
55
56impl DebuggerAddDebuggeeEventMethods<crate::DomTypeHolder> for DebuggerAddDebuggeeEvent {
57 fn Global(&self, mut return_value: MutableHandleObject) {
59 return_value.set(self.global.get());
60 }
61
62 fn PipelineId(
63 &self,
64 ) -> DomRoot<<crate::DomTypeHolder as script_bindings::DomTypes>::PipelineId> {
65 DomRoot::from_ref(&self.pipeline_id)
66 }
67
68 fn GetWorkerId(&self) -> Option<DOMString> {
69 self.worker_id.clone()
70 }
71
72 fn IsTrusted(&self) -> bool {
73 self.event.IsTrusted()
74 }
75}