<!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>