mirror of
https://github.com/servo/servo.git
synced 2025-07-24 15:50:21 +01:00
Various fixes for cleaning up iframes, compositor layers, pipelines and threads.
This allows most of the jquery test suite to run without exhausting thread resources.
This commit is contained in:
parent
5e61ebaa05
commit
2b3737d34e
11 changed files with 191 additions and 14 deletions
|
@ -385,5 +385,32 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLIFrameElement> {
|
|||
self.process_the_iframe_attributes();
|
||||
}
|
||||
}
|
||||
|
||||
fn unbind_from_tree(&self, tree_in_doc: bool) {
|
||||
if let Some(ref s) = self.super_type() {
|
||||
s.unbind_from_tree(tree_in_doc);
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#a-browsing-context-is-discarded
|
||||
match (self.containing_page_pipeline_id(), self.subpage_id()) {
|
||||
(Some(containing_pipeline_id), Some(subpage_id)) => {
|
||||
let window = window_from_node(*self).root();
|
||||
let window = window.r();
|
||||
|
||||
let ConstellationChan(ref chan) = window.constellation_chan();
|
||||
let msg = ConstellationMsg::RemoveIFrame(containing_pipeline_id,
|
||||
subpage_id);
|
||||
chan.send(msg).unwrap();
|
||||
|
||||
// Resetting the subpage id to None is required here so that
|
||||
// if this iframe is subsequently re-added to the document
|
||||
// the load doesn't think that it's a navigation, but instead
|
||||
// a new iframe. Without this, the constellation gets very
|
||||
// confused.
|
||||
self.subpage_id.set(None);
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue