diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs index de02b59d67a..e8576e70e57 100644 --- a/components/compositing/compositor.rs +++ b/components/compositing/compositor.rs @@ -791,8 +791,20 @@ impl IOCompositor { self.pipeline_details.remove(&pipeline_id); } - fn update_layer_if_exists(&mut self, pipeline_id: PipelineId, properties: LayerProperties) + fn update_layer_if_exists(&mut self, + pipeline_id: PipelineId, + properties: LayerProperties) -> bool { + if let Some(subpage_id) = properties.subpage_pipeline_id { + match self.find_layer_with_pipeline_and_layer_id(subpage_id, LayerId::null()) { + Some(layer) => { + *layer.bounds.borrow_mut() = Rect::from_untyped( + &Rect::new(Point2D::zero(), properties.rect.size)); + } + None => warn!("Tried to update non-existent subpage root layer: {:?}", subpage_id), + } + } + match self.find_layer_with_pipeline_and_layer_id(pipeline_id, properties.id) { Some(existing_layer) => { existing_layer.update_layer(properties); diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index 77b23ba35f5..b55ad3af106 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -4139,6 +4139,18 @@ "url": "/_mozilla/mozilla/canvas/drawimage_html_image_9.html" } ], + "mozilla/iframe/resize_after_load.html": [ + { + "path": "mozilla/iframe/resize_after_load.html", + "references": [ + [ + "/_mozilla/mozilla/iframe/resize_after_load_ref.html", + "==" + ] + ], + "url": "/_mozilla/mozilla/iframe/resize_after_load.html" + } + ], "mozilla/webgl/clearcolor.html": [ { "path": "mozilla/webgl/clearcolor.html", @@ -8928,6 +8940,18 @@ "url": "/_mozilla/mozilla/canvas/drawimage_html_image_9.html" } ], + "mozilla/iframe/resize_after_load.html": [ + { + "path": "mozilla/iframe/resize_after_load.html", + "references": [ + [ + "/_mozilla/mozilla/iframe/resize_after_load_ref.html", + "==" + ] + ], + "url": "/_mozilla/mozilla/iframe/resize_after_load.html" + } + ], "mozilla/webgl/clearcolor.html": [ { "path": "mozilla/webgl/clearcolor.html", diff --git a/tests/wpt/mozilla/tests/mozilla/iframe/resize_after_load.html b/tests/wpt/mozilla/tests/mozilla/iframe/resize_after_load.html new file mode 100644 index 00000000000..c126af16b07 --- /dev/null +++ b/tests/wpt/mozilla/tests/mozilla/iframe/resize_after_load.html @@ -0,0 +1,24 @@ + + + + + Dynamically growing an iframe element + + + + + + + + diff --git a/tests/wpt/mozilla/tests/mozilla/iframe/resize_after_load_ref.html b/tests/wpt/mozilla/tests/mozilla/iframe/resize_after_load_ref.html new file mode 100644 index 00000000000..2d3f57bacd0 --- /dev/null +++ b/tests/wpt/mozilla/tests/mozilla/iframe/resize_after_load_ref.html @@ -0,0 +1,6 @@ + + + +
+ + diff --git a/tests/wpt/mozilla/tests/mozilla/iframe/resources/green_inner_frame.html b/tests/wpt/mozilla/tests/mozilla/iframe/resources/green_inner_frame.html new file mode 100644 index 00000000000..f5cc00c8f57 --- /dev/null +++ b/tests/wpt/mozilla/tests/mozilla/iframe/resources/green_inner_frame.html @@ -0,0 +1,5 @@ + + + + +