Auto merge of #9109 - nerith:createpattern, r=jdm

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

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9109)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-01-01 21:04:51 +05:30
commit 11d160fc73
3 changed files with 5 additions and 11 deletions

View file

@ -1154,7 +1154,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
// https://html.spec.whatwg.org/multipage/#dom-context-2d-createpattern // https://html.spec.whatwg.org/multipage/#dom-context-2d-createpattern
fn CreatePattern(&self, fn CreatePattern(&self,
image: HTMLImageElementOrHTMLCanvasElementOrCanvasRenderingContext2D, image: HTMLImageElementOrHTMLCanvasElementOrCanvasRenderingContext2D,
repetition: DOMString) mut repetition: DOMString)
-> Fallible<Root<CanvasPattern>> { -> Fallible<Root<CanvasPattern>> {
let (image_data, image_size) = match image { let (image_data, image_size) = match image {
HTMLImageElementOrHTMLCanvasElementOrCanvasRenderingContext2D::eHTMLImageElement(ref image) => { HTMLImageElementOrHTMLCanvasElementOrCanvasRenderingContext2D::eHTMLImageElement(ref image) => {
@ -1176,6 +1176,10 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
} }
}; };
if repetition.is_empty() {
repetition.push_str("repeat");
}
if let Ok(rep) = RepetitionStyle::from_str(&repetition) { if let Ok(rep) = RepetitionStyle::from_str(&repetition) {
Ok(CanvasPattern::new(self.global.root().r(), Ok(CanvasPattern::new(self.global.root().r(),
image_data, image_data,

View file

@ -1,5 +0,0 @@
[2d.pattern.repeat.empty.html]
type: testharness
[Canvas test: 2d.pattern.repeat.empty]
expected: FAIL

View file

@ -1,5 +0,0 @@
[2d.pattern.repeat.null.html]
type: testharness
[Canvas test: 2d.pattern.repeat.null]
expected: FAIL