async_test(t => { const iframe = document.body.appendChild(document.createElement("iframe")); t.add_cleanup(() => iframe.remove()); iframe.src = "/common/blank.html"; iframe.onload = t.step_func_done(() => { const win = iframe.contentWindow; const doc = iframe.contentDocument; assert_equals(win.history.state, null); win.history.replaceState("state", ""); assert_equals(win.history.state, "state"); assert_equals(doc.open(), doc); assert_equals(win.history.state, "state"); }); }, "history.state is kept by document.open()"); async_test(t => { const iframe = document.body.appendChild(document.createElement("iframe")); t.add_cleanup(() => iframe.remove()); iframe.src = "/common/blank.html"; iframe.onload = t.step_func_done(() => { const win = iframe.contentWindow; const doc = iframe.contentDocument; assert_equals(win.history.state, null); win.history.replaceState("state", ""); assert_equals(win.history.state, "state"); assert_equals(doc.open("", "replace"), doc); assert_equals(win.history.state, "state"); }); }, "history.state is kept by document.open() (with historical replace parameter set)");