diff options
Diffstat (limited to 'dom/html/test/test_bug481335.xhtml')
-rw-r--r-- | dom/html/test/test_bug481335.xhtml | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/dom/html/test/test_bug481335.xhtml b/dom/html/test/test_bug481335.xhtml new file mode 100644 index 0000000000..8fdd145222 --- /dev/null +++ b/dom/html/test/test_bug481335.xhtml @@ -0,0 +1,122 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=481335 +--> +<head> + <title>Test for Bug 481335</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> + <style type="text/css"> + a { color:blue; } + a:visited { color:red; } + </style> + <base href="https://example.com/" /> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=481335">Mozilla Bug 481335</a> +<p id="display"> + <a id="t">A link</a> + <iframe id="i"></iframe> +</p> +<p id="newparent"></p> +<div id="content" style="display: none"></div> +<pre id="test"> +<script type="application/javascript"> +<![CDATA[ + +/** Test for Bug 481335 **/ +SimpleTest.waitForExplicitFinish(); +var rand = Date.now() + "-" + Math.random(); + +is($("t").href, "", + "Unexpected href before set"); +is($("t").href, "", + "Unexpected cached href before set"); + +$("t").setAttribute("href", rand); +is($("t").href, "https://example.com/" + rand, + "Unexpected href after set"); +is($("t").href, "https://example.com/" + rand, + "Unexpected cached href after set"); +const unvisitedColor = "rgb(0, 0, 255)"; +const visitedColor = "rgb(255, 0, 0)"; + +let tests = testIterator(); +function continueTest() { + tests.next(); +} + +function checkLinkColor(aElmId, aExpectedColor, aMessage) { + // Because link coloring is asynchronous, we wait until we get the right + // result, or we will time out (resulting in a failure). + function getColor() { + var utils = SpecialPowers.getDOMWindowUtils(window); + return utils.getVisitedDependentComputedStyle($(aElmId), "", "color"); + } + while (getColor() != aExpectedColor) { + requestIdleCallback(continueTest); + return false; + } + is(getColor(), aExpectedColor, aMessage); + return true; +} + +let win; + +function* testIterator() { + // After first load + $("newparent").appendChild($("t")); + is($("t").href, "https://example.com/" + rand, + "Unexpected href after move"); + is($("t").href, "https://example.com/" + rand, + "Unexpected cached href after move"); + while (!checkLinkColor("t", unvisitedColor, "Should be unvisited now")) + yield undefined; + + win.close(); + win = window.open($("t").href, "_blank"); + + // After second load + while (!checkLinkColor("t", visitedColor, "Should be visited now")) + yield undefined; + $("t").pathname = rand; + while (!checkLinkColor("t", visitedColor, + "Should still be visited after setting pathname to its existing value")) { + yield undefined; + } + + /* TODO uncomment this test with the landing of bug 534526. See + * https://bugzilla.mozilla.org/show_bug.cgi?id=461199#c167 + $("t").pathname += "x"; + while (!checkLinkColor("t", unvisitedColor, + "Should not be visited after changing pathname")) { + yield undefined; + } + $("t").pathname = $("t").pathname; + while (!checkLinkColor("t", unvisitedColor, + "Should not be visited after setting unvisited pathname to existing value")) { + yield undefined; + } + */ + + win.close(); + win = window.open($("t").href, "_blank"); + + // After third load + while (!checkLinkColor("t", visitedColor, + "Should be visited now after third load")) { + yield undefined; + } + win.close(); + SimpleTest.finish(); +} + +addLoadEvent(function() { + win = window.open($("t").href, "_blank"); + requestIdleCallback(continueTest); +}); +]]> +</script> +</pre> +</body> +</html> |