<html>
<head>
<script>
// Uncomment to make this an automated test
//if (window.layoutTestController) {
//    layoutTestController.waitUntilDone();
//    layoutTestController.keepWebHistory();
//}
function runTest() {
// Uncomment to make this an automated test
//    // Uses window.history hack; see http://bugs.webkit.org/show_bug.cgi?id=7135
//    if (!window.history[99999]) {
//        var element = document.getElementById("mylink");
//        var event = document.createEvent("MouseEvent");
//        event.initEvent("click", true, true);
//        element.dispatchEvent(event);
//    }
//    else {
//        if (window.layoutTestController) {
//            layoutTestController.notifyDone();
//        }
//    }
}
</script>
</head>
<body onload="runTest();">
<div><a href="http://bugs.webkit.org/show_bug.cgi?id=8079">Bug 8079 REGRESSION: Redraw from page cache does not show visited links</a></div>
<ol>
<li>The link in Step 2 should be rendered in an unvisited link color first.
<li><a id="mylink" href="./resources/redraw-page-cache-visited-links-2.html">Click This Link Once</a><br><br>
<li value="4">The test passes if the link in Step 2 is rendered in a visited link color after the click.
</ol>
</body>
</html>
