aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/layout/display_list_builder.rs12
-rw-r--r--tests/wpt/metadata/MANIFEST.json32
-rw-r--r--tests/wpt/metadata/webgl/conformance-1.0.3/conformance/reading/read-pixels-test.html.ini2
-rw-r--r--tests/wpt/metadata/webgl/conformance-1.0.3/conformance/state/state-uneffected-after-compositing.html.ini2
-rw-r--r--tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-cube-maps.html.ini2
-rw-r--r--tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-limit.html.ini4
-rw-r--r--tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size.html.ini4
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html23
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale_ref.html14
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>