fune/testing/web-platform/tests/css/css-paint-api/roundrect.https.html
Aaron Krajeski ca9f7cb4e6 Bug 1740295 [wpt PR 31560] - GetTopExecutionContext method for Canvas rendering contexts, a=testonly
Automatic update from web-platform-tests
GetTopExecutionContext method for Canvas rendering contexts

BaseRenderingContext2D and CanvasPath access UMA, UseCounters and
RuntimeFlags through
GetCanvasRenderingContextHost()->GetTopExecutionContext(). This doesn't
work and has never worked for PaintRenderingContexts as there is no
class that works as a "host" for these contexts.

This CL adds a GetTopExecutionContext() function to all canvas rendering
2d contexts that returns a pointer to the execution context directly.
For canvas elements and offscreen canvases, this works exactly as before
(i.e. host->execution_context). For paint rendering contexts a pointer
to the PaintWorkletGlobalScope is passed in on creation.

Before this change some new Canvas2D API features would cause crashes
in paint worklets.

Change-Id: Icb6529c285d1aff2c001291a4387c613fb24fba7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3260452
Reviewed-by: Robert Flack <flackr@chromium.org>
Reviewed-by: Fernando Serboncini <fserb@chromium.org>
Commit-Queue: Aaron Krajeski <aaronhk@chromium.org>
Cr-Commit-Position: refs/heads/main@{#940114}

--

wpt-commits: 755553ec4f8eb116eea31556a6cfc83b18bcde1d
wpt-pr: 31560
2021-11-15 12:00:46 +00:00

31 lines
767 B
HTML

<!DOCTYPE html>
<html class="reftest-wait">
<link rel="help" href="https://drafts.css-houdini.org/css-paint-api/">
<link rel="match" href="roundrect-ref.html">
<style>
#output {
width: 300px;
height: 400px;
background-image: paint(paths);
}
</style>
<script src="/common/reftest-wait.js"></script>
<script src="/common/worklet-reftest.js"></script>
<body>
<div id="output"></div>
<script id="code" type="text/worklet">
registerPaint('paths', class {
paint(ctx, geom) {
ctx.beginPath();
ctx.roundRect(10, 10, 100, 100, [20]);
ctx.fill();
}
});
</script>
<script>
importWorkletAndTerminateTestAfterAsyncPaint(CSS.paintWorklet, document.getElementById('code').textContent);
</script>
</body>
</html>