diff options
Diffstat (limited to 'testing/web-platform/tests/html/canvas/element/manual/the-canvas-state')
4 files changed, 116 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/canvas/element/manual/the-canvas-state/2d.state.saverestore.imageSmoothingEnabled.html b/testing/web-platform/tests/html/canvas/element/manual/the-canvas-state/2d.state.saverestore.imageSmoothingEnabled.html new file mode 100644 index 0000000000..e99be83d5f --- /dev/null +++ b/testing/web-platform/tests/html/canvas/element/manual/the-canvas-state/2d.state.saverestore.imageSmoothingEnabled.html @@ -0,0 +1,47 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CanvasRenderingContext2D imageSmoothingEnabled save/restore test</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<link rel="help" href="https://html.spec.whatwg.org/multipage/scripting.html#image-smoothing"> +<script> +function createTestImage() { + var image = document.createElement('canvas'); + var imgctx = image.getContext('2d'); + imgctx.fillStyle = "#F00"; + imgctx.fillRect(0, 0, 2, 2); + imgctx.fillStyle = "#0F0"; + imgctx.fillRect(0, 0, 1, 1); + return image; +} + +test(function() { + var ctx = document.createElement('canvas').getContext('2d'); + ctx.save(); + ctx.imageSmoothingEnabled = false; + ctx.restore(); + assert_equals(ctx.imageSmoothingEnabled, true); +}, "Test that restore() undoes any modifications to imageSmoothingEnabled."); + +test(function() { + var ctx = document.createElement('canvas').getContext('2d'); + ctx.imageSmoothingEnabled = false; + var old = ctx.imageSmoothingEnabled; + ctx.save(); + assert_equals(ctx.imageSmoothingEnabled, old); + ctx.restore(); +}, "Test that save() doesn't modify the values of imageSmoothingEnabled."); + +test(function() { + var ctx = document.createElement('canvas').getContext('2d'); + ctx.imageSmoothingEnabled = false; + ctx.save(); + ctx.imageSmoothingEnabled = true; + ctx.restore(); + var image = createTestImage(); + ctx.scale(10, 10); + ctx.drawImage(image, 0, 0); + var pixels = ctx.getImageData(0, 0, 1, 1).data; + assert_array_equals(pixels, [0, 255, 0, 255]); +}, "Test that restoring actually changes smoothing and not just the attribute value."); +</script> diff --git a/testing/web-platform/tests/html/canvas/element/manual/the-canvas-state/2d.zero.size.canvas.html b/testing/web-platform/tests/html/canvas/element/manual/the-canvas-state/2d.zero.size.canvas.html new file mode 100644 index 0000000000..273e5c7484 --- /dev/null +++ b/testing/web-platform/tests/html/canvas/element/manual/the-canvas-state/2d.zero.size.canvas.html @@ -0,0 +1,16 @@ +<html> +<head> +</head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<canvas id="canvas" width="0" height="0"></canvas> +<body> +<script> +test(function() { + var context = document.getElementById("canvas").getContext("2d"); + context.fillStyle = "green"; +}, 'This test ensures that accessing the context of a zero sized canvas does not crash.'); +</script> +</body> +</html> + diff --git a/testing/web-platform/tests/html/canvas/element/manual/the-canvas-state/canvas_state_restore_001-ref.htm b/testing/web-platform/tests/html/canvas/element/manual/the-canvas-state/canvas_state_restore_001-ref.htm new file mode 100644 index 0000000000..aee610d2ec --- /dev/null +++ b/testing/web-platform/tests/html/canvas/element/manual/the-canvas-state/canvas_state_restore_001-ref.htm @@ -0,0 +1,11 @@ +<!doctype HTML> +<html> + <head> + <title>HTML5 Canvas Test: restore() pops top entry in drawing state stack</title> + <link rel="author" title="Microsoft" href="http://www.microsoft.com" /> + </head> + <body> + <p>Description: restore() pops the top entry in the drawing state stack.</p> + <div><img src='/images/threecolors.png' alt='3 colors'></div> + </body> +</html> diff --git a/testing/web-platform/tests/html/canvas/element/manual/the-canvas-state/canvas_state_restore_001.htm b/testing/web-platform/tests/html/canvas/element/manual/the-canvas-state/canvas_state_restore_001.htm new file mode 100644 index 0000000000..6d5a3cb20f --- /dev/null +++ b/testing/web-platform/tests/html/canvas/element/manual/the-canvas-state/canvas_state_restore_001.htm @@ -0,0 +1,42 @@ +<!doctype HTML> +<html> + <head> + <title>HTML5 Canvas Test: restore() pops top entry in drawing state stack</title> + <link rel="match" href="canvas_state_restore_001-ref.htm"> + <link rel="author" title="Microsoft" href="http://www.microsoft.com" /> + <link rel="help" href="http://www.w3.org/TR/2dcontext/#the-canvas-state" /> + <meta name="assert" content="restore() pops the top entry in the drawing state stack." /> + <script type="text/javascript"> + function runTest() + { + var canvas = document.getElementById("canvas1"); + var ctx = canvas.getContext("2d"); + ctx.fillStyle = "rgba(255, 0, 0, 1.0)"; + ctx.fillRect(0, 0, 99, 50); + + // Save colors to the stack as separate drawing states. + ctx.fillStyle = "rgba(255, 255, 0, 1.0)"; + ctx.save(); + ctx.fillStyle = "rgba(0, 0, 255, 1.0)"; + ctx.save(); + ctx.fillStyle = "rgba(0, 255, 0, 1.0)"; + ctx.save(); + + // Modify the current fillStyle. + ctx.fillStyle = "rgba(255, 0, 0, 1.0)"; + + // Restore the drawing states previously saved and draw with them. + ctx.restore(); + ctx.fillRect(66, 0, 33, 50); + ctx.restore(); + ctx.fillRect(33, 0, 33, 50); + ctx.restore(); + ctx.fillRect(0, 0, 33, 50); + } + </script> + </head> + <body onload="runTest()"> + <p>Description: restore() pops the top entry in the drawing state stack.</p> + <canvas id="canvas1" width="300" height="150">Browser does not support HTML5 Canvas.</canvas> + </body> +</html> |