<!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>