mirror of
https://github.com/servo/servo
synced 2026-05-09 16:42:16 +02:00
The pause debugger screen should be shown for both pausing manually (interrupt) and hitting a breakpoint. Reuse the logic for pausing breakpoints to pause the debugger when the user manually clicks the pause button. Rename the pause event to interrupt to match the language of the DevTools client and to avoid confusion with paused frames, which can happen on interrupt or on a breakpoint. https://github.com/user-attachments/assets/ceb0007d-0e57-44d6-a159-55980ff8b517 Testing: New DevTools test and manual testing. Part of: #36027 cc @atbrakhi --------- Signed-off-by: eri <eri@igalia.com> Co-authored-by: atbrakhi <atbrakhi@igalia.com>
47 lines
1.5 KiB
Rust
47 lines
1.5 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::fmt::Debug;
|
|
|
|
use dom_struct::dom_struct;
|
|
|
|
use crate::dom::bindings::codegen::Bindings::DebuggerInterruptEventBinding::DebuggerInterruptEventMethods;
|
|
use crate::dom::bindings::codegen::Bindings::EventBinding::Event_Binding::EventMethods;
|
|
use crate::dom::bindings::reflector::reflect_dom_object;
|
|
use crate::dom::bindings::root::DomRoot;
|
|
use crate::dom::event::Event;
|
|
use crate::dom::types::GlobalScope;
|
|
use crate::script_runtime::CanGc;
|
|
|
|
#[dom_struct]
|
|
/// Event for Rust → JS calls in [`crate::dom::DebuggerGlobalScope`].
|
|
pub(crate) struct DebuggerInterruptEvent {
|
|
event: Event,
|
|
}
|
|
|
|
impl DebuggerInterruptEvent {
|
|
pub(crate) fn new(debugger_global: &GlobalScope, can_gc: CanGc) -> DomRoot<Self> {
|
|
let result = Box::new(Self {
|
|
event: Event::new_inherited(),
|
|
});
|
|
let result = reflect_dom_object(result, debugger_global, can_gc);
|
|
result.event.init_event("interrupt".into(), false, false);
|
|
|
|
result
|
|
}
|
|
}
|
|
|
|
impl DebuggerInterruptEventMethods<crate::DomTypeHolder> for DebuggerInterruptEvent {
|
|
// check-tidy: no specs after this line
|
|
fn IsTrusted(&self) -> bool {
|
|
self.event.IsTrusted()
|
|
}
|
|
}
|
|
|
|
impl Debug for DebuggerInterruptEvent {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
f.debug_struct("DebuggerInterruptEvent").finish()
|
|
}
|
|
}
|