Bug 1386391 - Poll to check if a document has loaded rather than a definite timeout. draft
authorHenry Chang <hchang@mozilla.com>
Mon, 14 Aug 2017 10:34:04 +0800
changeset 645703 4b7a97f526db6c38519053ee232417c69879b0fb
parent 644465 253a8560dc34456d2e8a13065e4b3eb5ecf6704f
child 725974 2ffe529b682f62c63c85cdda91be21ff0e8d22b5
push id73835
push userhchang@mozilla.com
push dateMon, 14 Aug 2017 02:52:31 +0000
bugs1386391
milestone57.0a1
Bug 1386391 - Poll to check if a document has loaded rather than a definite timeout. MozReview-Commit-ID: B293QZe3LIz
docshell/test/navigation/file_fragment_handling_during_load.html
--- a/docshell/test/navigation/file_fragment_handling_during_load.html
+++ b/docshell/test/navigation/file_fragment_handling_during_load.html
@@ -1,25 +1,27 @@
 <html>
   <head>
     <script>
-      var timerID = 0;
-      function testDone() {
-        clearTimeout(timerID);
-        var l = document.body.firstChild.contentWindow.location.href;
-        opener.ok(l.endsWith("file_fragment_handling_during_load_frame2.html"),
-                 "Should have loaded a new document");
+      function checkHaveLoadedNewDoc() {
+        let l = document.body.firstChild.contentWindow.location.href;
+        if (!l.endsWith("file_fragment_handling_during_load_frame2.html")) {
+          opener.ok(true, "Fine. We will check later.");
+          setTimeout(checkHaveLoadedNewDoc, 500);
+          return;
+        }
+        opener.ok(true, "Have loaded a new document.");
         opener.nextTest();
         window.close();
       }
       function test() {
         var ifr = document.getElementsByTagName("iframe")[0];
-        ifr.onload = testDone;
+        ifr.onload = checkHaveLoadedNewDoc;
         ifr.contentWindow.location.hash = "b";
         ifr.contentWindow.location.href = "file_fragment_handling_during_load_frame2.html";
         history.back();
-        timerID = setTimeout(testDone, 2000);
+        checkHaveLoadedNewDoc();
       }
     </script>
   </head>
   <body onload="setTimeout(test, 0)"><iframe src="file_fragment_handling_during_load_frame1.html#a"></iframe>
   </body>
 </html>