Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix WPT test failures induced by switching 2D canvas rendering backend to Raqote #25331

Open
pylbrecht opened this issue Dec 18, 2019 · 21 comments
Open
Assignees

Comments

@pylbrecht
Copy link
Contributor

@pylbrecht pylbrecht commented Dec 18, 2019

#24470 left over some failing tests, which need to be addressed.

Relevant tests: tests/wpt/web-platform-tests/2dcontext/

@pylbrecht
Copy link
Contributor Author

@pylbrecht pylbrecht commented Dec 18, 2019

Tests using stroke() may require a fix on raqote's side. (#24470 (comment), #24470 (comment))

@pylbrecht
Copy link
Contributor Author

@pylbrecht pylbrecht commented Jan 2, 2020

Just a quick update to show that I'm alive: I've been on vacation for the past week and will continue working on this by Monday. My fiancee is going on vacation for two weeks then, so I got some extra time on my hands!

@pylbrecht
Copy link
Contributor Author

@pylbrecht pylbrecht commented Jan 6, 2020

@jrmuizel, any news on the stroke() issue?

@jrmuizel
Copy link

@jrmuizel jrmuizel commented Jan 6, 2020

@pylbrecht nope, I haven't had a chance to complete my research on the issue. The problem is tracked upstream here: jrmuizel/raqote#96

bors-servo added a commit that referenced this issue Jan 6, 2020
Fix canvas arc path WPT test failures

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331 (GitHub issue number if applicable)

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jan 6, 2020
Ensure subpath for control point of CanvasRenderingContext2D.quadraticCurveTo()

<!-- Please describe your changes on the following line: -->
These changes are based on #25444.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jan 7, 2020
Fix canvas arc path WPT test failures

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331 (GitHub issue number if applicable)

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jan 7, 2020
Fix canvas arc path WPT test failures

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331 (GitHub issue number if applicable)

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jan 8, 2020
Fix canvas arc path WPT test failures

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331 (GitHub issue number if applicable)

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jan 8, 2020
Ensure subpath for control point of CanvasRenderingContext2D.quadraticCurveTo()

<!-- Please describe your changes on the following line: -->
These changes are based on #25444.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
@pylbrecht
Copy link
Contributor Author

@pylbrecht pylbrecht commented Jan 12, 2020

Unfortunately university deadlines combined with frustrating hours in the lab ate up all the extra time I planned on using for contributing this week. I hope the debugging gods show mercy tomorrow, so I can fix some wpt tests next week.

@pylbrecht
Copy link
Contributor Author

@pylbrecht pylbrecht commented Jan 13, 2020

While inspecting https://dxr.mozilla.org/servo/source/tests/wpt/web-platform-tests/2dcontext/path-objects/2d.path.rect.end.1.html, I came across something, I don't quite understand.
@jrmuizel, can you shed some light on why the image created with raqote looks like this?

expected: https://codepen.io/pylbrecht/pen/RwNJyWE

actual:
example

let mut dt = DrawTarget::new(300, 300);
let mut pb = PathBuilder::new();
pb.rect(0., 0., 100., 50.);
dt.fill(
    &pb.finish(),
    &Source::Solid(SolidSource::from_unpremultiplied_argb(255, 255, 0, 0)),
    &DrawOptions::new(),
    );
                                                                            
let mut pb = PathBuilder::new();
pb.rect(200., 100., 400., 1000.);
pb.line_to(-2000., -1000.);
dt.stroke(
    &pb.finish(),
    &Source::Solid(SolidSource::from_unpremultiplied_argb(255, 0, 255, 0)),
    &StrokeStyle {
        width: 100.,
        cap: LineCap::Butt,
        join: LineJoin::Miter,
        miter_limit: 10.,
        dash_array: Vec::new(),
        dash_offset: 0.,
    },
    &DrawOptions::new(),
    );
                                                                            
dt.write_png("example.png");

// edit:
Moving to the rectangle's starting point after drawing it seems to lead in the right direction, but it's still not quite there:
example

let mut dt = DrawTarget::new(300, 300);
let mut pb = PathBuilder::new();
pb.rect(0., 0., 100., 50.);
dt.fill(
    &pb.finish(),
    &Source::Solid(SolidSource::from_unpremultiplied_argb(255, 255, 0, 0)),
    &DrawOptions::new(),
    );
                                                                            
let mut pb = PathBuilder::new();
pb.rect(200., 100., 400., 1000.);
pb.move_to(200., 100.);
pb.line_to(-2000., -1000.);
dt.stroke(
    &pb.finish(),
    &Source::Solid(SolidSource::from_unpremultiplied_argb(255, 0, 255, 0)),
    &StrokeStyle {
        width: 100.,
        cap: LineCap::Butt,
        join: LineJoin::Miter,
        miter_limit: 10.,
        dash_array: Vec::new(),
        dash_offset: 0.,
    },
    &DrawOptions::new(),
    );
                                                                            
dt.write_png("example.png");
@jrmuizel
Copy link

@jrmuizel jrmuizel commented Jan 13, 2020

This is a bug in raqote. I'm working on a fix.

@jrmuizel
Copy link

@jrmuizel jrmuizel commented Jan 14, 2020

Fixed in jrmuizel/raqote@0cad3c3

bors-servo added a commit that referenced this issue Jan 14, 2020
Fix canvas wpt test "path-objects/2d.path.end.1.html"

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [ ] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jan 15, 2020
Fix canvas wpt test "path-objects/2d.path.end.1.html"

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jan 16, 2020
Fix canvas wpt test "path-objects/2d.path.end.1.html"

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jan 16, 2020
Fix canvas wpt test "path-objects/2d.path.end.1.html"

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jan 16, 2020
Fix canvas wpt test "path-objects/2d.path.end.1.html"

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jan 16, 2020
Fix canvas wpt test ensuring there's a subpath when drawing bezier curves

<!-- Please describe your changes on the following line: -->
These changes will ensure there's a subpath when drawing bezier curves.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jan 17, 2020
Fix canvas wpt test ensuring there's a subpath when drawing bezier curves

<!-- Please describe your changes on the following line: -->
These changes will ensure there's a subpath when drawing bezier curves.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jan 17, 2020
Fix canvas wpt test ensuring there's a subpath when drawing bezier curves

<!-- Please describe your changes on the following line: -->
These changes will ensure there's a subpath when drawing bezier curves.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jan 19, 2020
Fix canvas wpt test `path-objects/2d.path.rect.zero.4.html`

<!-- Please describe your changes on the following line: -->
After connecting the lines of a rectangle, a new subpath has to be created containing the rectangle's origin as the only point in the subpath.
(see step 4 of https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-rect)

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
@pylbrecht
Copy link
Contributor Author

@pylbrecht pylbrecht commented Mar 5, 2020

I'm currently investigating 2dcontext/pixel-manipulation/2d.imageData.create2.nonfinite.html.ini and somehow the expected TypeError is not thrown.
Through inspecting the CreateImageData() call I found that a JS Infinity is converted into a Rust 0.
The spec says that an IndexSizeError should be thrown if sh == 0 || sw == 0.
Since Infinity is converted to 0, there is no way differentiating these two cases (TypeError vs. IndexSizeError).

I have a little hunch that the expected TypeError should be thrown while converting the JS value to a Rust value.

I tried to figure out where the conversion is performed, but I couldn't point my finger on the exact place in the code. I wasn't even sure if the area I was looking around in was the right one. I read the script::dom::bindings docs and also found script::dom::bindings::conversions, but I felt a little overwhelmed looking at the code with some of it being auto-generated.

@jdm, I need a little guidance on this one. Can you help me out?

@jdm
Copy link
Member

@jdm jdm commented Mar 5, 2020

Yep! Since the arguments are long values, the spec for conversion comes from webidl. The conversion from JS values to the Rust arguments starts in the generated code in unsafe extern fn createImageData(cx: SafeJSContext, _obj: HandleObject, this: *const CanvasRenderingContext2D, args: *const JSJitMethodCallArgs) -> bool { in CanvasRenderingContext2DBindings.rs, which invokes FromJSValConvertible::from_jsval with a i32 output value. That comes from this code, which invokes this code, and this code is where we start to actually make decisions about values. I suspect we end up invoking https://github.com/servo/mozjs/blob/b2f83932fe9d361face14efd03f2465b9262e687/mozjs/js/src/jsnum.cpp#L1812-L1825.

Overall, I have a suspicion that we're not actually implementing https://heycam.github.io/webidl/#abstract-opdef-converttoint anywhere.

@jdm
Copy link
Member

@jdm jdm commented Mar 5, 2020

Then again, at first glance it's not entirely clear to me why this test expects a TypeError, since https://html.spec.whatwg.org/multipage/canvas.html#canvasimagedata doesn't use [EnforceRange]. Yet https://wpt.fyi/results/2dcontext/pixel-manipulation/2d.imageData.create2.nonfinite.html?label=master&label=experimental&aligned&q=create2.nonfinite shows that all other browsers pass this.

@jdm
Copy link
Member

@jdm jdm commented Mar 5, 2020

@jdm
Copy link
Member

@jdm jdm commented Mar 5, 2020

Huh - Firefox's WebIDL doesn't match the specification, which explains the difference: https://searchfox.org/mozilla-central/rev/c79c0d65a183d9d38676855f455a5c6a7f7dadd3/dom/webidl/CanvasRenderingContext2D.webidl#266-268

@jdm
Copy link
Member

@jdm jdm commented Mar 5, 2020

And that change was made in 2017: whatwg/html#2452 :(

@jdm
Copy link
Member

@jdm jdm commented Mar 5, 2020

I filed whatwg/html#5336 about changing the spec.

@pylbrecht
Copy link
Contributor Author

@pylbrecht pylbrecht commented Mar 5, 2020

On @jdm's advice I will stall working on any test cases related to this until whatwg/html#5336 is resolved.

@pylbrecht
Copy link
Contributor Author

@pylbrecht pylbrecht commented Mar 6, 2020

2dcontext/fill-and-stroke-styles/2d.pattern.image.nosrc.html fails on this assertion:

var img = document.createElementNS("http://www.w3.org/2000/svg", "image");
_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");

with the output of:

  ▶ Unexpected subtest result in /2dcontext/fill-and-stroke-styles/2d.pattern.image.nosrc.html:
  │ FAIL [expected PASS] Canvas test: 2d.pattern.image.nosrc
  │   → argument could not be converted to any of: HTMLImageElement, HTMLCanvasElement, OffscreenCanvas, CSSStyleValue
  │
  │ @http://web-platform.test:8000/2dcontext/fill-and-stroke-styles/2d.pattern.image.nosrc.html:25:17
  │ Test.prototype.step@http://web-platform.test:8000/resources/testharness.js:1926:25
  │ _addTest/</<@http://web-platform.test:8000/2dcontext/resources/canvas-tests.js:66:15
  │ Test.prototype.step@http://web-platform.test:8000/resources/testharness.js:1926:25
  └ _addTest/<@http://web-platform.test:8000/2dcontext/resources/canvas-tests.js:63:11

The auto-generated code UnionTypes.rs shows that SVGImageElement is not considered for the conversion:

#[derive(JSTraceable)]
pub enum HTMLOrSVGImageElementOrHTMLCanvasElementOrOffscreenCanvasOrCSSStyleValue {
    HTMLImageElement(DomRoot<HTMLImageElement>),
    HTMLCanvasElement(DomRoot<HTMLCanvasElement>),
    OffscreenCanvas(DomRoot<OffscreenCanvas>),
    CSSStyleValue(DomRoot<CSSStyleValue>),
}

...

impl FromJSValConvertible for HTMLOrSVGImageElementOrHTMLCanvasElementOrOffscreenCanvasOrCSSStyleValue {
    type Config = ();
    unsafe fn from_jsval(cx: *mut JSContext,
                         value: HandleValue,
                         _option: ())
                         -> Result<ConversionResult<HTMLOrSVGImageElementOrHTMLCanvasElementOrOffscreenCanvasOrCSSStyleValue>, ()> {
        if value.get().is_object() {
            match HTMLOrSVGImageElementOrHTMLCanvasElementOrOffscreenCanvasOrCSSStyleValue::TryConvertToHTMLImageElement(SafeJSContext::from_ptr(cx), value) {
                Err(_) => return Err(()),
                Ok(Some(value)) => return Ok(ConversionResult::Success(HTMLOrSVGImageElementOrHTMLCanvasElementOrOffscreenCanvasOrCSSStyleValue::HTMLImageElement(value))),
                Ok(None) => (),
            }
            match HTMLOrSVGImageElementOrHTMLCanvasElementOrOffscreenCanvasOrCSSStyleValue::TryConvertToHTMLCanvasElement(SafeJSContext::from_ptr(cx), value) {
                Err(_) => return Err(()),
                Ok(Some(value)) => return Ok(ConversionResult::Success(HTMLOrSVGImageElementOrHTMLCanvasElementOrOffscreenCanvasOrCSSStyleValue::HTMLCanvasElement(value))),
                Ok(None) => (),
            }
            match HTMLOrSVGImageElementOrHTMLCanvasElementOrOffscreenCanvasOrCSSStyleValue::TryConvertToOffscreenCanvas(SafeJSContext::from_ptr(cx), value) {
                Err(_) => return Err(()),
                Ok(Some(value)) => return Ok(ConversionResult::Success(HTMLOrSVGImageElementOrHTMLCanvasElementOrOffscreenCanvasOrCSSStyleValue::OffscreenCanvas(value))),
                Ok(None) => (),
            }
            match HTMLOrSVGImageElementOrHTMLCanvasElementOrOffscreenCanvasOrCSSStyleValue::TryConvertToCSSStyleValue(SafeJSContext::from_ptr(cx), value) {
                Err(_) => return Err(()),
                Ok(Some(value)) => return Ok(ConversionResult::Success(HTMLOrSVGImageElementOrHTMLCanvasElementOrOffscreenCanvasOrCSSStyleValue::CSSStyleValue(value))),
                Ok(None) => (),
            }

        }

        Ok(ConversionResult::Failure("argument could not be converted to any of: HTMLImageElement, HTMLCanvasElement, OffscreenCanvas, CSSStyleValue".into()))
    }
}

Is SVGImageElement implemented at all (haven't found a filed issue either)? I only found SVGGraphicsElement.

// edit:
I see there are two specifications linked for SVGImageElement. Still, what would be the course of action here?

@jdm
Copy link
Member

@jdm jdm commented Mar 6, 2020

There is no SVG implementation in Servo right now. It's not worth investigating any failures that involve SVG elements.

@pylbrecht
Copy link
Contributor Author

@pylbrecht pylbrecht commented Mar 6, 2020

Alright, then they'll go on the exclude list (for now). Thanks!

bors-servo added a commit that referenced this issue Mar 10, 2020
Handle nonexistent images in CanvasRenderingContext2D.createPattern()

<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Mar 10, 2020
Handle nonexistent images in CanvasRenderingContext2D.createPattern()

<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Mar 10, 2020
Handle nonexistent images in CanvasRenderingContext2D.createPattern()

<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Mar 13, 2020
Handle nonexistent images in CanvasRenderingContext2D.createPattern()

<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Mar 13, 2020
Handle nonexistent images in CanvasRenderingContext2D.createPattern()

<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Mar 13, 2020
Handle nonexistent images in CanvasRenderingContext2D.createPattern()

<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Mar 13, 2020
Handle nonexistent images in CanvasRenderingContext2D.createPattern()

<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Mar 13, 2020
Handle nonexistent images in CanvasRenderingContext2D.createPattern()

<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Mar 13, 2020
Handle nonexistent images in CanvasRenderingContext2D.createPattern()

<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
@pylbrecht
Copy link
Contributor Author

@pylbrecht pylbrecht commented Mar 23, 2020

Here's a list with tests, which are ignored for now due to various reasons. I will update the list on the go.

Not implemented yet:

CanvasRenderingContext2D.drawFocusIfNeeded()

SVG image handling

Depends on jrmuizel/raqote#96

Depends on jrmuizel/raqote#118 (fixed)

Unknown

Depends on raqote implementing shadows (jrmuizel/raqote#83)

Miscellaneous

bors-servo added a commit that referenced this issue May 11, 2020
Fix radial gradients for html canvas element

<!-- Please describe your changes on the following line: -->
The latest version of raqote provides a fix for properly handling boundary conditions for TwoCircleRadialGradients.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue May 11, 2020
Fix radial gradients for html canvas element

<!-- Please describe your changes on the following line: -->
The latest version of raqote provides a fix for properly handling boundary conditions for TwoCircleRadialGradients.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue May 12, 2020
Fix radial gradients for html canvas element

<!-- Please describe your changes on the following line: -->
The latest version of raqote provides a fix for properly handling boundary conditions for TwoCircleRadialGradients.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue May 12, 2020
Fix radial gradients for html canvas element

<!-- Please describe your changes on the following line: -->
The latest version of raqote provides a fix for properly handling boundary conditions for TwoCircleRadialGradients.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #25331

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
3 participants
You can’t perform that action at this time.