mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Register iframes with the devtools (#35874)
Previously, the devtools didn't know about <iframe>s. They either ignored messages coming from iframes or crashed. This reverts https://github.com/servo/servo/pull/34032 and then filters out non-tab globals in the "listTabs" message to the root actor. Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This commit is contained in:
parent
4d73de3dde
commit
48aacc43b7
7 changed files with 34 additions and 13 deletions
|
@ -180,7 +180,11 @@ impl BrowsingContextActor {
|
|||
actors: &mut ActorRegistry,
|
||||
) -> BrowsingContextActor {
|
||||
let name = actors.new_name("target");
|
||||
let DevtoolsPageInfo { title, url } = page_info;
|
||||
let DevtoolsPageInfo {
|
||||
title,
|
||||
url,
|
||||
is_top_level_global,
|
||||
} = page_info;
|
||||
|
||||
let accessibility = AccessibilityActor::new(actors.new_name("accessibility"));
|
||||
|
||||
|
@ -205,7 +209,7 @@ impl BrowsingContextActor {
|
|||
|
||||
let style_sheets = StyleSheetsActor::new(actors.new_name("stylesheets"));
|
||||
|
||||
let tabdesc = TabDescriptorActor::new(actors, name.clone());
|
||||
let tabdesc = TabDescriptorActor::new(actors, name.clone(), is_top_level_global);
|
||||
|
||||
let thread = ThreadActor::new(actors.new_name("thread"));
|
||||
|
||||
|
|
|
@ -200,10 +200,14 @@ impl Actor for RootActor {
|
|||
tabs: self
|
||||
.tabs
|
||||
.iter()
|
||||
.map(|target| {
|
||||
registry
|
||||
.find::<TabDescriptorActor>(target)
|
||||
.encodable(registry, false)
|
||||
.filter_map(|target| {
|
||||
let tab_actor = registry.find::<TabDescriptorActor>(target);
|
||||
// Filter out iframes and workers
|
||||
if tab_actor.is_top_level_global() {
|
||||
Some(tab_actor.encodable(registry, false))
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
.collect(),
|
||||
};
|
||||
|
|
|
@ -65,6 +65,7 @@ struct GetWatcherReply {
|
|||
pub struct TabDescriptorActor {
|
||||
name: String,
|
||||
browsing_context_actor: String,
|
||||
is_top_level_global: bool,
|
||||
}
|
||||
|
||||
impl Actor for TabDescriptorActor {
|
||||
|
@ -125,6 +126,7 @@ impl TabDescriptorActor {
|
|||
pub(crate) fn new(
|
||||
actors: &mut ActorRegistry,
|
||||
browsing_context_actor: String,
|
||||
is_top_level_global: bool,
|
||||
) -> TabDescriptorActor {
|
||||
let name = actors.new_name("tab-description");
|
||||
let root = actors.find_mut::<RootActor>("root");
|
||||
|
@ -132,6 +134,7 @@ impl TabDescriptorActor {
|
|||
TabDescriptorActor {
|
||||
name,
|
||||
browsing_context_actor,
|
||||
is_top_level_global,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -157,4 +160,8 @@ impl TabDescriptorActor {
|
|||
url,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn is_top_level_global(&self) -> bool {
|
||||
self.is_top_level_global
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue