| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <body> |
| <script> |
| canvas = document.createElement('canvas'); |
| canvas.width = 100; |
| canvas.height = 100; |
| ctx = canvas.getContext('2d'); |
| |
| function attachCanvasToDocument() { |
| document.body.appendChild(canvas); |
| return document.body.parentNode != null; |
| } |
| |
| function tryLinearGradientColor(color) { |
| var gradient = ctx.createLinearGradient(0, 0, 100, 100); |
| gradient.addColorStop(0, color); |
| gradient.addColorStop(1, color); |
| ctx.fillStyle = gradient; |
| ctx.fillRect(0, 0, 100, 100); |
| var data = ctx.getImageData(0, 0, 1, 1).data; |
| return '' + data[0] + ',' + data[1] + ',' + data[2] + ',' + data[3]; |
| } |
| |
| function tryRadialGradientColor(color) { |
| var gradient = ctx.createRadialGradient(0, 0, 100, 100, 100, 100); |
| gradient.addColorStop(0, color); |
| gradient.addColorStop(1, color); |
| ctx.fillStyle = gradient; |
| ctx.fillRect(0, 0, 100, 100); |
| var data = ctx.getImageData(0, 0, 1, 1).data; |
| return '' + data[0] + ',' + data[1] + ',' + data[2] + ',' + data[3]; |
| } |
| |
| test(function(t) { |
| // First we test with the canvas out-of-document, 'currentColor' should mean transparent black |
| ctx.shadowColor = '#f00'; |
| assert_equals(ctx.shadowColor, '#ff0000'); |
| ctx.shadowColor = 'currentColor'; |
| assert_equals(ctx.shadowColor, '#000000'); |
| ctx.fillStyle = '#f00'; |
| assert_equals(ctx.fillStyle, '#ff0000'); |
| ctx.fillStyle = 'currentColor'; |
| assert_equals(ctx.fillStyle, '#000000'); |
| ctx.strokeStyle = '#f00'; |
| assert_equals(ctx.strokeStyle, '#ff0000'); |
| ctx.strokeStyle = 'currentColor'; |
| assert_equals(ctx.strokeStyle, '#000000'); |
| assert_equals(tryLinearGradientColor('#f00'), '255,0,0,255'); |
| assert_equals(tryLinearGradientColor('currentColor'), '0,0,0,255'); |
| assert_equals(tryRadialGradientColor('#f00'), '255,0,0,255'); |
| assert_equals(tryRadialGradientColor('currentColor'), '0,0,0,255'); |
| |
| // Attach to the document and set the canvas's color to #123456 |
| assert_equals(attachCanvasToDocument(), true); |
| canvas.style.color = '#123456'; |
| assert_equals(canvas.style.color, 'rgb(18, 52, 86)'); |
| |
| // 'currentColor' should now mean #123456 |
| ctx.shadowColor = '#f00'; |
| assert_equals(ctx.shadowColor, '#ff0000'); |
| ctx.shadowColor = 'currentColor'; |
| assert_equals(ctx.shadowColor, '#123456'); |
| ctx.fillStyle = '#f00'; |
| assert_equals(ctx.fillStyle, '#ff0000'); |
| ctx.fillStyle = 'currentColor'; |
| assert_equals(ctx.fillStyle, '#123456'); |
| ctx.strokeStyle = '#f00'; |
| assert_equals(ctx.strokeStyle, '#ff0000'); |
| ctx.strokeStyle = 'currentColor'; |
| assert_equals(ctx.strokeStyle, '#123456'); |
| assert_equals(tryLinearGradientColor('#f00'), '255,0,0,255'); |
| assert_equals(tryLinearGradientColor('currentColor'), '0,0,0,255'); |
| assert_equals(tryRadialGradientColor('#f00'), '255,0,0,255'); |
| assert_equals(tryRadialGradientColor('currentColor'), '0,0,0,255'); |
| |
| // Last but not least, verify that we're case insensitive |
| ctx.shadowColor = '#f00'; |
| assert_equals(ctx.shadowColor, '#ff0000'); |
| ctx.shadowColor = 'CURRENTCOLOR'; |
| assert_equals(ctx.shadowColor, '#123456'); |
| }, "Test that CanvasRenderingContext2D supports the 'currentColor' value."); |
| </script> |
| </body> |