diff options
9 files changed, 81 insertions, 14 deletions
diff --git a/components/layout/display_list_builder.rs b/components/layout/display_list_builder.rs index 1a02e7d8a5d..fa9558fbc0c 100644 --- a/components/layout/display_list_builder.rs +++ b/components/layout/display_list_builder.rs @@ -1220,6 +1220,9 @@ impl FragmentDisplayListBuilding for Fragment { let height = canvas_fragment_info.replaced_image_fragment_info .computed_block_size.map_or(0, |h| h.to_px() as usize); if width > 0 && height > 0 { + let computed_width = canvas_fragment_info.canvas_inline_size().to_px(); + let computed_height = canvas_fragment_info.canvas_block_size().to_px(); + let layer_id = self.layer_id(); let canvas_data = match canvas_fragment_info.ipc_renderer { Some(ref ipc_renderer) => { @@ -1230,7 +1233,10 @@ impl FragmentDisplayListBuilding for Fragment { receiver.recv().unwrap() }, None => CanvasData::Pixels(CanvasPixelData { - image_data: IpcSharedMemory::from_byte(0xFFu8, width * height * 4), + image_data: IpcSharedMemory::from_byte(0xFFu8, + (computed_width * + computed_height * 4) + as usize), image_key: None, }), }; @@ -1245,8 +1251,8 @@ impl FragmentDisplayListBuilding for Fragment { clip), image_data: Some(Arc::new(canvas_data.image_data)), webrender_image: WebRenderImageInfo { - width: width as u32, - height: height as u32, + width: computed_width as u32, + height: computed_height as u32, format: PixelFormat::RGBA8, key: canvas_data.image_key, }, diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 93aaaca93ef..9004a69dcaa 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -35214,8 +35214,36 @@ "local_changes": { "deleted": [], "deleted_reftests": {}, - "items": {}, - "reftest_nodes": {} + "items": { + "reftest": { + "html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html": [ + { + "path": "html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html", + "references": [ + [ + "/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale_ref.html", + "==" + ] + ], + "url": "/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html" + } + ] + } + }, + "reftest_nodes": { + "html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html": [ + { + "path": "html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html", + "references": [ + [ + "/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale_ref.html", + "==" + ] + ], + "url": "/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html" + } + ] + } }, "reftest_nodes": { "2dcontext/building-paths/canvas_complexshapes_arcto_001.htm": [ diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/reading/read-pixels-test.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/reading/read-pixels-test.html.ini index b5f47e0e275..72222627cc3 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/reading/read-pixels-test.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/reading/read-pixels-test.html.ini @@ -1,3 +1,3 @@ [read-pixels-test.html] type: testharness - expected: CRASH + expected: TIMEOUT diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/state/state-uneffected-after-compositing.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/state/state-uneffected-after-compositing.html.ini index c8e528531fb..8d9aeee05dc 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/state/state-uneffected-after-compositing.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/state/state-uneffected-after-compositing.html.ini @@ -1,6 +1,6 @@ [state-uneffected-after-compositing.html] type: testharness - expected: CRASH + expected: TIMEOUT [WebGL test #0: Unable to fetch WebGL rendering context for Canvas] expected: FAIL diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-cube-maps.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-cube-maps.html.ini index d7e8a8b4c1b..4b7a0b20cd0 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-cube-maps.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-cube-maps.html.ini @@ -1,3 +1,3 @@ [texture-size-cube-maps.html] type: testharness - expected: CRASH + expected: TIMEOUT diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-limit.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-limit.html.ini index 531214358f8..9447365f926 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-limit.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-limit.html.ini @@ -1,8 +1,6 @@ [texture-size-limit.html] type: testharness - expected: - if os == "linux": CRASH - if not debug and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64) and (backend == "cpu"): CRASH + expected: TIMEOUT [WebGL test #0: Unable to fetch WebGL rendering context for Canvas] expected: FAIL diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size.html.ini index ab4df0b7d7e..a4bcc3d348b 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size.html.ini @@ -1,8 +1,6 @@ [texture-size.html] type: testharness - expected: - if os == "linux": CRASH - if not debug and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64) and (backend == "cpu"): CRASH + expected: TIMEOUT [WebGL test #0: Unable to fetch WebGL rendering context for Canvas] expected: FAIL diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html new file mode 100644 index 00000000000..cdc4647534a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html @@ -0,0 +1,23 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Verify that canvases are scaled up to their computed size</title> +<link rel="match" href="canvas_scale_ref.html"> +<style> +canvas { + width: 20px; + height: 20px; +} +div { + line-height: 0; +} +</style> +<div><canvas width="16" height="16" data-color="#FF00FF"></canvas><canvas width="16" height="16" data-color="#00FF00"></canvas></div> +<div><canvas width="16" height="16" data-color="#0000FF"></canvas><canvas width="16" height="16" data-color="#FF00FF"></canvas></div> +<script> +var canvases = document.getElementsByTagName('canvas'); +for (var i = 0; i < canvases.length; i++) { + var ctx = canvases[i].getContext('2d'); + ctx.fillStyle = canvases[i].getAttribute('data-color'); + ctx.fillRect(0, 0, 16, 16); +} +</script> diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale_ref.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale_ref.html new file mode 100644 index 00000000000..2d1756f856a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale_ref.html @@ -0,0 +1,14 @@ +<!doctype html> +<meta charset="utf-8"> +<style> +span { + display: inline-block; + width: 20px; + height: 20px; +} +div { + line-height: 0; +} +</style> +<div><span style="background-color: #FF00FF"></span><span style="background-color: #00FF00"></span></div> +<div><span style="background-color: #0000FF"></span><span style="background-color: #FF00FF"></span></div> |