diff options
Diffstat (limited to 'dom/html/test/test_bug481335.xhtml')
-rw-r--r-- | dom/html/test/test_bug481335.xhtml | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/dom/html/test/test_bug481335.xhtml b/dom/html/test/test_bug481335.xhtml new file mode 100644 index 000000000..f8a51df69 --- /dev/null +++ b/dom/html/test/test_bug481335.xhtml @@ -0,0 +1,120 @@ +<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 type="application/javascript" 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> +</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" xml:base="http://www.example.com/"></p> +<div id="content" style="display: none"></div> +<pre id="test"> +<script type="application/javascript;version=1.7"> +<![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, + window.location.href.replace(/test_bug481335.xhtml([\?].*)?/, rand), + "Unexpected href after set"); +is($("t").href, + window.location.href.replace(/test_bug481335.xhtml([\?].*)?/, 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) { + setTimeout(continueTest, 0); + return false; + } + is(getColor(), aExpectedColor, aMessage); + return true; +} + +function testIterator() { + // After first load + $("newparent").appendChild($("t")); + is($("t").href, "http://www.example.com/" + rand, + "Unexpected href after move"); + is($("t").href, "http://www.example.com/" + rand, + "Unexpected cached href after move"); + while (!checkLinkColor("t", unvisitedColor, "Should be unvisited now")) + yield undefined; + + $("i").src = $("t").href; + yield undefined; + + // 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; + } + */ + + $("i").src = $("t").href; + yield undefined; + + // After third load + while (!checkLinkColor("t", visitedColor, + "Should be visited now after third load")) { + yield undefined; + } + SimpleTest.finish(); + yield undefined; +} + +addLoadEvent(function() { + $("i").onload = continueTest; + $("i").src = $("t").href; +}); +]]> +</script> +</pre> +</body> +</html> |