зеркало из https://github.com/mozilla/gecko-dev.git
92 строки
2.6 KiB
JavaScript
92 строки
2.6 KiB
JavaScript
/**
|
|
* 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],
|
|
// If Fission is disabled, the pref is no-op.
|
|
["fission.bfcacheInParent", true],
|
|
],
|
|
});
|
|
|
|
await BrowserTestUtils.withNewTab(
|
|
{ gBrowser, url: "data:text/html;charset=utf-8,pageA1" },
|
|
async function(browser) {
|
|
// Make a simple modification for bfcache testing.
|
|
await SpecialPowers.spawn(browser, [], () => {
|
|
content.document.body.textContent = "modified";
|
|
});
|
|
|
|
// Load a random page.
|
|
BrowserTestUtils.loadURIString(
|
|
browser,
|
|
"data:text/html;charset=utf-8,pageA2"
|
|
);
|
|
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],
|
|
// If Fission is disabled, the pref is no-op.
|
|
["fission.bfcacheInParent", true],
|
|
],
|
|
});
|
|
|
|
await BrowserTestUtils.withNewTab(
|
|
{ gBrowser, url: "data:text/html;charset=utf-8,pageB1" },
|
|
async function(browser) {
|
|
// Make a simple modification for bfcache testing.
|
|
await SpecialPowers.spawn(browser, [], () => {
|
|
content.document.body.textContent = "modified";
|
|
});
|
|
|
|
// Load a random page.
|
|
BrowserTestUtils.loadURIString(
|
|
browser,
|
|
"data:text/html;charset=utf-8,pageB2"
|
|
);
|
|
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, 5000);
|
|
});
|
|
});
|
|
|
|
// 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, "pageB1");
|
|
});
|
|
}
|
|
);
|
|
});
|