<html>
<head>
<script>
function log(str)
{
    var li = document.createElement("li");
    li.appendChild(document.createTextNode(str));
    var console = document.getElementById("console");
    console.appendChild(li);
}

function assertEqual(message, actual, expected)
{
    if (actual != expected)
        log("\n" + message + ": Failure, actual: " + actual + "; expected: " + expected);
    else
        log("\n" + message + ": Success");
}

onload = function()
{
    if (window.testRunner)                    
        testRunner.dumpAsText();

    assertEqual("original scroll y for RTL page ", window.scrollY, 0);
    window.scrollTo(0, -100);
    assertEqual("vertical scroll y for RTL page ", window.scrollY, -100);

    document.body.dir = "ltr";
    assertEqual("original scroll y for LTR page ", window.scrollY, 0);
    window.scrollTo(0, 100);
    assertEqual("vertical scroll y for LTR page ", window.scrollY, 100);

    document.getElementById("div").style.display = "none";
}
</script>
</head>
<body dir="rtl" style="-webkit-writing-mode:vertical-lr">

<div style="height: 4000px; border: 1px solid red;" id="div">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc et nisl tellus. Vivamus aliquam elit non arcu scelerisque eget dapibus nunc vulputate. Maecenas scelerisque egestas purus, id bibendum magna venenatis vel. Vestibulum bibendum volutpat aliquam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum eget risus sodales mi tristique dignissim et sed lectus. Cras convallis, nibh ut dapibus gravida, enim mauris molestie elit, eget fringilla augue est nec est. Curabitur eu quam non purus sodales pulvinar. Donec ultrices dui eget dolor lobortis in porta quam rutrum. Nulla risus lacus, adipiscing quis ullamcorper vestibulum, condimentum sed lacus. Sed in nunc dolor, quis egestas turpis. Integer arcu tellus, posuere sit amet pellentesque a, molestie at mi. Nulla blandit, mi et euismod imperdiet, augue arcu ornare felis, nec viverra lacus ligula ut metus. Proin ut leo ante, at consectetur sem. Nullam non nunc ligula. Proin sed ante sem, id rutrum purus.
</div>
<ul id="console"></ul>
<br>
</body>
</html>
