script: Let canvas serialization to image fail gracefully#37184
Merged
mrobinson merged 1 commit intoservo:mainfrom May 29, 2025
Merged
script: Let canvas serialization to image fail gracefully#37184mrobinson merged 1 commit intoservo:mainfrom
mrobinson merged 1 commit intoservo:mainfrom
Conversation
c7154d4 to
58cf19b
Compare
sagudev
approved these changes
May 29, 2025
Comment on lines
+12
to
+16
| <!-- This is not a standard WPT tests, because canvas size limits are specific | ||
| to browsers. For us, failure to serialize depends on both canvas size limits | ||
| and also whether or not the image library we use (image-rs) produces an error | ||
| when we attempt serialization. --> | ||
| <canvas id="canvas" width="2000000"></canvas> |
Member
There was a problem hiding this comment.
Is setting big enough width&height not enough to make this work in all browsers? Or do some browser simply error differently/before that?
For canvas size limit there is: https://jhildenbiddle.github.io/canvas-size/#/?id=test-results
Member
Author
There was a problem hiding this comment.
Is setting big enough width&height not enough to make this work in all browsers? Or do some browser simply error differently/before that?
Since it isn't specified, I felt a bit weird about adding it to the WPT. Just to be conservative, I instead made it a Servo-specific test.
Instead of panicking when serialization of canvas to image data (whether through `toBlob()` or via `toDataURL()`), properly handle failed serialization. This is an implementation of the appropriate error handling from the specification text. Signed-off-by: Martin Robinson <[email protected]>
58cf19b to
ecb46d8
Compare
vlindhol
added a commit
to vlindhol/servo
that referenced
this pull request
Jun 1, 2025
* main: (510 commits) DevTools: Fix empty `debugger > source` panel (servo#37197) dom: implement signal abort on controller and signal (servo#37192) build(deps): bump parking_lot from 0.12.3 to 0.12.4 (servo#37199) layout: Split overflow calculation after fragment tree construction (servo#37203) build(deps): bump parking_lot_core from 0.9.10 to 0.9.11 (servo#37202) build(deps): bump lock_api from 0.4.12 to 0.4.13 (servo#37201) build(deps): bump cc from 1.2.24 to 1.2.25 (servo#37198) Constellation can now optionally report memory usage when the page is loaded. (servo#37151) Implement Input `type=text` UA Shadow DOM (servo#37065) constellation: Wait for canvas thread to shut down before shutting down system font service (servo#37182) Add slot default display style test (servo#37189) Send synthetic keydown/keyup at ime_insert_text (servo#37175) script: Let canvas serialization to image fail gracefully (servo#37184) Implement basics of link preloading (servo#37036) compositor: Add an initial RefreshDriver (servo#37169) pixels: Add limitation to max image total bytes length (servo#37172) Chore: Remove unused variable in `transition-zero-duration-with-delay.html` (servo#37179) build(deps): bump ohos-ime from 0.2.0 to 0.3.0 (servo#37180) Add a user agent style for the `<slot>` element (servo#37174) build(deps): bump hitrace from 0.1.4 to 0.1.5 (servo#37170) ...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Instead of panicking when serialization of canvas to image data (whether
through
toBlob()or viatoDataURL()), properly handle failedserialization. This is an implementation of the appropriate error
handling from the specification text.
Testing: This change includes a new Serov-specific test, because it is
impossible to know what the canvas size limits are of all browsers.
Fixes: #36840.