script/dom/
debuggergetenvironmentevent.rs

1/* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
5use std::fmt::Debug;
6
7use dom_struct::dom_struct;
8use script_bindings::str::DOMString;
9
10use crate::dom::bindings::codegen::Bindings::DebuggerGetEnvironmentEventBinding::DebuggerGetEnvironmentEventMethods;
11use crate::dom::bindings::codegen::Bindings::EventBinding::Event_Binding::EventMethods;
12use crate::dom::bindings::reflector::reflect_dom_object;
13use crate::dom::bindings::root::DomRoot;
14use crate::dom::event::Event;
15use crate::dom::types::GlobalScope;
16use crate::script_runtime::CanGc;
17
18#[dom_struct]
19/// Event for Rust → JS calls in [`crate::dom::DebuggerGlobalScope`].
20pub(crate) struct DebuggerGetEnvironmentEvent {
21    event: Event,
22    frame_actor_id: DOMString,
23}
24
25impl DebuggerGetEnvironmentEvent {
26    pub(crate) fn new(
27        debugger_global: &GlobalScope,
28        frame_actor_id: DOMString,
29        can_gc: CanGc,
30    ) -> DomRoot<Self> {
31        let result = Box::new(Self {
32            event: Event::new_inherited(),
33            frame_actor_id,
34        });
35        let result = reflect_dom_object(result, debugger_global, can_gc);
36        result
37            .event
38            .init_event("getEnvironment".into(), false, false);
39
40        result
41    }
42}
43
44impl DebuggerGetEnvironmentEventMethods<crate::DomTypeHolder> for DebuggerGetEnvironmentEvent {
45    // check-tidy: no specs after this line
46    fn FrameActorId(&self) -> DOMString {
47        self.frame_actor_id.clone()
48    }
49
50    fn IsTrusted(&self) -> bool {
51        self.event.IsTrusted()
52    }
53}
54
55impl Debug for DebuggerGetEnvironmentEvent {
56    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
57        f.debug_struct("DebuggerGetEnvironmentEvent").finish()
58    }
59}