mirror of
https://github.com/servo/servo.git
synced 2025-08-12 00:45:33 +01:00
the next debugger script event, `getPossibleBreakpoints` (#37667), will contain a single attribute `unsigned long spidermonkeyId`, so it will have nothing in common with `addDebuggee`. this patch renames the latter accordingly. Testing: no behaviour changes other than the rename, so no tests needed Fixes: part of #36027 Signed-off-by: Delan Azabani <dazabani@igalia.com>
76 lines
2.6 KiB
Rust
76 lines
2.6 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||
|
||
use std::ptr::NonNull;
|
||
|
||
use dom_struct::dom_struct;
|
||
use js::jsapi::{JSObject, Value};
|
||
use script_bindings::conversions::SafeToJSValConvertible;
|
||
use script_bindings::reflector::DomObject;
|
||
use script_bindings::str::DOMString;
|
||
|
||
use crate::dom::bindings::codegen::Bindings::DebuggerAddDebuggeeEventBinding::DebuggerAddDebuggeeEventMethods;
|
||
use crate::dom::bindings::codegen::Bindings::EventBinding::Event_Binding::EventMethods;
|
||
use crate::dom::bindings::reflector::reflect_dom_object;
|
||
use crate::dom::bindings::root::{Dom, DomRoot};
|
||
use crate::dom::event::Event;
|
||
use crate::dom::types::{GlobalScope, PipelineId};
|
||
use crate::script_runtime::CanGc;
|
||
|
||
#[dom_struct]
|
||
/// Event for Rust → JS calls in [`crate::dom::DebuggerGlobalScope`].
|
||
pub(crate) struct DebuggerAddDebuggeeEvent {
|
||
event: Event,
|
||
global: Dom<GlobalScope>,
|
||
pipeline_id: Dom<PipelineId>,
|
||
worker_id: Option<DOMString>,
|
||
}
|
||
|
||
impl DebuggerAddDebuggeeEvent {
|
||
pub(crate) fn new(
|
||
debugger_global: &GlobalScope,
|
||
global: &GlobalScope,
|
||
pipeline_id: &PipelineId,
|
||
worker_id: Option<DOMString>,
|
||
can_gc: CanGc,
|
||
) -> DomRoot<Self> {
|
||
let result = Box::new(Self {
|
||
event: Event::new_inherited(),
|
||
global: Dom::from_ref(global),
|
||
pipeline_id: Dom::from_ref(pipeline_id),
|
||
worker_id,
|
||
});
|
||
let result = reflect_dom_object(result, debugger_global, can_gc);
|
||
result.event.init_event("addDebuggee".into(), false, false);
|
||
|
||
result
|
||
}
|
||
}
|
||
|
||
impl DebuggerAddDebuggeeEventMethods<crate::DomTypeHolder> for DebuggerAddDebuggeeEvent {
|
||
// check-tidy: no specs after this line
|
||
fn Global(&self, cx: script_bindings::script_runtime::JSContext) -> NonNull<JSObject> {
|
||
// Convert the debuggee global’s reflector to a Value, wrapping it from its originating realm (debuggee realm)
|
||
// into the active realm (debugger realm) so that it can be passed across compartments.
|
||
rooted!(in(*cx) let mut result: Value);
|
||
self.global
|
||
.reflector()
|
||
.safe_to_jsval(cx, result.handle_mut());
|
||
NonNull::new(result.to_object()).unwrap()
|
||
}
|
||
|
||
fn PipelineId(
|
||
&self,
|
||
) -> DomRoot<<crate::DomTypeHolder as script_bindings::DomTypes>::PipelineId> {
|
||
DomRoot::from_ref(&self.pipeline_id)
|
||
}
|
||
|
||
fn GetWorkerId(&self) -> Option<DOMString> {
|
||
self.worker_id.clone()
|
||
}
|
||
|
||
fn IsTrusted(&self) -> bool {
|
||
self.event.IsTrusted()
|
||
}
|
||
}
|