navigate.window.js (1936B)
1 async_test(t => { 2 var loadCount = 0; 3 var expectedReferrer = location.href; 4 const frame = document.createElement("iframe"); 5 var originalPath = "resources/refresh.py"; 6 frame.src = originalPath; 7 frame.onload = t.step_func(() => { 8 loadCount++; 9 if (loadCount === 1) { 10 assert_equals(frame.contentWindow.location.href, new URL(originalPath, self.location).href, "original page loads"); 11 assert_equals(frame.contentDocument.referrer, expectedReferrer, "referrer is parent frame"); 12 expectedReferrer = frame.src; 13 } else if (loadCount === 2) { 14 assert_equals(frame.contentWindow.location.href, 15 new URL("resources/refreshed.txt?\u0080\u00FF", self.location).href, "bytes got mapped to code points of the same value"); 16 assert_equals(frame.contentDocument.referrer, expectedReferrer, "referrer is previous page"); 17 t.done(); 18 } 19 }); 20 document.body.appendChild(frame) 21 }, "When navigating the Refresh header needs to be followed"); 22 23 async_test(t => { 24 var loadCount = 0; 25 var expectedReferrer = location.href; 26 const frame = document.createElement("iframe"); 27 var originalPath = "resources/multiple.asis"; 28 frame.src = originalPath 29 frame.onload = t.step_func(() => { 30 loadCount++; 31 if (loadCount === 1) { 32 assert_equals(frame.contentWindow.location.href, new URL(originalPath, self.location).href, "original page loads"); 33 assert_equals(frame.contentDocument.referrer, expectedReferrer, "referrer is parent frame"); 34 expectedReferrer = frame.src; 35 } else if (loadCount === 2) { 36 assert_equals(frame.contentWindow.location.href, new URL("resources/refreshed.txt", self.location).href, "refresh page loads"); 37 assert_equals(frame.contentDocument.referrer, expectedReferrer, "referrer is previous page"); 38 t.done(); 39 } 40 }); 41 document.body.appendChild(frame) 42 }, "When there's both a Refresh header and <meta> the Refresh header wins")