Bug 93344
| Summary: | CanvasRenderingContext2D::createPattern() should return null, if non-decodable image argument | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Jussi Kukkonen (jku) <jussi.kukkonen> |
| Component: | Canvas | Assignee: | Nobody <webkit-unassigned> |
| Status: | RESOLVED CONFIGURATION CHANGED | ||
| Severity: | Normal | CC: | bfulgham |
| Priority: | P2 | ||
| Version: | 528+ (Nightly build) | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| See Also: | https://bugs.webkit.org/show_bug.cgi?id=250662 | ||
Jussi Kukkonen (jku)
Spec says: "If the image argument is an HTMLImageElement object that is not fully decodable ... then the implementation must return null." This does not currently happen so these tests fail:
canvas/philip/tests/2d.pattern.image.broken.html = TEXT
canvas/philip/tests/2d.pattern.image.incomplete.empty.html = TEXT
canvas/philip/tests/2d.pattern.image.incomplete.omitted.html = TEXT
HTMLImageElement does not seem to have "decodability" as a property and things are slightly complicated by the img.complete property being slightly illogical for this: currently images with empty, missing or non-existing source are "complete" (and IIRC this is according to current spec). So possibly these cases would have to be tested in CanvasRenderingContext2D. I'll take a closer look, advice is welcome also.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Jussi Kukkonen (jku)
to improve searchability: above comment relates to CanvasRenderingContext2D::createPattern()
Jussi Kukkonen (jku)
After some testing:
2d.pattern.image.incomplete.omitted:
works after checking image->src().isValid()) before creating pattern
2d.pattern.image.broken:
needs knowledge of whether image really is decodable
2d.pattern.image.incomplete.empty:
the image url used in createPattern() ends up as the _page_ url because HTMLIMageElement does document().completeURL(). This would still work with knowledge of whether image really is decodable
Brent Fulgham
It looks like this was done as part of Bug 180718.