script/dom/debugger/
debuggerevalevent.rs1use dom_struct::dom_struct;
6use js::context::JSContext;
7use script_bindings::domstring::TracedDOMString;
8use script_bindings::reflector::reflect_dom_object;
9use script_bindings::str::DOMString;
10
11use crate::dom::bindings::codegen::Bindings::DebuggerEvalEventBinding::DebuggerEvalEventMethods;
12use crate::dom::bindings::codegen::Bindings::EventBinding::Event_Binding::EventMethods;
13use crate::dom::bindings::root::{Dom, DomRoot};
14use crate::dom::event::Event;
15use crate::dom::types::{GlobalScope, PipelineId};
16
17#[dom_struct]
18pub(crate) struct DebuggerEvalEvent {
20 event: Event,
21 code: TracedDOMString,
22 pipeline_id: Dom<PipelineId>,
23 worker_id: Option<TracedDOMString>,
24 frame_actor_id: Option<TracedDOMString>,
25 eager: bool,
26}
27
28impl DebuggerEvalEvent {
29 pub(crate) fn new(
30 cx: &mut JSContext,
31 debugger_global: &GlobalScope,
32 code: DOMString,
33 pipeline_id: &PipelineId,
34 worker_id: Option<DOMString>,
35 frame_actor_id: Option<DOMString>,
36 eager: bool,
37 ) -> DomRoot<Self> {
38 let result = Box::new(Self {
39 event: Event::new_inherited(),
40 code: code.traced(),
41 pipeline_id: Dom::from_ref(pipeline_id),
42 worker_id: worker_id.map(|domstring| domstring.traced()),
43 frame_actor_id: frame_actor_id.map(|domstring| domstring.traced()),
44 eager,
45 });
46 let result = reflect_dom_object(cx, result, debugger_global);
47 result.event.init_event("eval".into(), false, false);
48
49 result
50 }
51}
52
53impl DebuggerEvalEventMethods<crate::DomTypeHolder> for DebuggerEvalEvent {
54 fn Code(&self) -> DOMString {
56 self.code.clone().root()
57 }
58
59 fn PipelineId(
60 &self,
61 ) -> DomRoot<<crate::DomTypeHolder as script_bindings::DomTypes>::PipelineId> {
62 DomRoot::from_ref(&self.pipeline_id)
63 }
64
65 fn GetWorkerId(&self) -> Option<DOMString> {
66 self.worker_id.clone().map(|domstring| domstring.root())
67 }
68
69 fn GetFrameActorId(&self) -> Option<DOMString> {
70 self.frame_actor_id
71 .clone()
72 .map(|domstring| domstring.root())
73 }
74
75 fn Eager(&self) -> bool {
76 self.eager
77 }
78
79 fn IsTrusted(&self) -> bool {
80 self.event.IsTrusted()
81 }
82}