From 1ccab328f9bc7e2952bbbfe7591804b6ce65ee9e Mon Sep 17 00:00:00 2001 From: Brandon Fairchild Date: Thu, 31 Dec 2015 11:48:15 -0500 Subject: [PATCH] Support empty strings as the repeat argument (CreatePattern) According to the third step in the specification [1], createPattern should let the repetition argument be "repeat" when it is the empty string. The code in CanvasRenderingContext2D::CreatePattern did not implement this step and instead threw a SyntaxError exception when an empty string was supplied as the repetition argument. Fixes #9079. [1] https://html.spec.whatwg.org/multipage/#dom-context-2d-createpattern --- components/script/dom/canvasrenderingcontext2d.rs | 6 +++++- .../fill-and-stroke-styles/2d.pattern.repeat.empty.html.ini | 5 ----- .../fill-and-stroke-styles/2d.pattern.repeat.null.html.ini | 5 ----- 3 files changed, 5 insertions(+), 11 deletions(-) delete mode 100644 tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.empty.html.ini delete mode 100644 tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.null.html.ini diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index 05a4b875852b..40cbb90a6a80 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -1147,7 +1147,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { // https://html.spec.whatwg.org/multipage/#dom-context-2d-createpattern fn CreatePattern(&self, image: HTMLImageElementOrHTMLCanvasElementOrCanvasRenderingContext2D, - repetition: DOMString) + mut repetition: DOMString) -> Fallible> { let (image_data, image_size) = match image { HTMLImageElementOrHTMLCanvasElementOrCanvasRenderingContext2D::eHTMLImageElement(ref image) => { @@ -1169,6 +1169,10 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { } }; + if repetition.is_empty() { + repetition.push_str("repeat"); + } + if let Ok(rep) = RepetitionStyle::from_str(&repetition) { Ok(CanvasPattern::new(self.global.root().r(), image_data, diff --git a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.empty.html.ini b/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.empty.html.ini deleted file mode 100644 index 39ec1af8f9ce..000000000000 --- a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.empty.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[2d.pattern.repeat.empty.html] - type: testharness - [Canvas test: 2d.pattern.repeat.empty] - expected: FAIL - diff --git a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.null.html.ini b/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.null.html.ini deleted file mode 100644 index 1013179fffc0..000000000000 --- a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.null.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[2d.pattern.repeat.null.html] - type: testharness - [Canvas test: 2d.pattern.repeat.null] - expected: FAIL -