Bug 1347823 - Part 3: Add a test case. r=smaug

MozReview-Commit-ID: 9zwD0m1tknN

--HG--
extra : rebase_source : e98798b8d224596468c096ef8b69c7c67e6241ac
This commit is contained in:
Samael Wang 2017-04-28 17:01:48 +08:00
parent ada8242de0
commit d158894b17
2 changed files with 68 additions and 0 deletions

View File

@ -49,6 +49,7 @@ support-files =
[browser_bug1206879.js]
[browser_bug1309900_crossProcessHistoryNavigation.js]
[browser_bug1347823.js]
[browser_bug134911.js]
[browser_bug234628-1.js]
[browser_bug234628-10.js]

View File

@ -0,0 +1,67 @@
/**
* 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 ContentTask.spawn(browser, null, () => {
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 ContentTask.spawn(browser, null, () => {
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 ContentTask.spawn(browser, null, () => {
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 new Promise(resolve => {
setTimeout(resolve, 3000);
});
// Go back and verify text content.
let awaitPageShow = BrowserTestUtils.waitForContentEvent(browser, "pageshow");
browser.goBack();
await awaitPageShow;
await ContentTask.spawn(browser, null, () => {
is(content.document.body.textContent, "page1");
});
});
});