From 1623114376cc31b704f4d0bbd3b1b80a35eab31d Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Tue, 19 Apr 2016 18:26:41 -0400 Subject: [PATCH] Use DOM width/height for canvas display list item. --- components/layout/display_list_builder.rs | 12 +++++-- tests/wpt/metadata/MANIFEST.json | 32 +++++++++++++++++-- .../reading/read-pixels-test.html.ini | 2 +- ...tate-uneffected-after-compositing.html.ini | 2 +- .../textures/texture-size-cube-maps.html.ini | 2 +- .../textures/texture-size-limit.html.ini | 4 +-- .../textures/texture-size.html.ini | 4 +-- .../canvas_scale.html | 23 +++++++++++++ .../canvas_scale_ref.html | 14 ++++++++ 9 files changed, 81 insertions(+), 14 deletions(-) create mode 100644 tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html create mode 100644 tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale_ref.html 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 @@ + + +Verify that canvases are scaled up to their computed size + + +
+
+ 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 @@ + + + +
+