<?xml version="1.0" encoding="iso-8859-5"?>
<?xml-stylesheet href="css-charset-inherit-iso-8859-5.css?1" type="text/css"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>CSS Default charset</title>
    <link rel="stylesheet" type="text/css" href="css-charset-inherit-iso-8859-5.css?2"/>
    <link rel="stylesheet" type="text/css" href="css-charset-import.css"/>
    <style type="text/css">
        @import "css-charset-inherit-iso-8859-5.css?4";
    </style>
</head>
<body onload="test()">
<p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=11011">bug 11011</a>:
External CSS is parsed as iso-8859-1 even though the main document is utf-8.</p>

<p id="res1">Stylesheet 1 (inherit document charset using xml-stylesheet processing instruction): </p>
<p id="res2">Stylesheet 2 (inherit document charset using link): </p>
<p id="res3">Stylesheet 3 (inherit referring stylesheet charset): </p>
<p id="res4">Stylesheet 4 (inherit referring inline stylesheet charset): </p>

<script type="text/javascript">
if (window.testRunner)
    testRunner.dumpAsText();

function test() {
  try {
    document.getElementById("res1").innerHTML += document.styleSheets[0].cssRules[0].style.content;

    document.getElementById("res2").innerHTML += document.styleSheets[1].cssRules[0].style.content;
    
    document.getElementById("res3").innerHTML += document.styleSheets[2].cssRules[0].styleSheet.cssRules[0].style.content;

    document.getElementById("res4").innerHTML += document.styleSheets[3].cssRules[0].styleSheet.cssRules[0].style.content;
  } catch (ex) {
    alert(ex.toString());
  }
}
</script>

</body>
</html>
