<!DOCTYPE html>
<html>
<head>
<title>page title</title>
</head>
<body onload="runTest()">
<iframe id=iframe></iframe>
<script>
function runTest() {
    var iframe = document.getElementById('iframe');

    function assertDirection(label, expectedDirection, html)
    {
        var doc = iframe.contentDocument;
        doc.open();
        doc.write(html);
        doc.close();

        var dir = window.testRunner ?
            testRunner.titleTextDirection
          : 'testRunner unavailable';
        var status = html + ' should have title direction "' + expectedDirection + '". ';
        if (dir == expectedDirection) {
            status += 'PASS';
        } else {
            status += 'FAIL (got: "' + dir + '")';
        }
        var div = document.createElement('div');
        div.innerText = status;
        document.body.appendChild(div);
    }

    if (window.testRunner)
        testRunner.dumpAsText();

    assertDirection('normal doc', 'ltr',
                    '<html><title>foo</title></html>');
    assertDirection('title dir=rtl', 'rtl',
                    '<html><title dir=rtl>foo</title></html>');
    assertDirection('html dir=rtl', 'rtl',
                    '<html dir=rtl><title>foo</title></html>');
    assertDirection('html dir=rtl, title dir=ltr', 'ltr',
                    '<html dir=rtl><title dir=ltr>foo</title></html>');
}
</script>
</body>
</html>
