<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<script>
jsTestIsAsync = true;

if (window.testRunner)
    window.testRunner.keepWebHistory();

function compareStyles()
{
    if (window.internals) {
        firstStyle = internals.computedStyleIncludingVisitedInfo(document.getElementById('one'));
        secondStyle = internals.computedStyleIncludingVisitedInfo(document.getElementById('two'));
        shouldBecomeDifferent('firstStyle.color', 'secondStyle.color', finishJSTest);
    }
}
</script>
<style>
:link { color: orange }
:visited + :link { color: green }
:visited { color: green }
</style>
</head>
<body onload="compareStyles()">
<iframe src="resources/dummy.html" style="display:none"></iframe>

<p>These two links should be different colors (green and orange):</p>
<p style="color:green">
<a href="resources/dummy.html" id="one">One</a>
<a href="http://madeup.site.com" id="two">Two</a>
</p>
<div id=console></div>
</body>
<script src="../../resources/js-test-post.js"></script>
</html>
