mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Devtools: Support worker scripts in Debugger > Source
panel (#36562)
This patch adds support for listing `worker scripts` in `debugger > source` panel For example: ``` <!-- test.html --> <!doctype html><meta charset=utf-8> <script> setTimeout(() => { console.log("inline classic"); new Worker("worker.js"); const blob = new Blob([`console.log("blob worker");`], { type: "text/javascript" }); const blobURL = URL.createObjectURL(blob); new Worker(blobURL); }, 2000); </script> ``` ``` // worker.js console.log("external classic worker"); ``` ``` ./mach run --devtools=6080 http://127.0.0.1:3000/test.html ```  Another example: ``` ./mach run --devtools=6080 https://charming.daz.cat/ ```  - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes partially implement #36027 - [x] These changes require tests, but they are blocked on https://github.com/servo/servo/issues/36325 --------- Signed-off-by: atbrakhi <atbrakhi@igalia.com>
This commit is contained in:
parent
107fd25465
commit
b92542b756
6 changed files with 142 additions and 38 deletions
|
@ -510,35 +510,54 @@ impl DevtoolsInstance {
|
|||
fn handle_script_source_info(&mut self, pipeline_id: PipelineId, source_info: SourceInfo) {
|
||||
let mut actors = self.actors.lock().unwrap();
|
||||
|
||||
let browsing_context_id = match self.pipelines.get(&pipeline_id) {
|
||||
Some(id) => id,
|
||||
None => return,
|
||||
};
|
||||
if let Some(worker_id) = source_info.worker_id {
|
||||
let Some(worker_actor_name) = self.actor_workers.get(&worker_id) else {
|
||||
return;
|
||||
};
|
||||
|
||||
let actor_name = match self.browsing_contexts.get(browsing_context_id) {
|
||||
Some(name) => name,
|
||||
None => return,
|
||||
};
|
||||
let thread_actor_name = actors.find::<WorkerActor>(worker_actor_name).thread.clone();
|
||||
|
||||
let thread_actor_name = actors
|
||||
.find::<BrowsingContextActor>(actor_name)
|
||||
.thread
|
||||
.clone();
|
||||
let thread_actor = actors.find_mut::<ThreadActor>(&thread_actor_name);
|
||||
thread_actor
|
||||
.source_manager
|
||||
.add_source(source_info.url.clone());
|
||||
|
||||
let thread_actor = actors.find_mut::<ThreadActor>(&thread_actor_name);
|
||||
thread_actor
|
||||
.source_manager
|
||||
.add_source(source_info.url.clone());
|
||||
let source = SourceData {
|
||||
actor: thread_actor_name.clone(),
|
||||
url: source_info.url.to_string(),
|
||||
is_black_boxed: false,
|
||||
};
|
||||
|
||||
let source = SourceData {
|
||||
actor: thread_actor_name.clone(),
|
||||
url: source_info.url.to_string(),
|
||||
is_black_boxed: false,
|
||||
};
|
||||
let worker_actor = actors.find::<WorkerActor>(worker_actor_name);
|
||||
worker_actor.resource_available(source, "source".into());
|
||||
} else {
|
||||
let Some(browsing_context_id) = self.pipelines.get(&pipeline_id) else {
|
||||
return;
|
||||
};
|
||||
let Some(actor_name) = self.browsing_contexts.get(browsing_context_id) else {
|
||||
return;
|
||||
};
|
||||
|
||||
// Notify browsing context about the new source
|
||||
let browsing_context = actors.find::<BrowsingContextActor>(actor_name);
|
||||
browsing_context.resource_available(source, "source".into());
|
||||
let thread_actor_name = actors
|
||||
.find::<BrowsingContextActor>(actor_name)
|
||||
.thread
|
||||
.clone();
|
||||
|
||||
let thread_actor = actors.find_mut::<ThreadActor>(&thread_actor_name);
|
||||
thread_actor
|
||||
.source_manager
|
||||
.add_source(source_info.url.clone());
|
||||
|
||||
let source = SourceData {
|
||||
actor: thread_actor_name.clone(),
|
||||
url: source_info.url.to_string(),
|
||||
is_black_boxed: false,
|
||||
};
|
||||
|
||||
// Notify browsing context about the new source
|
||||
let browsing_context = actors.find::<BrowsingContextActor>(actor_name);
|
||||
browsing_context.resource_available(source, "source".into());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue