servo: Merge #10159 - script: Make iframes know their pipeline IDs at all times, even after navigation (from pcwalton:iframes-know-their-pipelines); r=jdm

Since WebRender uses the pipeline ID stored in the iframe element to
determine which pipeline to display, it had better be kept up to date!

Closes #9919.

r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: 3836c2c4cba1f49ea5ce3ce802b0bd604213c2a2
This commit is contained in:
Patrick Walton
2016-04-28 12:44:39 -07:00
parent 8d85b3151a
commit 6c5516fb24
4 changed files with 23 additions and 9 deletions

View File

@@ -883,8 +883,12 @@ impl ScriptThread {
event),
ConstellationControlMsg::UpdateSubpageId(containing_pipeline_id,
old_subpage_id,
new_subpage_id) =>
self.handle_update_subpage_id(containing_pipeline_id, old_subpage_id, new_subpage_id),
new_subpage_id,
new_pipeline_id) =>
self.handle_update_subpage_id(containing_pipeline_id,
old_subpage_id,
new_subpage_id,
new_pipeline_id),
ConstellationControlMsg::FocusIFrame(containing_pipeline_id, subpage_id) =>
self.handle_focus_iframe_msg(containing_pipeline_id, subpage_id),
ConstellationControlMsg::WebDriverScriptCommand(pipeline_id, msg) =>
@@ -1243,7 +1247,8 @@ impl ScriptThread {
fn handle_update_subpage_id(&self,
containing_pipeline_id: PipelineId,
old_subpage_id: SubpageId,
new_subpage_id: SubpageId) {
new_subpage_id: SubpageId,
new_pipeline_id: PipelineId) {
let borrowed_page = self.root_page();
let frame_element = borrowed_page.find(containing_pipeline_id).and_then(|page| {
@@ -1251,7 +1256,7 @@ impl ScriptThread {
doc.find_iframe(old_subpage_id)
});
frame_element.unwrap().update_subpage_id(new_subpage_id);
frame_element.unwrap().update_subpage_id(new_subpage_id, new_pipeline_id);
}
/// Window was resized, but this script was not active, so don't reflow yet