| <!DOCTYPE html> | |
| <html class="reftest-wait"> | |
| <link rel="match" href="parse-input-arguments-018-ref.html"> | |
| <style> | |
| .container { | |
| width: 100px; | |
| height: 100px; | |
| } | |
| #canvas-geometry { | |
| border:1px solid black; | |
| background-image: paint(geometry); | |
| } | |
| </style> | |
| <script src="/common/reftest-wait.js"></script> | |
| <script src="/common/css-paint-tests.js"></script> | |
| <body> | |
| <p>The test result should show only one black rect border. It should not paint | |
| any content in the rect because registerPaint will be called twice and the | |
| inputArguments will return two different strings, that will throw an exception | |
| and paint won't be executed.</p> | |
| <div id="canvas-geometry" class="container"></div> | |
| <script id="code" type="text/worklet"> | |
| function generateRandString(length) { | |
| var text = ""; | |
| var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; | |
| for (var i = 0; i < length; i++) | |
| text += possible.charAt(Math.floor(Math.random() * possible.length)); | |
| return text; | |
| } | |
| try { | |
| registerPaint('geometry', class { | |
| static get inputArguments() { | |
| // This test is testing the case where an exception should be thrown | |
| // when two paint definitions with different properties are registered | |
| // to the same paint worklet. In order to do that, we randomly generate | |
| // the input properties here. We make the string length 100 to make sure | |
| // that it is veryyyyyyyyyyyy unlikely that two strings will be the same | |
| // when running this test. | |
| var current_str = generateRandString(100); | |
| return [current_str]; | |
| } | |
| paint(ctx, geom) { | |
| ctx.strokeStyle = 'red'; | |
| ctx.lineWidth = 4; | |
| ctx.strokeRect(0, 0, geom.width, geom.height); | |
| } | |
| }); | |
| } catch(ex) { | |
| } | |
| </script> | |
| <script> | |
| importPaintWorkletAndTerminateTestAfterAsyncPaint(document.getElementById('code').textContent); | |
| </script> | |
| </body> | |
| </html> |