aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authordelan azabani <dazabani@igalia.com>2025-04-08 17:22:53 +0800
committerGitHub <noreply@github.com>2025-04-08 09:22:53 +0000
commit95eedb997ae459002c73ec61aa4c6c45d0cc358e (patch)
tree259ef3e4174a8223e8349723377e00e062600919 /components/script/dom
parent40655cc06cbeb9affd8f4eeae9f45cd57db319f1 (diff)
downloadservo-95eedb997ae459002c73ec61aa4c6c45d0cc358e.tar.gz
servo-95eedb997ae459002c73ec61aa4c6c45d0cc358e.zip
Devtools: initial Debugger > Sources panel (#36164)
This patch adds support for listing scripts in the Sources panel. Classic scripts, both external and inline, are implemented, but worker scripts and imported module scripts are not yet implemented. For example: ```html <!-- sources.html --> <!doctype html><meta charset=utf-8> <script src="classic.js"></script> <script> console.log("inline classic"); new Worker("worker.js"); </script> <script type="module"> import module from "./module.js"; console.log("inline module"); </script> <script src="https://servo.org/js/load-table.js"></script> ``` ```js // classic.js console.log("external classic"); ``` ```js // worker.js console.log("external classic worker"); ``` ```js // module.js export default 1; console.log("external module"); ``` ![image](https://github.com/user-attachments/assets/2f1d8d7c-501f-4fe5-bd07-085c95e504f2) --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes partially implement #36027 <!-- Either: --> - [ ] There are tests for these changes OR - [x] These changes require tests, but they are blocked on #36325 Signed-off-by: Delan Azabani <dazabani@igalia.com> Co-authored-by: atbrakhi <atbrakhi@igalia.com>
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/htmlscriptelement.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs
index ed7c6e6da30..71e3d4ed72b 100644
--- a/components/script/dom/htmlscriptelement.rs
+++ b/components/script/dom/htmlscriptelement.rs
@@ -13,6 +13,7 @@ use std::sync::{Arc, Mutex};
use base::id::{PipelineId, WebViewId};
use content_security_policy as csp;
+use devtools_traits::{ScriptToDevtoolsControlMsg, SourceInfo};
use dom_struct::dom_struct;
use encoding_rs::Encoding;
use html5ever::{LocalName, Prefix, local_name, namespace_url, ns};
@@ -988,6 +989,19 @@ impl HTMLScriptElement {
Ok(script) => script,
};
+ // TODO: we need to handle this for worker
+ if let Some(chan) = self.global().devtools_chan() {
+ let pipeline_id = self.global().pipeline_id();
+ let source_info = SourceInfo {
+ url: script.url.clone(),
+ external: script.external,
+ };
+ let _ = chan.send(ScriptToDevtoolsControlMsg::ScriptSourceLoaded(
+ pipeline_id,
+ source_info,
+ ));
+ }
+
if script.type_ == ScriptType::Classic {
unminify_js(&mut script);
self.substitute_with_local_script(&mut script);