| <!DOCTYPE html> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <title>Tests that the OffscreenCanvas can handle invalid arguments</title> |
| <script> |
| test(function() { |
| // Since blink uses signed int internally, this case tests how the constructor |
| // responds to the arguments that are larger than INT_MAX which would cause |
| // overflow. The current implementation is expected to clamp. |
| var setWidth = Math.pow(2, 31); |
| var setHeight = Math.pow(2, 31); |
| var obj = {Name: "John Doe", Age: 30}; |
| |
| var canvas1 = new OffscreenCanvas(setWidth, setHeight); |
| assert_equals(canvas1.width, setWidth-1); |
| assert_equals(canvas1.height, setHeight-1); |
| canvas1.width = null; |
| canvas1.height = null; |
| assert_equals(canvas1.width, 0); |
| assert_equals(canvas1.height, 0); |
| |
| assert_throws_js(TypeError, function() { new OffscreenCanvas(-1, -1); }); |
| |
| var canvas2 = new OffscreenCanvas(null, null); |
| assert_equals(canvas2.width, 0); |
| assert_equals(canvas2.height, 0); |
| canvas2.width = setWidth; |
| canvas2.height = setHeight; |
| |
| assert_equals(canvas2.width, setWidth-1); |
| assert_equals(canvas2.height, setHeight-1); |
| |
| assert_throws_js(TypeError, function() { canvas2.width = -1; }); |
| assert_throws_js(TypeError, function() { canvas2.height = -1; }); |
| assert_throws_js(TypeError, function() { canvas2.width = obj; }); |
| assert_throws_js(TypeError, function() { canvas2.height = obj; }); |
| assert_throws_js(TypeError, function() { new OffscreenCanvas(obj, obj); }); |
| }); |
| </script> |