<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=147777 --> <head> <title>Test for Bug 147777</title> <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <script type="application/javascript" src="/tests/SimpleTest/WindowSnapshot.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> </head> <body> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=147777">Mozilla Bug 147777</a> <iframe id="iframe" src="visited-lying-inner.html" style="width: 20em; height: 5em"></iframe> <pre id="test"> <script type="application/javascript"> /** Test for Bug 147777 **/ SimpleTest.waitForExplicitFinish(); SimpleTest.requestFlakyTimeout("untriaged"); window.addEventListener("load", start, false); var iframe; var visitedlink, unvisitedlink; var snapshot1; function start() { // Our load event has fired, so we know our iframe is loaded. iframe = document.getElementById("iframe"); visitedlink = iframe.contentDocument.getElementById("visitedlink"); unvisitedlink = iframe.contentDocument.getElementById("unvisitedlink"); // First, take a snapshot of it with both links unvisited. snapshot1 = snapshotWindow(iframe.contentWindow, false); // Then, change one of the links in the iframe to being visited. visitedlink.href = window.location; // Then, start polling to see when the history has updated the display. setTimeout(poll_for_restyle, 100); } function poll_for_restyle() { var snapshot2 = snapshotWindow(iframe.contentWindow, false); var equal = compareSnapshots(snapshot1, snapshot2, true)[0]; if (equal) { // keep polling setTimeout(poll_for_restyle, 100); } else { // We now know that the link is visited, so we're ready to run // tests. run_tests(); } } function run_tests() { // Test querySelector and querySelectorAll. var subdoc = iframe.contentDocument; is(subdoc.querySelector(":link"), unvisitedlink, "first :link should be the unvisited link"); is(subdoc.querySelector(":visited"), null, "querySelector should not find anything :visited"); var qsr = subdoc.querySelectorAll(":link"); is(qsr.length, 2, "querySelectorAll(:link) should find 2 results"); is(qsr[0], unvisitedlink, "querySelectorAll(:link)[0]"); is(qsr[1], visitedlink, "querySelectorAll(:link)[1]"); qsr = subdoc.querySelectorAll(":visited"); is(qsr.length, 0, "querySelectorAll(:visited) should find 0 results"); // Test getComputedStyle. var subwin = iframe.contentWindow; is(subwin.getComputedStyle(unvisitedlink, "").color, "rgb(0, 0, 255)", "getComputedStyle on unvisited link should report color is blue"); is(subwin.getComputedStyle(visitedlink, "").color, "rgb(0, 0, 255)", "getComputedStyle on visited link should report color is blue"); // Test matches. is(unvisitedlink.matches(":link"), true, "unvisited link matches :link"); is(visitedlink.matches(":link"), true, "visited link matches :link"); is(unvisitedlink.matches(":visited"), false, "unvisited link does not match :visited"); is(visitedlink.matches(":visited"), false, "visited link does not match :visited"); SimpleTest.finish(); } </script> </pre> </body> </html>