forked from mirrors/gecko-dev
		
	 39c56ee58a
			
		
	
	
		39c56ee58a
		
	
	
	
	
		
			
			Depends on D109312 Differential Revision: https://phabricator.services.mozilla.com/D109313
		
			
				
	
	
		
			85 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
	
		
			2.5 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.loadURI(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.loadURI(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");
 | |
|       });
 | |
|     }
 | |
|   );
 | |
| });
 |