<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<script src="../../http/tests/inspector/inspector-test.js"></script>
<script src="../../http/tests/inspector/elements-test.js"></script>
<script>

function test()
{
    InspectorTest.selectNodeAndWaitForStyles("main", step1);

    function step1()
    {
        InspectorTest.addResult("Main style:");
        InspectorTest.dumpSelectedElementStyles(true, false, true);
        InspectorTest.completeTest();
    }
}
</script>
</head>

<body onload="runTest()">
<p>
Tests that svg:style does not crash when the related element is inspected.
</p>

<svg:svg xmlns:svg="http://www.w3.org/2000/svg" version="1.1">
   <svg:defs>
      <svg:style type="text/css">
         rect {fill: red}
      </svg:style>
   </svg:defs>
   <svg:rect id="main" width="100" height="100"/>
</svg:svg>
</body>
</html>
