test_bug1743353.html (1680B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Test back/forward after pushState</title> 6 <script src="/tests/SimpleTest/SimpleTest.js"></script> 7 <link rel="stylesheet" href="/tests/SimpleTest/test.css"/> 8 <script> 9 SimpleTest.waitForExplicitFinish(); 10 11 async function runTest() { 12 let bc = SpecialPowers.wrap(BroadcastChannel).unpartitionedTestingChannel("bug1743353"); 13 new Promise((resolve) => { 14 bc.addEventListener("message", () => { 15 resolve(); 16 }, { once: true }); 17 18 window.open("file_bug1743353.html", "", "noopener"); 19 }).then(() => { 20 return new Promise(resolve => { 21 bc.addEventListener("message", () => { 22 resolve(); 23 }, { once: true }); 24 25 bc.postMessage("load"); 26 }) 27 }).then(() => { 28 return new Promise(resolve => { 29 let results = []; 30 bc.addEventListener("message", function listener({ data }) { 31 results.push(data); 32 if (results.length == 3) { 33 bc.removeEventListener("message", listener); 34 resolve(results); 35 } 36 }); 37 38 bc.postMessage("back"); 39 }); 40 }).then((results) => { 41 is(results[0], "pagehide", "First event should be 'pagehide'."); 42 is(results[1], "unload", "Second event should be 'unload'."); 43 is(results[2], "pageshow", "Third event should be 'pageshow'."); 44 45 bc.postMessage("close"); 46 47 SimpleTest.finish(); 48 }); 49 } 50 </script> 51 </head> 52 <body onload="runTest();"> 53 <p id="display"></p> 54 <div id="content" style="display: none"></div> 55 <pre id="test"></pre> 56 </body> 57 </html>