Blame docshell/test/browser/browser_bug1347823.js

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