<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg"
     xmlns:h="http://www.w3.org/1999/xhtml">
    <title>Focus management</title>
    <metadata>
        <h:link rel="help" href="https://svgwg.org/svg2-draft/interact.html#Focus"/>
    </metadata>
    <a id="a1" href="#"></a>
    <a id="a2" href="#"></a>
    <h:script src="/resources/testharness.js"/>
    <h:script src="/resources/testharnessreport.js"/>
    <script><![CDATA[
    var a1 = document.getElementById('a1'),
    a2 = document.getElementById('a2'),
    t1 = async_test("focusing on a focusable element fires a focus event at the element"),
    t2 = async_test("focusing on a focusable element fires a blur event at the previous focussed element");

    a2.onfocus = t1.step_func_done(function(e){
        assert_true(e.isTrusted, "focus event is trusted");
        assert_false(e.bubbles, "focus event doesn't bubble");
        assert_false(e.cancelable, "focus event is not cancelable");
        assert_equals(document.activeElement, a2);
    });

    a1.onblur = t2.step_func_done(function(e){
        assert_true(e.isTrusted, "blur event is trusted");
        assert_false(e.bubbles, "blur event doesn't bubble");
        assert_false(e.cancelable, "blur event is not cancelable");
    });

    a1.focus();
    a2.focus();
    ]]></script>
</svg>