diff options
Diffstat (limited to 'docshell/test/test_bug529119-1.html')
-rw-r--r-- | docshell/test/test_bug529119-1.html | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/docshell/test/test_bug529119-1.html b/docshell/test/test_bug529119-1.html new file mode 100644 index 000000000..573885dc0 --- /dev/null +++ b/docshell/test/test_bug529119-1.html @@ -0,0 +1,95 @@ +<!DOCTYPE HTML> +<html> +<head> +<title>Test bug 529119</title> +<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> +<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> + +<script class="testbody" type="text/javascript"> + +SimpleTest.waitForExplicitFinish(); +SimpleTest.requestFlakyTimeout("untriaged"); + +var workingURL = "http://mochi.test:8888/tests/docshell/test/bug529119-window.html"; +var faultyURL = "http://some-nonexistent-domain-27489274c892748217cn2384.com/"; + +var w = null; +var phase = 0; +var gotWrongPageOnTryAgainClick = false; + +function pollForPage(f, w) +{ + // Start with polling after a delay, we might mistakenly take the current page + // as an expected one. + window.setTimeout(function() { + var iterationsLeft = 200; + var int = window.setInterval(function() { + iterationsLeft--; + + var haveErrorPage = false; + try { + var title = w.document.title; + } + catch (ex) { + haveErrorPage = true; + } + + if (iterationsLeft == 0 || haveErrorPage) { + window.clearInterval(int); + f(iterationsLeft > 0); + } + }, 100); + }, 1000); +} + +function windowLoaded() +{ + switch (phase) + { + case 0: + /* 2. We have succeededfully loaded a page, now go to a faulty URL */ + window.setTimeout(function() { + w.location.href = faultyURL; + }, 0); + + phase = 1; + + pollForPage(function(succeeded) { + ok(succeeded, "Waiting for error page succeeded"); + + /* 3. now, while we are on the error page, try to reload it, actually + click the "Try Again" button */ + SpecialPowers.wrap(w).location.reload(); + + pollForPage(function(succeeded) { + ok(succeeded, "Waiting for error page succeeded"); + + /* 4-finish, check we are still on the error page */ + is(SpecialPowers.wrap(w).location.href, faultyURL, "Is on an error page"); + isnot(SpecialPowers.wrap(w).location.href, workingURL, "Is not on the previous page"); + is(gotWrongPageOnTryAgainClick, false, + "Must not get www.example.com page on reload of an error page"); + w.close(); + SimpleTest.finish(); + }, w); + }, w); + break; + + case 1: + /* 4-check, we must not get here! */ + gotWrongPageOnTryAgainClick = true; + break; + } +} + +function startTest() +{ + /* 1. load a URL that leads to an error page */ + w = window.open(workingURL); +} + +</script> +</head> +<body onload="startTest();"> +</body> +</html> |