Skip to content

Conversation

@atbrakhi
Copy link
Member

This patch fixes the source panel in the DevTools that was broken due to missing breakpoint actor implementation. The client was sending messages to the breakpoint actor that didn't exist in Servo, resulting in "unknown actor"
warnings in the logs(See logs in issue description)

To fix this this patch implements the BreakpointListActor that handles setBreakpoint and setActiveEventBreakpoints messages with empty replies. This PR does not implement breakpoint functionality

image

Fixes: #37196

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
@atbrakhi atbrakhi changed the title DevTools: Fix debugger > source by implementing breakpoint actor DevTools: Fix empty debugger > source panel May 30, 2025
Comment on lines +34 to +45
"setBreakpoint" => {
let msg = EmptyReplyMsg { from: self.name() };
let _ = stream.write_json_packet(&msg);

ActorMessageStatus::Processed
},
"setActiveEventBreakpoints" => {
let msg = EmptyReplyMsg { from: self.name() };
let _ = stream.write_json_packet(&msg);

ActorMessageStatus::Processed
},
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same behavior for "setBreakpoint" | "setActiveEventBreakpoints" ?

Suggested change
"setBreakpoint" => {
let msg = EmptyReplyMsg { from: self.name() };
let _ = stream.write_json_packet(&msg);
ActorMessageStatus::Processed
},
"setActiveEventBreakpoints" => {
let msg = EmptyReplyMsg { from: self.name() };
let _ = stream.write_json_packet(&msg);
ActorMessageStatus::Processed
},
"setBreakpoint" | "setActiveEventBreakpoints" => {
let msg = EmptyReplyMsg { from: self.name().to_string() };
if let Err(e) = stream.write_json_packet(&msg) {
log::error!("Failed to write JSON response: {:?}", e);
return Err(());
}
Ok(ActorMessageStatus::Processed)
}

Copy link
Member Author

@atbrakhi atbrakhi May 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm, not sure if we should do that, mostly because we are going to implement this setBreakpoint and setActiveEventBreakpoints(I am already working on this in another branch) and they are going to have different behavior. Right now we just need to implement an empty reply to fix this bug, hence the same behavior.

@atbrakhi atbrakhi added this pull request to the merge queue May 31, 2025
Merged via the queue into servo:main with commit 568d24d May 31, 2025
22 checks passed
@atbrakhi atbrakhi deleted the fix_devtool_breakpoint branch May 31, 2025 07:29
vlindhol added a commit to vlindhol/servo that referenced this pull request Jun 1, 2025
* main: (510 commits)
  DevTools: Fix empty `debugger > source` panel (servo#37197)
  dom: implement signal abort on controller and signal (servo#37192)
  build(deps): bump parking_lot from 0.12.3 to 0.12.4 (servo#37199)
  layout: Split overflow calculation after fragment tree construction (servo#37203)
  build(deps): bump parking_lot_core from 0.9.10 to 0.9.11 (servo#37202)
  build(deps): bump lock_api from 0.4.12 to 0.4.13 (servo#37201)
  build(deps): bump cc from 1.2.24 to 1.2.25 (servo#37198)
  Constellation can now optionally report memory usage when the page is loaded. (servo#37151)
  Implement Input `type=text` UA Shadow DOM (servo#37065)
  constellation: Wait for canvas thread to shut down before shutting down system font service (servo#37182)
  Add slot default display style test (servo#37189)
  Send synthetic keydown/keyup at ime_insert_text (servo#37175)
  script: Let canvas serialization to image fail gracefully (servo#37184)
  Implement basics of link preloading (servo#37036)
  compositor: Add an initial RefreshDriver (servo#37169)
  pixels: Add limitation to max image total bytes length (servo#37172)
  Chore: Remove unused variable in `transition-zero-duration-with-delay.html` (servo#37179)
  build(deps): bump ohos-ime from 0.2.0 to 0.3.0 (servo#37180)
  Add a user agent style for the `<slot>` element (servo#37174)
  build(deps): bump hitrace from 0.1.4 to 0.1.5 (servo#37170)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Devtools: debugger > source panel is empty

2 participants