|
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 |
});
|