mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Make create_pattern() return None for incomplete images
This commit is contained in:
parent
423b86e439
commit
481ef46167
10 changed files with 12 additions and 35 deletions
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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)]
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[2d.pattern.image.incomplete.emptysrc.html]
|
||||
type: testharness
|
||||
[Canvas test: 2d.pattern.image.incomplete.emptysrc]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[2d.pattern.image.incomplete.immediate.html]
|
||||
type: testharness
|
||||
[Canvas test: 2d.pattern.image.incomplete.immediate]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[2d.pattern.image.incomplete.nosrc.html]
|
||||
type: testharness
|
||||
[Canvas test: 2d.pattern.image.incomplete.nosrc]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[2d.pattern.image.incomplete.reload.html]
|
||||
type: testharness
|
||||
[Canvas test: 2d.pattern.image.incomplete.reload]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[2d.pattern.image.incomplete.removedsrc.html]
|
||||
type: testharness
|
||||
[Canvas test: 2d.pattern.image.incomplete.removedsrc]
|
||||
expected: FAIL
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue