mirror of
https://github.com/servo/servo.git
synced 2025-09-29 16:19:14 +01:00
devtools: Show clients where they can set breakpoints (#37667)
devtools clients query source actors to determine where the user can set breakpoints in a source. there are two relevant requests here: `getBreakableLines` controls which line numbers can be clicked in the margin, and once a line number is clicked, `getBreakpointPositionsCompressed` controls where to show breakpoint buttons within that line. this patch handles those requests by querying the [SpiderMonkey Debugger API](https://firefox-source-docs.mozilla.org/js/Debugger/) for that information: - devtools sends its script thread a GetPossibleBreakpoints message for the source’s [`spidermonkey_id`](https://firefox-source-docs.mozilla.org/js/Debugger/Debugger.Source.html#id) - the script thread fires a `getPossibleBreakpoints` event into its debugger global - the debugger script looks up the [root](https://firefox-source-docs.mozilla.org/js/Debugger/Debugger.html#onnewscript-script-global) [Debugger.Script](https://firefox-source-docs.mozilla.org/js/Debugger/Debugger.Script.html#getpossiblebreakpoints-query) for that source, calls [getPossibleBreakpoints()](https://firefox-source-docs.mozilla.org/js/Debugger/Debugger.Script.html#getpossiblebreakpoints-query), and returns the result via DebuggerGlobalScope#getPossibleBreakpointsResult() - that method takes the pending result sender, and sends the result back to devtools - devtools massages the result into the format required by the request, and replies to the client as a result, users of the Firefox devtools client can now set breakpoints, though they don’t have any effect. Testing: this patch adds new devtools tests Fixes: part of #36027 <img width="1433" height="1328" alt="image" src="https://github.com/user-attachments/assets/f0cd31e0-742f-44d3-8c5d-ceedd9a2706d" /> --------- Signed-off-by: Delan Azabani <dazabani@igalia.com> Co-authored-by: atbrakhi <atbrakhi@igalia.com>
This commit is contained in:
parent
1995e22e19
commit
f5b631e270
14 changed files with 340 additions and 8 deletions
|
@ -256,9 +256,10 @@ impl DevtoolsInstance {
|
|||
worker_id,
|
||||
)) => self.handle_console_message(pipeline_id, worker_id, console_message),
|
||||
DevtoolsControlMsg::FromScript(ScriptToDevtoolsControlMsg::CreateSourceActor(
|
||||
script_sender,
|
||||
pipeline_id,
|
||||
source_info,
|
||||
)) => self.handle_create_source_actor(pipeline_id, source_info),
|
||||
)) => self.handle_create_source_actor(script_sender, pipeline_id, source_info),
|
||||
DevtoolsControlMsg::FromScript(
|
||||
ScriptToDevtoolsControlMsg::UpdateSourceContent(pipeline_id, source_content),
|
||||
) => self.handle_update_source_content(pipeline_id, source_content),
|
||||
|
@ -540,7 +541,12 @@ impl DevtoolsInstance {
|
|||
}
|
||||
}
|
||||
|
||||
fn handle_create_source_actor(&mut self, pipeline_id: PipelineId, source_info: SourceInfo) {
|
||||
fn handle_create_source_actor(
|
||||
&mut self,
|
||||
script_sender: IpcSender<DevtoolScriptControlMsg>,
|
||||
pipeline_id: PipelineId,
|
||||
source_info: SourceInfo,
|
||||
) {
|
||||
let mut actors = self.actors.lock().unwrap();
|
||||
|
||||
let source_content = source_info
|
||||
|
@ -554,6 +560,7 @@ impl DevtoolsInstance {
|
|||
source_info.content_type,
|
||||
source_info.spidermonkey_id,
|
||||
source_info.introduction_type,
|
||||
script_sender,
|
||||
);
|
||||
let source_actor_name = source_actor.name.clone();
|
||||
let source_form = source_actor.source_form();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue