From 2fb5fda5d09b86573e2c3c878ee525482327ac91 Mon Sep 17 00:00:00 2001 From: David Zbarsky Date: Tue, 4 Aug 2015 15:45:38 -0400 Subject: [PATCH] Fix createImageData with sizes < 1 pixel --- components/script/dom/canvasrenderingcontext2d.rs | 5 ++++- .../pixel-manipulation/2d.imageData.create2.tiny.html.ini | 5 ----- 2 files changed, 4 insertions(+), 6 deletions(-) delete mode 100644 tests/wpt/metadata/2dcontext/pixel-manipulation/2d.imageData.create2.tiny.html.ini diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index 834e9606c49..5b73d7a900d 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -42,6 +42,7 @@ use num::{Float, ToPrimitive}; use std::borrow::ToOwned; use std::cell::RefCell; use std::fmt; +use std::cmp; use std::sync::mpsc::channel; use util::str::DOMString; @@ -954,7 +955,9 @@ impl<'a> CanvasRenderingContext2DMethods for &'a CanvasRenderingContext2D { return Err(IndexSize) } - Ok(ImageData::new(self.global.root().r(), sw.abs().to_u32().unwrap(), sh.abs().to_u32().unwrap(), None)) + let sw = cmp::max(1, sw.abs().to_u32().unwrap()); + let sh = cmp::max(1, sh.abs().to_u32().unwrap()); + Ok(ImageData::new(self.global.root().r(), sw, sh, None)) } // https://html.spec.whatwg.org/multipage/#dom-context-2d-createimagedata diff --git a/tests/wpt/metadata/2dcontext/pixel-manipulation/2d.imageData.create2.tiny.html.ini b/tests/wpt/metadata/2dcontext/pixel-manipulation/2d.imageData.create2.tiny.html.ini deleted file mode 100644 index 4c8c24b530d..00000000000 --- a/tests/wpt/metadata/2dcontext/pixel-manipulation/2d.imageData.create2.tiny.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[2d.imageData.create2.tiny.html] - type: testharness - [createImageData(sw, sh) works for sizes smaller than one pixel] - expected: FAIL -