aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/canvas_state.rs14
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs2
-rw-r--r--components/script/dom/offscreencanvasrenderingcontext2d.rs2
-rw-r--r--components/script/dom/paintrenderingcontext2d.rs2
-rw-r--r--components/script/dom/webidls/CanvasRenderingContext2D.webidl2
-rw-r--r--tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.html.ini5
-rw-r--r--tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.html.ini5
-rw-r--r--tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.html.ini5
-rw-r--r--tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.html.ini5
-rw-r--r--tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.html.ini5
10 files changed, 12 insertions, 35 deletions
diff --git a/components/script/canvas_state.rs b/components/script/canvas_state.rs
index 34ea6741660..d596ff826fa 100644
--- a/components/script/canvas_state.rs
+++ b/components/script/canvas_state.rs
@@ -895,12 +895,14 @@ impl CanvasState {
global: &GlobalScope,
image: CanvasImageSource,
mut repetition: DOMString,
- ) -> Fallible<DomRoot<CanvasPattern>> {
+ ) -> Fallible<Option<DomRoot<CanvasPattern>>> {
let (image_data, image_size) = match image {
CanvasImageSource::HTMLImageElement(ref image) => {
- // https://html.spec.whatwg.org/multipage/#img-error
- // If the image argument is an HTMLImageElement object that is in the broken state,
- // then throw an InvalidStateError exception
+ // https://html.spec.whatwg.org/multipage/#check-the-usability-of-the-image-argument
+ if !image.is_usable()? {
+ return Ok(None);
+ }
+
image
.get_url()
.and_then(|url| {
@@ -933,13 +935,13 @@ impl CanvasState {
}
if let Ok(rep) = RepetitionStyle::from_str(&repetition) {
- Ok(CanvasPattern::new(
+ Ok(Some(CanvasPattern::new(
global,
image_data,
image_size,
rep,
self.is_origin_clean(image),
- ))
+ )))
} else {
Err(Error::Syntax)
}
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index 371b31bbdb0..4c36a22f717 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -566,7 +566,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
&self,
image: CanvasImageSource,
repetition: DOMString,
- ) -> Fallible<DomRoot<CanvasPattern>> {
+ ) -> Fallible<Option<DomRoot<CanvasPattern>>> {
self.canvas_state
.borrow()
.create_pattern(&self.global(), image, repetition)
diff --git a/components/script/dom/offscreencanvasrenderingcontext2d.rs b/components/script/dom/offscreencanvasrenderingcontext2d.rs
index 277b5925f27..31dc8b7dec5 100644
--- a/components/script/dom/offscreencanvasrenderingcontext2d.rs
+++ b/components/script/dom/offscreencanvasrenderingcontext2d.rs
@@ -210,7 +210,7 @@ impl OffscreenCanvasRenderingContext2DMethods for OffscreenCanvasRenderingContex
&self,
image: CanvasImageSource,
repetition: DOMString,
- ) -> Fallible<DomRoot<CanvasPattern>> {
+ ) -> Fallible<Option<DomRoot<CanvasPattern>>> {
self.canvas_state
.borrow()
.create_pattern(&self.global(), image, repetition)
diff --git a/components/script/dom/paintrenderingcontext2d.rs b/components/script/dom/paintrenderingcontext2d.rs
index e4b0a3cf71e..b9adc23e52d 100644
--- a/components/script/dom/paintrenderingcontext2d.rs
+++ b/components/script/dom/paintrenderingcontext2d.rs
@@ -340,7 +340,7 @@ impl PaintRenderingContext2DMethods for PaintRenderingContext2D {
&self,
image: CanvasImageSource,
repetition: DOMString,
- ) -> Fallible<DomRoot<CanvasPattern>> {
+ ) -> Fallible<Option<DomRoot<CanvasPattern>>> {
self.context.CreatePattern(image, repetition)
}
diff --git a/components/script/dom/webidls/CanvasRenderingContext2D.webidl b/components/script/dom/webidls/CanvasRenderingContext2D.webidl
index 52e532e3a8b..bcc1b56396c 100644
--- a/components/script/dom/webidls/CanvasRenderingContext2D.webidl
+++ b/components/script/dom/webidls/CanvasRenderingContext2D.webidl
@@ -93,7 +93,7 @@ interface mixin CanvasFillStrokeStyles {
[Throws]
CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1);
[Throws]
- CanvasPattern createPattern(CanvasImageSource image, [TreatNullAs=EmptyString] DOMString repetition);
+ CanvasPattern? createPattern(CanvasImageSource image, [TreatNullAs=EmptyString] DOMString repetition);
};
[Exposed=(PaintWorklet, Window, Worker)]
diff --git a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.html.ini b/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.html.ini
deleted file mode 100644
index a182cdc6e30..00000000000
--- a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[2d.pattern.image.incomplete.emptysrc.html]
- type: testharness
- [Canvas test: 2d.pattern.image.incomplete.emptysrc]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.html.ini b/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.html.ini
deleted file mode 100644
index 64b9e3e8638..00000000000
--- a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[2d.pattern.image.incomplete.immediate.html]
- type: testharness
- [Canvas test: 2d.pattern.image.incomplete.immediate]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.html.ini b/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.html.ini
deleted file mode 100644
index b8ab4c72db7..00000000000
--- a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[2d.pattern.image.incomplete.nosrc.html]
- type: testharness
- [Canvas test: 2d.pattern.image.incomplete.nosrc]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.html.ini b/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.html.ini
deleted file mode 100644
index 7feef17685a..00000000000
--- a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[2d.pattern.image.incomplete.reload.html]
- type: testharness
- [Canvas test: 2d.pattern.image.incomplete.reload]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.html.ini b/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.html.ini
deleted file mode 100644
index 47dadb726d7..00000000000
--- a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[2d.pattern.image.incomplete.removedsrc.html]
- type: testharness
- [Canvas test: 2d.pattern.image.incomplete.removedsrc]
- expected: FAIL
-