<html>
    <body onload="runTest();">
        Test passes if it does not crash.
        <script>
            if (window.testRunner)
            {
                testRunner.dumpAsText();
                testRunner.waitUntilDone();
            }

            function runTest() {
                node = document.createElement('audio');
                node.setAttribute('src', 'foo');
                node.setAttribute('controls', 'foo');
                node.style.fontWeight = '100';
                var clone = node.cloneNode(false);
                clone.load();
 
                if (window.testRunner)
                    setTimeout("testRunner.notifyDone()", 0);
            }
        </script>
    </body>
</html>

