| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>drawFocusIfNeeded()</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <link rel="author" title="W3C"> |
| <link rel="help" href="http://www.w3.org/TR/2dcontext/#dom-context-2d-drawFocusIfNeeded"> |
| </head> |
| <body> |
| <h1>Description</h1> |
| <p>This test uses drawFocusIfNeeded does nothing if the element is not a descendant but comparing ImageData from before and after.</p> |
| <div> |
| <p>Before:</p> |
| <canvas height=100 width=100 id='original'> |
| <label><a href='http://www.w3.org' id='element'>Focus</a></label> |
| </canvas> |
| <p>After:</p> |
| <canvas height=100 width=100 id=canvas> |
| </canvas> |
| </div> |
| <script> |
| test(function() { |
| var canvas = document.getElementById('canvas'); |
| var context = canvas.getContext('2d'); |
| var element = document.getElementById('element'); |
| element.focus(); |
| context.fillStyle = 'white'; |
| context.fillRect(0, 0, 100, 100); |
| context.beginPath(); |
| context.strokeStyle = 'black'; |
| context.rect(10, 10, 80, 80); |
| context.stroke(); |
| context.save(); |
| var refImage = context.getImageData(0, 0, 100, 100); |
| |
| assert_equals(40000, refImage.data.length, "ImageData.data.length is 40000"); |
| |
| var original = document.getElementById('original'); |
| var o_context = original.getContext('2d'); |
| o_context.fillStyle = 'white'; |
| o_context.fillRect(0, 0, 100, 100); |
| o_context.putImageData(refImage, 0, 0, 0, 0, 100, 100); |
| |
| |
| |
| context.strokeStyle = 'blue'; |
| context.rect(5, 5, 90, 90); |
| context.drawFocusIfNeeded(element); |
| |
| var ringImage = context.getImageData(0, 0, 100, 100); |
| assert_equals(40000, ringImage.data.length, "ImageData.data.length is 40000"); |
| |
| // make sure refImage and ringImage are different |
| var length = 40000; |
| var index = length; |
| var identical = true; |
| while (--index > 0) { |
| if (refImage.data[index] != ringImage.data[index]) identical = false; |
| } |
| |
| assert_true(identical, "No focus ring appears in the canvas"); |
| |
| |
| }, 'drawFocusIfNeeded does not draw a focus ring if the element is not a descendant of the context.'); |
| </script> |
| <div id="log"></div> |
| </body> |
| </html> |