diff options
Diffstat (limited to 'testing/web-platform/tests/svg/interact/scripted/tabindex-focus-flag.svg')
-rw-r--r-- | testing/web-platform/tests/svg/interact/scripted/tabindex-focus-flag.svg | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/testing/web-platform/tests/svg/interact/scripted/tabindex-focus-flag.svg b/testing/web-platform/tests/svg/interact/scripted/tabindex-focus-flag.svg new file mode 100644 index 0000000000..29ba209b2b --- /dev/null +++ b/testing/web-platform/tests/svg/interact/scripted/tabindex-focus-flag.svg @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:h="http://www.w3.org/1999/xhtml"> + <metadata> + <h:link rel="help" href="https://svgwg.org/svg2-draft/interact.html#Focus"/> + </metadata> + <g id="default-samples"> + <!-- non-default focusable renderable element --> + <rect></rect> + <svg></svg> + <!-- for compatibility with SVG Tiny 1.2 focusable attribute, user agents should treat an element with a value of true for that attribute as focusable --> + <rect focusable="true"></rect> + <!-- anchors need a href to be focusable --> + <a></a> + <a href=""></a> + <!-- Remove default focus behaviour with focusable="false" (SVG Tiny 1.2 compatibility) --> + <a href="" focusable="false"></a> + <!-- iframe, and audio/video with controls are default focusable --> + <h:iframe src="resources/blank.htm"></h:iframe> + <h:audio controls="controls"></h:audio> + <h:video controls="controls"></h:video> + <!-- non-default focusable renderable element with valid tabindex --> + <h:canvas tabindex="0"></h:canvas> + <circle tabindex="0"></circle> + <ellipse tabindex="0"></ellipse> + <foreignObject tabindex="0"></foreignObject> + <g tabindex="0"></g> + <image tabindex="0"></image> + <line tabindex="0"></line> + <mesh tabindex="0"></mesh> + <path tabindex="0"></path> + <polygon tabindex="0"></polygon> + <rect tabindex="0"></rect> + <svg tabindex="0"></svg> + <switch tabindex="0"></switch> + <text tabindex="0"> + <textPath tabindex="0"></textPath> + <tspan tabindex="0"></tspan> + </text> + <unknown tabindex="0"></unknown> + <use tabindex="0"></use> + <!-- never-rendered element with valid tabindex --> + <clipPath tabindex="0"></clipPath> + <defs tabindex="0"></defs> + <desc tabindex="0"></desc> + <hatch tabindex="0"></hatch> + <linearGradient tabindex="0"></linearGradient> + <marker tabindex="0"></marker> + <mask tabindex="0"></mask> + <meshgradient tabindex="0"></meshgradient> + <metadata tabindex="0"></metadata> + <pattern tabindex="0"></pattern> + <radialGradient tabindex="0"></radialGradient> + <script tabindex="0"></script> + <style tabindex="0"></style> + <title tabindex="0"></title> + <symbol tabindex="0"></symbol> + </g> + <h:script src="/resources/testharness.js"/> + <h:script src="/resources/testharnessreport.js"/> + <script><![CDATA[ + var root = document.querySelector("svg"); + + test(() => { + root.focus(); + assert_equals(document.activeElement, root); + }, 'The document root element should be focusable.'); + + const defaultList = [ + ['rect', false], + ['svg', false], + ['rect[focusable=true]', true], + ['a', false], + ['a[href]', true], + ['a[focusable=false]', false], + ['iframe', true], + ['audio[controls]', true], + ['video[controls]', true], + ['canvas[tabindex]', true], + ['circle[tabindex]', true], + ['ellipse[tabindex]', true], + ['foreignObject[tabindex]', true], + ['g[tabindex]', true], + ['image[tabindex]', true], + ['line[tabindex]', true], + ['mesh[tabindex]', true], + ['path[tabindex]', true], + ['polygon[tabindex]', true], + ['rect[tabindex]', true], + ['svg[tabindex]', true], + ['switch[tabindex]', true], + ['text[tabindex]', true], + ['textPath[tabindex]', true], + ['tspan[tabindex]', true], + ['unknown[tabindex]', true], + ['use[tabindex]', true], + ['clipPath[tabindex]', false], + ['defs[tabindex]', false], + ['desc[tabindex]', false], + ['hatch[tabindex]', false], + ['linearGradient[tabindex]', false], + ['marker[tabindex]', false], + ['mask[tabindex]', false], + ['meshgradient[tabindex]', false], + ['metadata[tabindex]', false], + ['pattern[tabindex]', false], + ['radialGradient[tabindex]', false], + ['script[tabindex]', false], + ['style[tabindex]', false], + ['title[tabindex]', false], + ['symbol[tabindex]', false], + ]; + + for (entry of defaultList) { + test(() => { + var element = document.querySelector('#default-samples ' + entry[0]); + element.focus(); + if (entry[1]) + assert_equals(document.activeElement, element); + else + assert_not_equals(document.activeElement, element); + }, entry[0] + ' should ' + (entry[1] ? '' : 'not ') + 'be focusable.'); + } + ]]></script> +</svg>
\ No newline at end of file |