tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit aa9a7983ca1b2a3ed6e6b409d7b321ce9121a4f9
parent fb4da3f6d80d2cfb097f8c7e0f87dca6fd6f63e3
Author: Jean-Philippe Gravel <jpgravel@chromium.org>
Date:   Thu,  4 Dec 2025 16:55:53 +0000

Bug 2003466 [wpt PR 56377] - Split 2d.canvas.host.initial.reset.2dstate into atomic tests, a=testonly

Automatic update from web-platform-tests
Split 2d.canvas.host.initial.reset.2dstate into atomic tests

This test was validating a long list of states in the same test body.
It was implemented using a Jinja `for` statement to unroll code. Other
tests are using `variant:` to split variants into different test bodies.
This is usually preferable because it prevents cross talk between tests
and makes error diagnostics easier if one of the test fails.

Change-Id: I1e1d4b3796dfc270f207db6d4afab66ae40ec9b3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7211301
Reviewed-by: Andres Ricardo Perez <andresrperez@chromium.org>
Commit-Queue: Jean-Philippe Gravel <jpgravel@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1553407}

--

wpt-commits: 2c520e9c18dd0111af8f3dee6b2c76eabb29aa32
wpt-pr: 56377

Diffstat:
Mtesting/web-platform/tests/html/canvas/element/canvas-host/2d.canvas.host.initial.reset.2dstate.html | 145++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------
Mtesting/web-platform/tests/html/canvas/offscreen/canvas-host/2d.canvas.host.initial.reset.2dstate.html | 98+++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------
Mtesting/web-platform/tests/html/canvas/offscreen/canvas-host/2d.canvas.host.initial.reset.2dstate.worker.js | 100+++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------
Mtesting/web-platform/tests/html/canvas/tools/yaml/the-canvas-state.yaml | 18+++++++-----------
4 files changed, 269 insertions(+), 92 deletions(-)

diff --git a/testing/web-platform/tests/html/canvas/element/canvas-host/2d.canvas.host.initial.reset.2dstate.html b/testing/web-platform/tests/html/canvas/element/canvas-host/2d.canvas.host.initial.reset.2dstate.html @@ -6,98 +6,189 @@ <script src="/resources/testharnessreport.js"></script> <script src="/html/canvas/resources/canvas-tests.js"></script> <link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css"> -<body class="show_output"> <h1>2d.canvas.host.initial.reset.2dstate</h1> -<p class="desc">Resetting the canvas state resets 2D state variables</p> - -<p class="output">Actual output:</p> -<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas> - -<ul id="d"></ul> <script> -var t = async_test("Resetting the canvas state resets 2D state variables"); -_addTest(function(canvas, ctx) { +test(t => { + const canvas = document.createElement('canvas'); canvas.width = 100; - var default_val; + canvas.height = 50; + const ctx = canvas.getContext('2d'); - default_val = ctx.strokeStyle; + const default_val = ctx.strokeStyle; ctx.strokeStyle = "#ff0000"; canvas.width = 100; _assertSame(ctx.strokeStyle, default_val, "ctx.strokeStyle", "default_val"); +}, "Resetting the canvas state resets strokeStyle"); + +test(t => { + const canvas = document.createElement('canvas'); + canvas.width = 100; + canvas.height = 50; + const ctx = canvas.getContext('2d'); - default_val = ctx.fillStyle; + const default_val = ctx.fillStyle; ctx.fillStyle = "#ff0000"; canvas.width = 100; _assertSame(ctx.fillStyle, default_val, "ctx.fillStyle", "default_val"); +}, "Resetting the canvas state resets fillStyle"); - default_val = ctx.globalAlpha; +test(t => { + const canvas = document.createElement('canvas'); + canvas.width = 100; + canvas.height = 50; + const ctx = canvas.getContext('2d'); + + const default_val = ctx.globalAlpha; ctx.globalAlpha = 0.5; canvas.width = 100; _assertSame(ctx.globalAlpha, default_val, "ctx.globalAlpha", "default_val"); +}, "Resetting the canvas state resets globalAlpha"); + +test(t => { + const canvas = document.createElement('canvas'); + canvas.width = 100; + canvas.height = 50; + const ctx = canvas.getContext('2d'); - default_val = ctx.lineWidth; + const default_val = ctx.lineWidth; ctx.lineWidth = 0.5; canvas.width = 100; _assertSame(ctx.lineWidth, default_val, "ctx.lineWidth", "default_val"); +}, "Resetting the canvas state resets lineWidth"); - default_val = ctx.lineCap; +test(t => { + const canvas = document.createElement('canvas'); + canvas.width = 100; + canvas.height = 50; + const ctx = canvas.getContext('2d'); + + const default_val = ctx.lineCap; ctx.lineCap = "round"; canvas.width = 100; _assertSame(ctx.lineCap, default_val, "ctx.lineCap", "default_val"); +}, "Resetting the canvas state resets lineCap"); + +test(t => { + const canvas = document.createElement('canvas'); + canvas.width = 100; + canvas.height = 50; + const ctx = canvas.getContext('2d'); - default_val = ctx.lineJoin; + const default_val = ctx.lineJoin; ctx.lineJoin = "round"; canvas.width = 100; _assertSame(ctx.lineJoin, default_val, "ctx.lineJoin", "default_val"); +}, "Resetting the canvas state resets lineJoin"); - default_val = ctx.miterLimit; +test(t => { + const canvas = document.createElement('canvas'); + canvas.width = 100; + canvas.height = 50; + const ctx = canvas.getContext('2d'); + + const default_val = ctx.miterLimit; ctx.miterLimit = 0.5; canvas.width = 100; _assertSame(ctx.miterLimit, default_val, "ctx.miterLimit", "default_val"); +}, "Resetting the canvas state resets miterLimit"); + +test(t => { + const canvas = document.createElement('canvas'); + canvas.width = 100; + canvas.height = 50; + const ctx = canvas.getContext('2d'); - default_val = ctx.shadowOffsetX; + const default_val = ctx.shadowOffsetX; ctx.shadowOffsetX = 5; canvas.width = 100; _assertSame(ctx.shadowOffsetX, default_val, "ctx.shadowOffsetX", "default_val"); +}, "Resetting the canvas state resets shadowOffsetX"); - default_val = ctx.shadowOffsetY; +test(t => { + const canvas = document.createElement('canvas'); + canvas.width = 100; + canvas.height = 50; + const ctx = canvas.getContext('2d'); + + const default_val = ctx.shadowOffsetY; ctx.shadowOffsetY = 5; canvas.width = 100; _assertSame(ctx.shadowOffsetY, default_val, "ctx.shadowOffsetY", "default_val"); +}, "Resetting the canvas state resets shadowOffsetY"); + +test(t => { + const canvas = document.createElement('canvas'); + canvas.width = 100; + canvas.height = 50; + const ctx = canvas.getContext('2d'); - default_val = ctx.shadowBlur; + const default_val = ctx.shadowBlur; ctx.shadowBlur = 5; canvas.width = 100; _assertSame(ctx.shadowBlur, default_val, "ctx.shadowBlur", "default_val"); +}, "Resetting the canvas state resets shadowBlur"); - default_val = ctx.shadowColor; +test(t => { + const canvas = document.createElement('canvas'); + canvas.width = 100; + canvas.height = 50; + const ctx = canvas.getContext('2d'); + + const default_val = ctx.shadowColor; ctx.shadowColor = "#ff0000"; canvas.width = 100; _assertSame(ctx.shadowColor, default_val, "ctx.shadowColor", "default_val"); +}, "Resetting the canvas state resets shadowColor"); + +test(t => { + const canvas = document.createElement('canvas'); + canvas.width = 100; + canvas.height = 50; + const ctx = canvas.getContext('2d'); - default_val = ctx.globalCompositeOperation; + const default_val = ctx.globalCompositeOperation; ctx.globalCompositeOperation = "copy"; canvas.width = 100; _assertSame(ctx.globalCompositeOperation, default_val, "ctx.globalCompositeOperation", "default_val"); +}, "Resetting the canvas state resets globalCompositeOperation"); - default_val = ctx.font; +test(t => { + const canvas = document.createElement('canvas'); + canvas.width = 100; + canvas.height = 50; + const ctx = canvas.getContext('2d'); + + const default_val = ctx.font; ctx.font = "25px serif"; canvas.width = 100; _assertSame(ctx.font, default_val, "ctx.font", "default_val"); +}, "Resetting the canvas state resets font"); + +test(t => { + const canvas = document.createElement('canvas'); + canvas.width = 100; + canvas.height = 50; + const ctx = canvas.getContext('2d'); - default_val = ctx.textAlign; + const default_val = ctx.textAlign; ctx.textAlign = "center"; canvas.width = 100; _assertSame(ctx.textAlign, default_val, "ctx.textAlign", "default_val"); +}, "Resetting the canvas state resets textAlign"); - default_val = ctx.textBaseline; +test(t => { + const canvas = document.createElement('canvas'); + canvas.width = 100; + canvas.height = 50; + const ctx = canvas.getContext('2d'); + + const default_val = ctx.textBaseline; ctx.textBaseline = "bottom"; canvas.width = 100; _assertSame(ctx.textBaseline, default_val, "ctx.textBaseline", "default_val"); +}, "Resetting the canvas state resets textBaseline"); -}); </script> - diff --git a/testing/web-platform/tests/html/canvas/offscreen/canvas-host/2d.canvas.host.initial.reset.2dstate.html b/testing/web-platform/tests/html/canvas/offscreen/canvas-host/2d.canvas.host.initial.reset.2dstate.html @@ -7,83 +7,127 @@ <script src="/html/canvas/resources/canvas-tests.js"></script> <h1>2d.canvas.host.initial.reset.2dstate</h1> -<p class="desc">Resetting the canvas state resets 2D state variables</p> - <script> -var t = async_test("Resetting the canvas state resets 2D state variables"); -var t_pass = t.done.bind(t); -var t_fail = t.step_func(function(reason) { - throw reason; -}); -t.step(function() { - - var canvas = new OffscreenCanvas(100, 50); - var ctx = canvas.getContext('2d'); - canvas.width = 100; - var default_val; +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); - default_val = ctx.strokeStyle; + const default_val = ctx.strokeStyle; ctx.strokeStyle = "#ff0000"; canvas.width = 100; _assertSame(ctx.strokeStyle, default_val, "ctx.strokeStyle", "default_val"); +}, "Resetting the canvas state resets strokeStyle"); + +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); - default_val = ctx.fillStyle; + const default_val = ctx.fillStyle; ctx.fillStyle = "#ff0000"; canvas.width = 100; _assertSame(ctx.fillStyle, default_val, "ctx.fillStyle", "default_val"); +}, "Resetting the canvas state resets fillStyle"); - default_val = ctx.globalAlpha; +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); + + const default_val = ctx.globalAlpha; ctx.globalAlpha = 0.5; canvas.width = 100; _assertSame(ctx.globalAlpha, default_val, "ctx.globalAlpha", "default_val"); +}, "Resetting the canvas state resets globalAlpha"); + +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); - default_val = ctx.lineWidth; + const default_val = ctx.lineWidth; ctx.lineWidth = 0.5; canvas.width = 100; _assertSame(ctx.lineWidth, default_val, "ctx.lineWidth", "default_val"); +}, "Resetting the canvas state resets lineWidth"); + +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); - default_val = ctx.lineCap; + const default_val = ctx.lineCap; ctx.lineCap = "round"; canvas.width = 100; _assertSame(ctx.lineCap, default_val, "ctx.lineCap", "default_val"); +}, "Resetting the canvas state resets lineCap"); - default_val = ctx.lineJoin; +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); + + const default_val = ctx.lineJoin; ctx.lineJoin = "round"; canvas.width = 100; _assertSame(ctx.lineJoin, default_val, "ctx.lineJoin", "default_val"); +}, "Resetting the canvas state resets lineJoin"); + +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); - default_val = ctx.miterLimit; + const default_val = ctx.miterLimit; ctx.miterLimit = 0.5; canvas.width = 100; _assertSame(ctx.miterLimit, default_val, "ctx.miterLimit", "default_val"); +}, "Resetting the canvas state resets miterLimit"); - default_val = ctx.shadowOffsetX; +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); + + const default_val = ctx.shadowOffsetX; ctx.shadowOffsetX = 5; canvas.width = 100; _assertSame(ctx.shadowOffsetX, default_val, "ctx.shadowOffsetX", "default_val"); +}, "Resetting the canvas state resets shadowOffsetX"); + +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); - default_val = ctx.shadowOffsetY; + const default_val = ctx.shadowOffsetY; ctx.shadowOffsetY = 5; canvas.width = 100; _assertSame(ctx.shadowOffsetY, default_val, "ctx.shadowOffsetY", "default_val"); +}, "Resetting the canvas state resets shadowOffsetY"); - default_val = ctx.shadowBlur; +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); + + const default_val = ctx.shadowBlur; ctx.shadowBlur = 5; canvas.width = 100; _assertSame(ctx.shadowBlur, default_val, "ctx.shadowBlur", "default_val"); +}, "Resetting the canvas state resets shadowBlur"); + +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); - default_val = ctx.shadowColor; + const default_val = ctx.shadowColor; ctx.shadowColor = "#ff0000"; canvas.width = 100; _assertSame(ctx.shadowColor, default_val, "ctx.shadowColor", "default_val"); +}, "Resetting the canvas state resets shadowColor"); + +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); - default_val = ctx.globalCompositeOperation; + const default_val = ctx.globalCompositeOperation; ctx.globalCompositeOperation = "copy"; canvas.width = 100; _assertSame(ctx.globalCompositeOperation, default_val, "ctx.globalCompositeOperation", "default_val"); - t.done(); +}, "Resetting the canvas state resets globalCompositeOperation"); -}); </script> diff --git a/testing/web-platform/tests/html/canvas/offscreen/canvas-host/2d.canvas.host.initial.reset.2dstate.worker.js b/testing/web-platform/tests/html/canvas/offscreen/canvas-host/2d.canvas.host.initial.reset.2dstate.worker.js @@ -1,83 +1,129 @@ // DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. // OffscreenCanvas test in a worker:2d.canvas.host.initial.reset.2dstate -// Description:Resetting the canvas state resets 2D state variables +// Description: // Note: importScripts("/resources/testharness.js"); importScripts("/html/canvas/resources/canvas-tests.js"); -var t = async_test("Resetting the canvas state resets 2D state variables"); -var t_pass = t.done.bind(t); -var t_fail = t.step_func(function(reason) { - throw reason; -}); -t.step(function() { +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); - var canvas = new OffscreenCanvas(100, 50); - var ctx = canvas.getContext('2d'); - - canvas.width = 100; - var default_val; - - default_val = ctx.strokeStyle; + const default_val = ctx.strokeStyle; ctx.strokeStyle = "#ff0000"; canvas.width = 100; _assertSame(ctx.strokeStyle, default_val, "ctx.strokeStyle", "default_val"); +}, "Resetting the canvas state resets strokeStyle"); + +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); - default_val = ctx.fillStyle; + const default_val = ctx.fillStyle; ctx.fillStyle = "#ff0000"; canvas.width = 100; _assertSame(ctx.fillStyle, default_val, "ctx.fillStyle", "default_val"); +}, "Resetting the canvas state resets fillStyle"); - default_val = ctx.globalAlpha; +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); + + const default_val = ctx.globalAlpha; ctx.globalAlpha = 0.5; canvas.width = 100; _assertSame(ctx.globalAlpha, default_val, "ctx.globalAlpha", "default_val"); +}, "Resetting the canvas state resets globalAlpha"); + +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); - default_val = ctx.lineWidth; + const default_val = ctx.lineWidth; ctx.lineWidth = 0.5; canvas.width = 100; _assertSame(ctx.lineWidth, default_val, "ctx.lineWidth", "default_val"); +}, "Resetting the canvas state resets lineWidth"); - default_val = ctx.lineCap; +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); + + const default_val = ctx.lineCap; ctx.lineCap = "round"; canvas.width = 100; _assertSame(ctx.lineCap, default_val, "ctx.lineCap", "default_val"); +}, "Resetting the canvas state resets lineCap"); + +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); - default_val = ctx.lineJoin; + const default_val = ctx.lineJoin; ctx.lineJoin = "round"; canvas.width = 100; _assertSame(ctx.lineJoin, default_val, "ctx.lineJoin", "default_val"); +}, "Resetting the canvas state resets lineJoin"); - default_val = ctx.miterLimit; +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); + + const default_val = ctx.miterLimit; ctx.miterLimit = 0.5; canvas.width = 100; _assertSame(ctx.miterLimit, default_val, "ctx.miterLimit", "default_val"); +}, "Resetting the canvas state resets miterLimit"); + +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); - default_val = ctx.shadowOffsetX; + const default_val = ctx.shadowOffsetX; ctx.shadowOffsetX = 5; canvas.width = 100; _assertSame(ctx.shadowOffsetX, default_val, "ctx.shadowOffsetX", "default_val"); +}, "Resetting the canvas state resets shadowOffsetX"); - default_val = ctx.shadowOffsetY; +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); + + const default_val = ctx.shadowOffsetY; ctx.shadowOffsetY = 5; canvas.width = 100; _assertSame(ctx.shadowOffsetY, default_val, "ctx.shadowOffsetY", "default_val"); +}, "Resetting the canvas state resets shadowOffsetY"); + +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); - default_val = ctx.shadowBlur; + const default_val = ctx.shadowBlur; ctx.shadowBlur = 5; canvas.width = 100; _assertSame(ctx.shadowBlur, default_val, "ctx.shadowBlur", "default_val"); +}, "Resetting the canvas state resets shadowBlur"); - default_val = ctx.shadowColor; +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); + + const default_val = ctx.shadowColor; ctx.shadowColor = "#ff0000"; canvas.width = 100; _assertSame(ctx.shadowColor, default_val, "ctx.shadowColor", "default_val"); +}, "Resetting the canvas state resets shadowColor"); + +test(t => { + const canvas = new OffscreenCanvas(100, 50); + const ctx = canvas.getContext('2d'); - default_val = ctx.globalCompositeOperation; + const default_val = ctx.globalCompositeOperation; ctx.globalCompositeOperation = "copy"; canvas.width = 100; _assertSame(ctx.globalCompositeOperation, default_val, "ctx.globalCompositeOperation", "default_val"); - t.done(); -}); +}, "Resetting the canvas state resets globalCompositeOperation"); + done(); diff --git a/testing/web-platform/tests/html/canvas/tools/yaml/the-canvas-state.yaml b/testing/web-platform/tests/html/canvas/tools/yaml/the-canvas-state.yaml @@ -166,16 +166,12 @@ value: '"bottom"' - name: 2d.canvas.host.initial.reset.2dstate - desc: Resetting the canvas state resets 2D state variables + desc: Resetting the canvas state resets {{ variant_name }} code: | + const default_val = ctx.{{ variant_name }}; + ctx.{{ variant_name }} = {{ value }}; canvas.width = 100; - var default_val; - {% for state, params in states.items() - if not params['canvas_types'] or canvas_type in params['canvas_types'] %} - - default_val = ctx.{{ state }}; - ctx.{{ state }} = {{ params['value'] }}; - canvas.width = 100; - @assert ctx.{{ state }} === default_val; - {% endfor %} - states: *2d_state_test_cases + @assert ctx.{{ variant_name }} === default_val; + variants_layout: [single_file] + variants: + - *2d_state_test_cases