/** * Test that session history's expiration tracker would remove bfcache on * expiration. */ // With bfcache not expired. add_task(async function testValidCache() { // Make an unrealistic large timeout. await SpecialPowers.pushPrefEnv({ set: [["browser.sessionhistory.contentViewerTimeout", 86400]], }); await BrowserTestUtils.withNewTab( { gBrowser, url: "data:text/html;charset=utf-8,page1" }, async function(browser) { // Make a simple modification for bfcache testing. await SpecialPowers.spawn(browser, [], () => { content.document.body.textContent = "modified"; }); // Load a random page. BrowserTestUtils.loadURI(browser, "data:text/html;charset=utf-8,page2"); await BrowserTestUtils.browserLoaded(browser); // Go back and verify text content. let awaitPageShow = BrowserTestUtils.waitForContentEvent( browser, "pageshow" ); browser.goBack(); await awaitPageShow; await SpecialPowers.spawn(browser, [], () => { is(content.document.body.textContent, "modified"); }); } ); }); // With bfcache expired. add_task(async function testExpiredCache() { // Make bfcache timeout in 1 sec. await SpecialPowers.pushPrefEnv({ set: [["browser.sessionhistory.contentViewerTimeout", 1]], }); await BrowserTestUtils.withNewTab( { gBrowser, url: "data:text/html;charset=utf-8,page1" }, async function(browser) { // Make a simple modification for bfcache testing. await SpecialPowers.spawn(browser, [], () => { content.document.body.textContent = "modified"; }); // Load a random page. BrowserTestUtils.loadURI(browser, "data:text/html;charset=utf-8,page2"); await BrowserTestUtils.browserLoaded(browser); // Wait for 3 times of expiration timeout, hopefully it's evicted... await SpecialPowers.spawn(browser, [], () => { return new Promise(resolve => { content.setTimeout(resolve, 3000); }); }); // Go back and verify text content. let awaitPageShow = BrowserTestUtils.waitForContentEvent( browser, "pageshow" ); browser.goBack(); await awaitPageShow; await SpecialPowers.spawn(browser, [], () => { is(content.document.body.textContent, "page1"); }); } ); });