<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg" onload="runTest()">

<script>
<![CDATA[
    function log(string) {
      var newDiv = document.createElementNS("http://www.w3.org/1999/xhtml", "div");
      newDiv.textContent = string;
      document.getElementById('log').appendChild(newDiv);
    }
    function runTest()
    {
        var rect = document.rootElement.lastChild.previousSibling;
        if (rect.getPresentationAttribute('fill') == null) {
            log("Failed getting the fill PA");
            return;
        }
        if (rect.getPresentationAttribute('color') != null) {
            log("There should be no color PA");
            return;
        }
        if (rect.getPresentationAttribute('border-top') != null) {
            log("There should be no border-top PA");
            return;
        }
        var fill = rect.getPresentationAttribute('fill');
        fill.setRGBColor("green");
    }
    ]]>
</script>
This test tests that getPresentationAttribute succefully returns SVG presentation attributes, but not ones that are defined in the inline style and not non SVG css properties like border.
See <a href="http://bugs.webkit.org/show_bug.cgi?id=13976">Bug 13976</a>.
<foreignObject>
    <html xmlns="http://www.w3.org/1999/xhtml">
        <div id="log">
This test tests that getPresentationAttribute succesfully returns SVG presentation attributes, but not ones that are defined in the inline style and not non SVG css properties like border.
See <a href="http://bugs.webkit.org/show_bug.cgi?id=13976">Bug 13976</a>.
        </div>
    </html>
</foreignObject>

    <rect x="10" y="50" width="100" height="100" fill="red" style="color:yellow" border-top="10"/>
</svg>
