<!DOCTYPE html>
<html>
    <body>
        <script src="../../resources/js-test.js"></script>
        <script>
            description('This tests creating a disconnected SVG element with resize event handler. The event handler should not get dispatched unless the element is connected');
            const iframe = document.createElement('iframe');
            iframe.style.width = '100px';
            iframe.style.height = '100px';
            jsTestIsAsync = true;
            didFireResize = false;
            didFireOnError = false;
            iframe.onload = function() {
                iframe.contentWindow.requestAnimationFrame(() => {
                    const svg = iframe.contentDocument.createElementNS('http://www.w3.org/2000/svg', 'svg');
                    svg.setAttribute('onresize', 'top.didFireResize = true');
                    svg.setAttribute('onerror', 'top.didFireOnError = true');
                    iframe.style.width = '200px';
                    iframe.contentWindow.requestAnimationFrame(() => {
                        shouldBeFalse('didFireResize');
                        shouldBeFalse('didFireOnError');
                        finishJSTest();
                    });
                    try {
                        iframe.contentWindow.eval('throw "error"');
                    } catch (e) {
                        testPassed("Exception thrown");
                    }
                });
            };
            document.body.appendChild(iframe);
        </script>
    </body>
</html>
